Add JUnit testing for VlanConfigurationCacheImpl class.
[netvirt.git] / openstack / net-virt / src / test / java / org / opendaylight / ovsdb / openstack / netvirt / impl / VlanConfigurationCacheImplTest.java
1 package org.opendaylight.ovsdb.openstack.netvirt.impl;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.Matchers.any;
5 import static org.mockito.Matchers.anyString;
6 import static org.mockito.Matchers.same;
7 import static org.mockito.Mockito.mock;
8 import static org.mockito.Mockito.when;
9
10 import java.util.HashSet;
11 import java.util.Random;
12 import java.util.Set;
13 import java.util.concurrent.ConcurrentHashMap;
14
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.junit.runner.RunWith;
18 import org.mockito.InjectMocks;
19 import org.mockito.Mock;
20 import org.mockito.runners.MockitoJUnitRunner;
21 import org.opendaylight.neutron.spi.NeutronNetwork;
22 import org.opendaylight.ovsdb.lib.notation.Column;
23 import org.opendaylight.ovsdb.lib.notation.Row;
24 import org.opendaylight.ovsdb.lib.notation.UUID;
25 import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
26 import org.opendaylight.ovsdb.plugin.api.OvsdbConfigurationService;
27 import org.opendaylight.ovsdb.schema.openvswitch.Interface;
28 import org.opendaylight.ovsdb.schema.openvswitch.Port;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
30
31 /**
32  * Unit test for class VlanConfigurationCacheImpl
33  */
34 @RunWith(MockitoJUnitRunner.class)
35 public class VlanConfigurationCacheImplTest {
36
37     @Mock private OvsdbConfigurationService ovsdbConfigurationService;
38
39     @InjectMocks public VlanConfigurationCacheImpl vlanConfigurationCacheImpl;
40     @InjectMocks private TenantNetworkManagerImpl tenantNetworkManagerImpl = mock(TenantNetworkManagerImpl.class);
41
42     private static final String NODE_UUID = "nodeUUID";
43     private static final String NETWORK_ID= "networkId";
44
45     /**
46      * Function configuring the node
47      */
48     @Before
49     public void setUp(){
50         Row row = mock(Row.class);
51         Port port = mock(Port.class);
52
53         ConcurrentHashMap<String, Row> ovsTable;
54         ovsTable = new ConcurrentHashMap<>();
55         ovsTable.put(NODE_UUID, row);
56
57         ConcurrentHashMap<String, Row> portRows = ovsTable;
58
59         Set<Long> tags = new HashSet<Long>();
60         tags.add(new Random().nextLong());
61
62         UUID uuid = mock(UUID.class);
63         Set<UUID> uuidSet = new HashSet<>();
64         uuidSet.add(uuid);
65
66         Column<GenericTableSchema, Set<Long>> longColumnMock = mock(Column.class);
67         Column<GenericTableSchema, Set<UUID>> uuidColumnMock = mock(Column.class);
68
69         Interface iface = mock(Interface.class);
70         NeutronNetwork neutronNetwork = mock(NeutronNetwork.class);
71
72         // configure ovsdbConfigurationService
73         when(ovsdbConfigurationService.getRows(any(Node.class), anyString())).thenReturn(ovsTable);
74         when(ovsdbConfigurationService.getRows(any(Node.class), anyString())).thenReturn(portRows);
75         when(ovsdbConfigurationService.getTypedRow(any(Node.class), same(Port.class), any(Row.class))).thenReturn(port);
76
77         // configure port
78         when(port.getTagColumn()).thenReturn(longColumnMock);
79         when(longColumnMock.getData()).thenReturn(tags);
80         when(port.getInterfacesColumn()).thenReturn(uuidColumnMock);
81         when(uuidColumnMock.getData()).thenReturn(uuidSet);
82
83         // configure ovsdbConfigurationService
84         when(ovsdbConfigurationService.getRow(any(Node.class), anyString(), anyString())).thenReturn(row);
85         when(ovsdbConfigurationService.getTypedRow(any(Node.class), same(Interface.class), any(Row.class))).thenReturn(iface);
86
87         // configure neutronNetwork
88         when(tenantNetworkManagerImpl.getTenantNetwork(any(Interface.class))).thenReturn(neutronNetwork);
89         when(neutronNetwork.getNetworkUUID()).thenReturn("networkUUID");
90     }
91
92     /**
93      * Test method {@link VlanConfigurationCacheImpl#assignInternalVlan(Node, String)}
94      */
95     @Test
96     public void testAssignInternalVlan() {
97         // test
98         assertEquals("Error, did not return the correct internalVlanId (first added)", 1, (int) vlanConfigurationCacheImpl.assignInternalVlan(mock(Node.class), NETWORK_ID));
99         assertEquals("Error, did not return the correct internalVlanId (second added)",2, (int) vlanConfigurationCacheImpl.assignInternalVlan(mock(Node.class), NETWORK_ID + "1"));
100         }
101
102     /**
103      * Test method {@linkp VlanConfigurationCacheImpl#reclaimInternalVlan(Node, String)}
104      */
105     @Test
106     public void testReclaimInternalVlan(){
107         // test
108         assertEquals("Error, did not return the correct internalVlanId",0, (int) vlanConfigurationCacheImpl.reclaimInternalVlan(any(Node.class), NETWORK_ID));
109     }
110 }