From ffe942d415a8d68afd39261511ea908a1054e1fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20de=20Talhou=C3=ABt?= Date: Thu, 9 Apr 2015 11:16:13 -0400 Subject: [PATCH] Add JUnit testing for NetworkHandler class. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Change-Id: Ib1091ee8bad8bd1151bdbf985435e23421357e34 Signed-off-by: Alexis de Talhouët --- .../openstack/netvirt/NetworkHandlerTest.java | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandlerTest.java diff --git a/openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandlerTest.java b/openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandlerTest.java new file mode 100644 index 000000000..8d97e8607 --- /dev/null +++ b/openstack/net-virt/src/test/java/org/opendaylight/ovsdb/openstack/netvirt/NetworkHandlerTest.java @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2015 Inocybe and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.ovsdb.openstack.netvirt; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.same; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.net.HttpURLConnection; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +import org.opendaylight.neutron.spi.INeutronNetworkCRUD; +import org.opendaylight.neutron.spi.NeutronNetwork; +import org.opendaylight.ovsdb.lib.notation.Column; +import org.opendaylight.ovsdb.lib.notation.Row; +import org.opendaylight.ovsdb.lib.notation.UUID; +import org.opendaylight.ovsdb.lib.schema.GenericTableSchema; +import org.opendaylight.ovsdb.openstack.netvirt.api.Action; +import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager; +import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager; +import org.opendaylight.ovsdb.openstack.netvirt.impl.NeutronL3Adapter; +import org.opendaylight.ovsdb.plugin.api.OvsdbConfigurationService; +import org.opendaylight.ovsdb.plugin.api.OvsdbConnectionService; +import org.opendaylight.ovsdb.schema.openvswitch.Interface; +import org.opendaylight.ovsdb.schema.openvswitch.Port; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; + +/** + * Unit test for {@link NetworkHandler} + */ +@RunWith(MockitoJUnitRunner.class) +public class NetworkHandlerTest { + + @InjectMocks NetworkHandler networkHandler; + + @Mock NeutronNetwork neutronNetwork; + + @Mock private NeutronL3Adapter neutronL3Adapter; + @Mock private TenantNetworkManager tenantNetworkManager; + @Mock private INeutronNetworkCRUD neutronNetworkCache; + @Mock private OvsdbConnectionService connectionService; + @Mock private BridgeConfigurationManager bridgeConfigurationManager; + @Mock private OvsdbConfigurationService ovsdbConfigurationService; + + /** + * Test method {@link NetworkHandler#canCreateNetwork(NeutronNetwork)} + */ + @Test + public void testCanCreateNetwork() { + when(neutronNetwork.isShared()) + .thenReturn(true) + .thenReturn(false); + assertEquals("Error, did not return the correct HTTP flag", HttpURLConnection.HTTP_NOT_ACCEPTABLE, networkHandler.canCreateNetwork(neutronNetwork)); + assertEquals("Error, did not return the correct HTTP flag", HttpURLConnection.HTTP_CREATED, networkHandler.canCreateNetwork(neutronNetwork)); + } + + /** + * Test method {@link NetworkHandler#canUpdateNetwork(NeutronNetwork, NeutronNetwork)} + */ + @Test + public void testCanUpdateNetwork() { + assertEquals("Error, did not return the correct HTTP flag", HttpURLConnection.HTTP_OK, networkHandler.canUpdateNetwork(neutronNetwork, neutronNetwork)); + } + + /** + * Test method {@link NetworkHandler#canDeleteNetwork(NeutronNetwork)} + */ + @Test + public void testCanDeleteNetwork() { + assertEquals("Error, did not return the correct HTTP flag", HttpURLConnection.HTTP_OK, networkHandler.canDeleteNetwork(neutronNetwork)); + } + + /** + * Test method {@link NetworkHandler#processEvent(AbstractEvent)} + */ + @Test + public void testProcessEvent() { + NetworkHandler networkHandlerSpy = Mockito.spy(networkHandler); + + NorthboundEvent ev = mock(NorthboundEvent.class); + when(ev.getNeutronNetwork()).thenReturn(neutronNetwork); + + when(ev.getAction()).thenReturn(Action.ADD); + networkHandlerSpy.processEvent(ev); + verify(neutronL3Adapter, times(1)).handleNeutronNetworkEvent(any(NeutronNetwork.class), same(Action.ADD)); + + when(ev.getAction()).thenReturn(Action.UPDATE); + networkHandlerSpy.processEvent(ev); + verify(neutronL3Adapter, times(1)).handleNeutronNetworkEvent(any(NeutronNetwork.class), same(Action.UPDATE)); + + /* configuration needed to pass doNeutronNetworkDeleted() function*/ + Node node = mock(Node.class); + List nodes = new ArrayList(); + nodes.add(node); + when(connectionService.getNodes()).thenReturn(nodes); + + ConcurrentMap ports = new ConcurrentHashMap<>(); + Row row = mock(Row.class); + ports.put("key", row); + when(ovsdbConfigurationService.getRows(any(Node.class), anyString())).thenReturn(ports); + + Port port = mock(Port.class); + Column> portColumns = mock(Column.class); + Set interfaceUUIDs = new HashSet(); + UUID uuid = mock(UUID.class); + interfaceUUIDs.add(uuid); + when(port.getInterfacesColumn()).thenReturn(portColumns); + when(portColumns.getData()).thenReturn(interfaceUUIDs); + when(ovsdbConfigurationService.getTypedRow(any(Node.class), same(Port.class), any(Row.class))).thenReturn(port); + + Interface iface = mock(Interface.class); + Column ifaceColumns = mock(Column.class); + when(iface.getTypeColumn()).thenReturn(ifaceColumns); + when(ifaceColumns.getData()).thenReturn(NetworkHandler.NETWORK_TYPE_VXLAN); + when(ovsdbConfigurationService.getTypedRow(any(Node.class), same(Interface.class), any(Row.class))).thenReturn(iface); + /**/ + + when(ev.getAction()).thenReturn(Action.DELETE); + networkHandlerSpy.processEvent(ev); + verify(neutronL3Adapter, times(1)).handleNeutronNetworkEvent(any(NeutronNetwork.class), same(Action.DELETE)); + verify(networkHandlerSpy, times(1)).canDeleteNetwork(any(NeutronNetwork.class)); + verify(tenantNetworkManager, times(1)).networkDeleted(anyString()); + } +} -- 2.36.6