Unit tests for NeutronSubnetAware 49/40549/4
authorKonstantin Blagov <kblagov@cisco.com>
Mon, 20 Jun 2016 14:23:31 +0000 (16:23 +0200)
committerKonstantin Blagov <kblagov@cisco.com>
Mon, 27 Jun 2016 09:15:17 +0000 (11:15 +0200)
Change-Id: I81a10e4beff90808a90c519ba10c1d4e3b2712f7
Signed-off-by: Konstantin Blagov <kblagov@cisco.com>
neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAware.java
neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAwareDataStoreTest.java [new file with mode: 0644]
neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/NeutronMapperAssert.java

index 9381f5b0a14841e6cff888af3eb88af69469e5ec..c4971c03a305205e5f8126245825b61b91ca467e 100644 (file)
@@ -126,7 +126,7 @@ public class NeutronSubnetAware implements
 
     @Deprecated
     private void processTenantSubnet(org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.Subnet neutronSubnet, Network networkOfSubnet, TenantId tenantId, ReadWriteTransaction rwTx) {
-        Subnet subnet = null;
+        Subnet subnet;
         if (NetworkUtils.isProviderPhysicalNetwork(networkOfSubnet)) {
             // add virtual router IP only in case it is provider physical network
             subnet = createTenantSubnet(neutronSubnet, neutronSubnet.getGatewayIp());
diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAwareDataStoreTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAwareDataStoreTest.java
new file mode 100644 (file)
index 0000000..a4b49be
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. 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.groupbasedpolicy.neutron.mapper.mapping;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+
+import com.google.common.collect.ImmutableList;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.neutron.mapper.EndpointRegistrator;
+import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronMapperAssert;
+import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronMapperDataBrokerTest;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.BaseEndpointService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.EndpointService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.Networks;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.NetworksBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.Network;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.networks.rev150712.networks.attributes.networks.NetworkBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.NetworkProviderExtension;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.provider.ext.rev150712.NetworkProviderExtensionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.Subnet;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets.SubnetBuilder;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+
+public class NeutronSubnetAwareDataStoreTest extends NeutronMapperDataBrokerTest {
+
+    private static final Uuid tenantUuid = new Uuid("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa");
+    private static final Uuid networkUuid = new Uuid("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb");
+    private static final Uuid subnetUuid = new Uuid("cccccccc-cccc-cccc-cccc-cccccccccccc");
+    private static final Uuid subnetUuid2 = new Uuid("cccccccc-cccc-cccc-cccc-ccccccccccc2");
+    private static final IpAddress ipAddress = new IpAddress(new Ipv4Address("10.0.0.2"));
+    private static final IpAddress ipAddress2 = new IpAddress(new Ipv4Address("10.0.2.2"));
+    private static final IpPrefix ipPrefix = new IpPrefix(new Ipv4Prefix("10.0.0.0/24"));
+
+    private DataBroker dataBroker;
+    private Neutron neutron;
+    private EndpointRegistrator epRegistrator;
+    private EndpointService epService;
+    private BaseEndpointService baseEpService;
+    private Future<RpcResult<Void>> futureRpcResult;
+    private RpcResult<Void> rpcResult;
+    private RpcResult<Void> rpcFail;
+    private NeutronSubnetAware subnetAware;
+    private static final Subnet subnet = new SubnetBuilder().setTenantId(tenantUuid)
+        .setUuid(subnetUuid)
+        .setName("subnetName")
+        .setNetworkId(networkUuid)
+        .setGatewayIp(ipAddress)
+        .setCidr(ipPrefix)
+        .build();
+    private static final Subnet subnet2 = new SubnetBuilder().setTenantId(tenantUuid)
+        .setUuid(subnetUuid2)
+        .setName("subnetName2")
+        .setNetworkId(networkUuid)
+        .setGatewayIp(ipAddress2)
+        .setCidr(ipPrefix)
+        .build();
+
+    @Before
+    public void init() throws ExecutionException, InterruptedException {
+        futureRpcResult = mock(Future.class);
+        rpcResult = mock(RpcResult.class);
+        rpcFail = mock(RpcResult.class);
+        when(rpcResult.isSuccessful()).thenReturn(true);
+        when(rpcFail.isSuccessful()).thenReturn(false);
+
+        dataBroker = getDataBroker();
+        neutron = mock(Neutron.class);
+
+        epService = mock(EndpointService.class);
+        baseEpService = mock(BaseEndpointService.class);
+
+        when(futureRpcResult.get()).thenReturn(rpcResult);
+        when(epService.registerL3PrefixEndpoint(
+                any(org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.RegisterL3PrefixEndpointInput.class)))
+                    .thenReturn(futureRpcResult);
+
+        epRegistrator = new EndpointRegistrator(epService, baseEpService);
+
+        subnetAware = new NeutronSubnetAware(dataBroker, epRegistrator);
+    }
+
+    @Rule
+    public ExpectedException thrown = ExpectedException.none();
+
+    @Test
+    public void testConstructor_invalidArgument() throws NullPointerException {
+        thrown.expect(NullPointerException.class);
+        new NeutronSubnetAware(null, null);
+    }
+
+    @Test
+    public void testOnCreated() {
+
+        NetworkProviderExtension networkProviderExtension =
+                new NetworkProviderExtensionBuilder().setPhysicalNetwork("physicalNetwork").build();
+        Network network = new NetworkBuilder().setUuid(networkUuid)
+            .addAugmentation(NetworkProviderExtension.class, networkProviderExtension)
+            .build();
+        Networks networks = new NetworksBuilder().setNetwork(ImmutableList.of(network)).build();
+        when(neutron.getNetworks()).thenReturn(networks);
+
+        subnetAware.onCreated(subnet, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainExists(dataBroker, tenantUuid, subnet, ipAddress);
+    }
+
+    @Test
+    public void testOnCreated_noNetwork() {
+
+        Networks networks = new NetworksBuilder().setNetwork(ImmutableList.of()).build();
+        when(neutron.getNetworks()).thenReturn(networks);
+
+        subnetAware.onCreated(subnet, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainNotExists(dataBroker, tenantUuid, subnet, ipAddress);
+    }
+
+    @Test
+    public void testOnUpdated() {
+
+        Network network = new NetworkBuilder().setUuid(networkUuid).build();
+        Networks networks = new NetworksBuilder().setNetwork(ImmutableList.of(network)).build();
+        when(neutron.getNetworks()).thenReturn(networks);
+
+        subnetAware.onCreated(subnet, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainExists(dataBroker, tenantUuid, subnet, ipAddress);
+        NeutronMapperAssert.assertNetworkDomainNotExists(dataBroker, tenantUuid, subnet2, ipAddress);
+
+        subnetAware.onUpdated(subnet, subnet2, neutron, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainExists(dataBroker, tenantUuid, subnet2, ipAddress);
+    }
+
+    @Test
+    public void testOnDeleted() {
+
+        Network network = new NetworkBuilder().setUuid(networkUuid).build();
+        Networks networks = new NetworksBuilder().setNetwork(ImmutableList.of(network)).build();
+        when(neutron.getNetworks()).thenReturn(networks);
+
+        subnetAware.onCreated(subnet, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainExists(dataBroker, tenantUuid, subnet, ipAddress);
+
+        subnetAware.onDeleted(subnet, neutron, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainNotExists(dataBroker, tenantUuid, subnet, ipAddress);
+    }
+
+    @Test
+    public void testOnDeleted_wrongSubnet() {
+
+        Network network = new NetworkBuilder().setUuid(networkUuid).build();
+        Networks networks = new NetworksBuilder().setNetwork(ImmutableList.of(network)).build();
+        when(neutron.getNetworks()).thenReturn(networks);
+
+        subnetAware.onCreated(subnet, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainExists(dataBroker, tenantUuid, subnet, ipAddress);
+
+        subnetAware.onDeleted(subnet2, neutron, neutron);
+
+        NeutronMapperAssert.assertNetworkDomainExists(dataBroker, tenantUuid, subnet, ipAddress);
+    }
+
+}
index 5a2bd0cb0b818606b24756a3eda4305035315264..d85a790a4dea31f6cb5713ce2145139ab2fa1cf3 100644 (file)
@@ -56,16 +56,28 @@ public class NeutronMapperAssert {
     }
 
     public static void assertNetworkDomainExists(DataBroker dataBroker, Port port, Subnet subnet, IpAddress ipAddress) {
-        Optional<NetworkDomain> portOptional =
+        Optional<NetworkDomain> opt =
                 getNetworkDomainOptional(dataBroker, port.getTenantId(), ipAddress, subnet);
-        assertTrue(portOptional.isPresent());
+        assertTrue(opt.isPresent());
     }
 
     public static void assertNetworkDomainNotExists(DataBroker dataBroker, Port port, Subnet subnet,
             IpAddress ipAddress) {
-        Optional<NetworkDomain> portOptional =
+        Optional<NetworkDomain> opt =
                 getNetworkDomainOptional(dataBroker, port.getTenantId(), ipAddress, subnet);
-        assertFalse(portOptional.isPresent());
+        assertFalse(opt.isPresent());
+    }
+
+    public static void assertNetworkDomainExists(DataBroker dataBroker, Uuid tenantUuid, Subnet subnet,
+            IpAddress ipAddress) {
+        Optional<NetworkDomain> opt = getNetworkDomainOptional(dataBroker, tenantUuid, ipAddress, subnet);
+        assertTrue(opt.isPresent());
+    }
+
+    public static void assertNetworkDomainNotExists(DataBroker dataBroker, Uuid tenantUuid, Subnet subnet,
+            IpAddress ipAddress) {
+        Optional<NetworkDomain> opt = getNetworkDomainOptional(dataBroker, tenantUuid, ipAddress, subnet);
+        assertFalse(opt.isPresent());
     }
 
     private static Optional<NetworkDomain> getNetworkDomainOptional(DataBroker dataBroker, Uuid tenantUuid,