Fix build faliures due to OFPlugin checktyle fixes
[netvirt.git] / sfc / classifier / impl / src / test / java / org / opendaylight / netvirt / sfc / classifier / providers / NetvirtProviderTest.java
1 /*
2  * Copyright © 2017 Ericsson, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.netvirt.sfc.classifier.providers;
10
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertTrue;
13
14 import java.util.ArrayList;
15 import java.util.List;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.controller.md.sal.binding.test.ConstantSchemaAbstractDataBrokerTest;
19 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
20 import org.opendaylight.genius.mdsalutil.MDSALUtil;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.NetworkMaps;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.Subnetmaps;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.networkmaps.NetworkMap;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.networkmaps.NetworkMapBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.networkmaps.NetworkMapKey;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.Subnetmap;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.SubnetmapBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.SubnetmapKey;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.sfc.acl.rev150105.NeutronNetworkBuilder;
31 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
32
33 public class NetvirtProviderTest extends ConstantSchemaAbstractDataBrokerTest {
34     private static final String NW_UUID_STR = "177bef73-514e-4922-990f-d7aba0f3b0f4";
35     private static final String NW_UUID_NOEXIST_STR = "177bef73-5555-2222-0000-d7aba0f3b0f4";
36     private static final String SUBNET_UUID_STR = "33333333-514e-4922-990f-d7aba0f3b0f4";
37     private static final String PORT_UUID_STR = "44444444-5555-2222-0000-d7aba0f3b0f4";
38     private static final String EMPTY_STR = "";
39
40     private NetvirtProvider netvirtProvider;
41
42     @Before
43     public void setUp() throws Exception {
44         this.netvirtProvider = new NetvirtProvider(getDataBroker());
45     }
46
47     @Test
48     public void getLogicalInterfacesFromNeutronNetwork() {
49
50         // Network doesnt exist
51         NeutronNetworkBuilder nwBuilder = new NeutronNetworkBuilder();
52         nwBuilder.setNetworkUuid(NW_UUID_NOEXIST_STR);
53         List<String> interfaces = netvirtProvider.getLogicalInterfacesFromNeutronNetwork(nwBuilder.build());
54         assertTrue(interfaces.isEmpty());
55
56         // Network exists, subnet list empty
57         createNetworkMap(NW_UUID_STR);
58         nwBuilder = new NeutronNetworkBuilder();
59         nwBuilder.setNetworkUuid(NW_UUID_STR);
60         interfaces = netvirtProvider.getLogicalInterfacesFromNeutronNetwork(nwBuilder.build());
61         assertTrue(interfaces.isEmpty());
62
63         // Network exists, subnet does not exist
64         createNetworkMap(NW_UUID_STR, SUBNET_UUID_STR, false, EMPTY_STR);
65         nwBuilder = new NeutronNetworkBuilder();
66         nwBuilder.setNetworkUuid(NW_UUID_STR);
67         interfaces = netvirtProvider.getLogicalInterfacesFromNeutronNetwork(nwBuilder.build());
68         assertTrue(interfaces.isEmpty());
69
70         // Network exists, subnet exists, no ports
71         createNetworkMap(NW_UUID_STR, SUBNET_UUID_STR, true, EMPTY_STR);
72         nwBuilder = new NeutronNetworkBuilder();
73         nwBuilder.setNetworkUuid(NW_UUID_STR);
74         interfaces = netvirtProvider.getLogicalInterfacesFromNeutronNetwork(nwBuilder.build());
75         assertTrue(interfaces.isEmpty());
76
77         // Network exists, subnet exists, port exists
78         createNetworkMap(NW_UUID_STR, SUBNET_UUID_STR, true, PORT_UUID_STR);
79         nwBuilder = new NeutronNetworkBuilder();
80         nwBuilder.setNetworkUuid(NW_UUID_STR);
81         interfaces = netvirtProvider.getLogicalInterfacesFromNeutronNetwork(nwBuilder.build());
82         assertFalse(interfaces.isEmpty());
83     }
84
85     private NetworkMapBuilder createNetworkMap(String nwUuidStr) {
86         Uuid nwUuid = new Uuid(nwUuidStr);
87         NetworkMapBuilder nwMapBuilder = new NetworkMapBuilder();
88         nwMapBuilder.setNetworkId(nwUuid);
89         storeNetworkMap(nwUuid, nwMapBuilder.build());
90
91         return nwMapBuilder;
92     }
93
94     private void createNetworkMap(String nwUuidStr, String subnetUuidStr, boolean storeSubnet, String portUuidStr) {
95         SubnetmapBuilder subnetBuilder = new SubnetmapBuilder();
96         if (!portUuidStr.isEmpty()) {
97             List<Uuid> portIdList = new ArrayList<>();
98             portIdList.add(new Uuid(portUuidStr));
99             subnetBuilder.setPortList(portIdList);
100         }
101
102         Uuid subnetUuid = new Uuid(subnetUuidStr);
103         subnetBuilder.setId(subnetUuid);
104         List<Uuid> subnetIdList = new ArrayList<>();
105         subnetIdList.add(subnetUuid);
106
107         NetworkMapBuilder nwMapBuilder = createNetworkMap(nwUuidStr);
108         nwMapBuilder.setSubnetIdList(subnetIdList);
109         storeNetworkMap(new Uuid(nwUuidStr), nwMapBuilder.build());
110
111         // Simulates NetworkMap has subnet list, but subnets dont exist
112         if (storeSubnet) {
113             storeSubnetMap(subnetUuid, subnetBuilder.build());
114         }
115     }
116
117     @SuppressWarnings("deprecation")
118     private void storeNetworkMap(Uuid nwUuid, NetworkMap nwMap) {
119         InstanceIdentifier<NetworkMap> networkMapIdentifier =
120                 InstanceIdentifier.builder(NetworkMaps.class)
121                     .child(NetworkMap.class,new NetworkMapKey(nwUuid)).build();
122
123         MDSALUtil.syncWrite(getDataBroker(), LogicalDatastoreType.CONFIGURATION, networkMapIdentifier, nwMap);
124     }
125
126     @SuppressWarnings("deprecation")
127     private void storeSubnetMap(Uuid subnetUuid, Subnetmap subnetMap) {
128         InstanceIdentifier<Subnetmap> subnetId =
129                 InstanceIdentifier.builder(Subnetmaps.class)
130                     .child(Subnetmap.class, new SubnetmapKey(subnetUuid)).build();
131
132         MDSALUtil.syncWrite(getDataBroker(), LogicalDatastoreType.CONFIGURATION, subnetId, subnetMap);
133     }
134 }