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.when;
import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentMap;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.opendaylight.neutron.spi.NeutronSubnet;
import org.opendaylight.neutron.spi.Neutron_IPs;
import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
+import org.opendaylight.ovsdb.openstack.netvirt.api.ArpProvider;
import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
+import org.opendaylight.ovsdb.openstack.netvirt.api.InboundNatProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.L3ForwardingProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
+import org.opendaylight.ovsdb.openstack.netvirt.api.OutboundNatProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.RoutingProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
import org.opendaylight.ovsdb.utils.config.ConfigProperties;
+import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
/**
* Unit test for {@link NeutronL3Adapter}
*/
-/* TODO SB_MIGRATION */ @Ignore
-@PrepareForTest(ConfigProperties.class)
+@PrepareForTest({ConfigProperties.class, ServiceHelper.class})
@RunWith(PowerMockRunner.class)
public class NeutronL3AdapterTest {
- @InjectMocks NeutronL3Adapter neutronL3Adapter;
+ @InjectMocks private NeutronL3Adapter neutronL3Adapter;
@Mock private ConfigurationService configurationService;
@Mock private TenantNetworkManager tenantNetworkManager;
@Mock private INeutronNetworkCRUD neutronNetworkCache;
@Mock private INeutronSubnetCRUD neutronSubnetCache;
@Mock private INeutronPortCRUD neutronPortCache;
- @Mock NeutronPort neutronPort;
+ @Mock private NodeCacheManager nodeCacheManager;
+ @Mock private Southbound southbound;
+
+ @Mock private NeutronPort neutronPort;
private Set<String> inboundIpRewriteCache;
private Set<String> outboundIpRewriteCache;
PowerMockito.mockStatic(ConfigProperties.class);
PowerMockito.when(ConfigProperties.getProperty(neutronL3Adapter.getClass(), "ovsdb.l3.fwd.enabled")).thenReturn("yes");
- //neutronL3Adapter.init();
+ when(configurationService.isL3ForwardingEnabled()).thenReturn(true);
+
+ this.getMethod("initL3AdapterMembers").invoke(neutronL3Adapter);
this.getNeutronL3AdapterFields();
this.setUpVar();
}
- private void getNeutronL3AdapterFields() throws Exception{
- inboundIpRewriteCache = (Set<String>) getNeutronL3AdapterField("inboundIpRewriteCache");
- outboundIpRewriteCache = (Set<String>) getNeutronL3AdapterField("outboundIpRewriteCache");
- inboundIpRewriteExclusionCache = (Set<String>) getNeutronL3AdapterField("inboundIpRewriteExclusionCache");
- outboundIpRewriteExclusionCache = (Set<String>) getNeutronL3AdapterField("outboundIpRewriteExclusionCache");
- routerInterfacesCache = (Set<String>) getNeutronL3AdapterField("routerInterfacesCache");
- staticArpEntryCache = (Set<String>) getNeutronL3AdapterField("staticArpEntryCache");
- l3ForwardingCache = (Set<String>) getNeutronL3AdapterField("l3ForwardingCache");
- defaultRouteCache = (Set<String>) getNeutronL3AdapterField("defaultRouteCache");
- networkIdToRouterMacCache = (Map<String, String>) getNeutronL3AdapterField("networkIdToRouterMacCache");
- subnetIdToRouterInterfaceCache = (Map<String, NeutronRouter_Interface>) getNeutronL3AdapterField("subnetIdToRouterInterfaceCache");
+ @Test
+ public void test() {
+
}
- private Object getNeutronL3AdapterField(String fieldName) throws Exception {
- Field fieldObject = NeutronL3Adapter.class.getDeclaredField(fieldName);
- fieldObject.setAccessible(true);
- return fieldObject.get(neutronL3Adapter);
+ private void getNeutronL3AdapterFields() throws Exception{
+ inboundIpRewriteCache = (Set<String>) getField("inboundIpRewriteCache");
+ outboundIpRewriteCache = (Set<String>) getField("outboundIpRewriteCache");
+ inboundIpRewriteExclusionCache = (Set<String>) getField("inboundIpRewriteExclusionCache");
+ outboundIpRewriteExclusionCache = (Set<String>) getField("outboundIpRewriteExclusionCache");
+ routerInterfacesCache = (Set<String>) getField("routerInterfacesCache");
+ staticArpEntryCache = (Set<String>) getField("staticArpEntryCache");
+ l3ForwardingCache = (Set<String>) getField("l3ForwardingCache");
+ defaultRouteCache = (Set<String>) getField("defaultRouteCache");
+ networkIdToRouterMacCache = (Map<String, String>) getField("networkIdToRouterMacCache");
+ subnetIdToRouterInterfaceCache = (Map<String, NeutronRouter_Interface>) getField("subnetIdToRouterInterfaceCache");
}
private void setUpVar(){
//when(bridge.getDatapathIdColumn()).thenReturn(bridgeColumnIds);
//when(bridgeColumnIds.getData()).thenReturn(dpids);
+
+ when(nodeCacheManager.getBridgeNodes()).thenReturn(list_nodes);
}
* Test method {@link NeutronL3Adapter#handleNeutronPortEvent(NeutronPort, Action)}
* Device owner = network:router_interface
*/
- @Test
+// @Test
public void testHandleNeutronPortEvent1() {
when(neutronPort.getDeviceOwner()).thenReturn("network:router_interface");
assertEquals("Error, did not return the correct subnetIdToRouterInterfaceCache size", 1, subnetIdToRouterInterfaceCache.size());
/* TODO SB_MIGRATION */
//assertEquals("Error, did not return the correct routerInterfacesCache size", 2, routerInterfacesCache.size());
- assertEquals("Error, did not return the correct staticArpEntryCache size", 2, staticArpEntryCache.size());
- assertEquals("Error, did not return the correct inboundIpRewriteExclusionCache size", 1, inboundIpRewriteExclusionCache.size());
- assertEquals("Error, did not return the correct outboundIpRewriteExclusionCache size", 1, outboundIpRewriteExclusionCache.size());
- assertEquals("Error, did not return the correct l3ForwardingCache size", 1, l3ForwardingCache.size());
+// assertEquals("Error, did not return the correct staticArpEntryCache size", 2, staticArpEntryCache.size());
+// assertEquals("Error, did not return the correct inboundIpRewriteExclusionCache size", 1, inboundIpRewriteExclusionCache.size());
+// assertEquals("Error, did not return the correct outboundIpRewriteExclusionCache size", 1, outboundIpRewriteExclusionCache.size());
+// assertEquals("Error, did not return the correct l3ForwardingCache size", 1, l3ForwardingCache.size());
// Unchanged
assertEquals("Error, did not return the correct inboundIpRewriteCache size", 0, inboundIpRewriteCache.size());
assertEquals("Error, did not return the correct outboundIpRewriteCache size", 0, outboundIpRewriteCache.size());
// Affected by the delete
assertEquals("Error, did not return the correct networkIdToRouterMacCache size", 0, networkIdToRouterMacCache.size());
assertEquals("Error, did not return the correct subnetIdToRouterInterfaceCache size", 0, subnetIdToRouterInterfaceCache.size());
- assertEquals("Error, did not return the correct staticArpEntryCache size", 1, staticArpEntryCache.size());
+// assertEquals("Error, did not return the correct staticArpEntryCache size", 1, staticArpEntryCache.size());
// Unchanged
assertEquals("Error, did not return the correct routerInterfacesCache size", 2, routerInterfacesCache.size());
assertEquals("Error, did not return the correct inboundIpRewriteExclusionCache size", 1, inboundIpRewriteExclusionCache.size());
* Test method {@link NeutronL3Adapter#handleNeutronPortEvent(NeutronPort, Action)}
* Device owner = ""
*/
- @Test
+// @Test
public void testHandleNeutronPortEvent2() {
when(neutronPort.getDeviceOwner()).thenReturn("");
/**
* Test method {@link NeutronL3Adapter#handleNeutronFloatingIPEvent(NeutronFloatingIP, Action)}
*/
- @Test
+// @Test
public void testandleNeutronFloatingIPEvent() throws Exception{
NeutronFloatingIP neutronFloatingIP = mock(NeutronFloatingIP.class);
when(neutronFloatingIP.getFixedIPAddress()).thenReturn(HOST_ADDRESS);
assertEquals("Error, did not return the correct defaultRouteCache size", 0, defaultRouteCache.size());
}
+ @Test
+ public void testSetDependencies() throws Exception {
+ TenantNetworkManager tenantNetworkManager = mock(TenantNetworkManager.class);
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ ArpProvider arpProvider = mock(ArpProvider.class);
+ InboundNatProvider inboundNatProvider = mock(InboundNatProvider.class);
+ OutboundNatProvider outboundNatProvider = mock(OutboundNatProvider.class);
+ RoutingProvider routingProvider = mock(RoutingProvider.class);
+ L3ForwardingProvider l3ForwardingProvider = mock(L3ForwardingProvider.class);
+ NodeCacheManager nodeCacheManager = mock(NodeCacheManager.class);
+ Southbound southbound = mock(Southbound.class);
+
+ PowerMockito.mockStatic(ServiceHelper.class);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(TenantNetworkManager.class, neutronL3Adapter)).thenReturn(tenantNetworkManager);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(ConfigurationService.class, neutronL3Adapter)).thenReturn(configurationService);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(ArpProvider.class, neutronL3Adapter)).thenReturn(arpProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(InboundNatProvider.class, neutronL3Adapter)).thenReturn(inboundNatProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(OutboundNatProvider.class, neutronL3Adapter)).thenReturn(outboundNatProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(RoutingProvider.class, neutronL3Adapter)).thenReturn(routingProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(L3ForwardingProvider.class, neutronL3Adapter)).thenReturn(l3ForwardingProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(NodeCacheManager.class, neutronL3Adapter)).thenReturn(nodeCacheManager);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(Southbound.class, neutronL3Adapter)).thenReturn(southbound);
+
+ neutronL3Adapter.setDependencies(mock(BundleContext.class), mock(ServiceReference.class));
+
+ assertEquals("Error, did not return the correct object", getField("tenantNetworkManager"), tenantNetworkManager);
+ assertEquals("Error, did not return the correct object", getField("configurationService"), configurationService);
+ assertEquals("Error, did not return the correct object", getField("arpProvider"), arpProvider);
+ assertEquals("Error, did not return the correct object", getField("inboundNatProvider"), inboundNatProvider);
+ assertEquals("Error, did not return the correct object", getField("outboundNatProvider"), outboundNatProvider);
+ assertEquals("Error, did not return the correct object", getField("routingProvider"), routingProvider);
+ assertEquals("Error, did not return the correct object", getField("l3ForwardingProvider"), l3ForwardingProvider);
+ assertEquals("Error, did not return the correct object", getField("nodeCacheManager"), nodeCacheManager);
+ assertEquals("Error, did not return the correct object", getField("southbound"), southbound);
+ }
+
+ @Test
+ public void testSetDependenciesObject() throws Exception{
+ INeutronNetworkCRUD iNeutronNetworkCRUD = mock(INeutronNetworkCRUD.class);
+ neutronL3Adapter.setDependencies(iNeutronNetworkCRUD);
+ assertEquals("Error, did not return the correct object", getField("neutronNetworkCache"), iNeutronNetworkCRUD);
+
+ INeutronPortCRUD iNeutronPortCRUD = mock(INeutronPortCRUD.class);
+ neutronL3Adapter.setDependencies(iNeutronPortCRUD);
+ assertEquals("Error, did not return the correct object", getField("neutronPortCache"), iNeutronPortCRUD);
+
+ INeutronSubnetCRUD iNeutronSubnetCRUD = mock(INeutronSubnetCRUD.class);
+ neutronL3Adapter.setDependencies(iNeutronSubnetCRUD);
+ assertEquals("Error, did not return the correct object", getField("neutronSubnetCache"), iNeutronSubnetCRUD);
+
+ ArpProvider arpProvider = mock(ArpProvider.class);
+ neutronL3Adapter.setDependencies(arpProvider);
+ assertEquals("Error, did not return the correct object", getField("arpProvider"), arpProvider);
+
+ InboundNatProvider inboundNatProvider = mock(InboundNatProvider.class);
+ neutronL3Adapter.setDependencies(inboundNatProvider);
+ assertEquals("Error, did not return the correct object", getField("inboundNatProvider"), inboundNatProvider);
+
+ OutboundNatProvider outboundNatProvider = mock(OutboundNatProvider.class);
+ neutronL3Adapter.setDependencies(outboundNatProvider);
+ assertEquals("Error, did not return the correct object", getField("outboundNatProvider"), outboundNatProvider);
+
+ RoutingProvider routingProvider = mock(RoutingProvider.class);
+ neutronL3Adapter.setDependencies(routingProvider);
+ assertEquals("Error, did not return the correct object", getField("routingProvider"), routingProvider);
+
+ L3ForwardingProvider l3ForwardingProvider = mock(L3ForwardingProvider.class);
+ neutronL3Adapter.setDependencies(l3ForwardingProvider);
+ assertEquals("Error, did not return the correct object", getField("l3ForwardingProvider"), l3ForwardingProvider);
+ }
+
+ private Object getField(String fieldName) throws Exception {
+ Field field = NeutronL3Adapter.class.getDeclaredField(fieldName);
+ field.setAccessible(true);
+ return field.get(neutronL3Adapter);
+ }
+
+ private Method getMethod(String methodName) throws Exception {
+ Method method = neutronL3Adapter.getClass().getDeclaredMethod(methodName, new Class[] {});
+ method.setAccessible(true);
+ return method;
+ }
}