1 package org.opendaylight.ovsdb.openstack.netvirt.impl;
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;
10 import java.util.HashSet;
11 import java.util.Random;
13 import java.util.concurrent.ConcurrentHashMap;
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;
32 * Unit test for class VlanConfigurationCacheImpl
34 @RunWith(MockitoJUnitRunner.class)
35 public class VlanConfigurationCacheImplTest {
37 @Mock private OvsdbConfigurationService ovsdbConfigurationService;
39 @InjectMocks public VlanConfigurationCacheImpl vlanConfigurationCacheImpl;
40 @InjectMocks private TenantNetworkManagerImpl tenantNetworkManagerImpl = mock(TenantNetworkManagerImpl.class);
42 private static final String NODE_UUID = "nodeUUID";
43 private static final String NETWORK_ID= "networkId";
46 * Function configuring the node
50 Row row = mock(Row.class);
51 Port port = mock(Port.class);
53 ConcurrentHashMap<String, Row> ovsTable;
54 ovsTable = new ConcurrentHashMap<>();
55 ovsTable.put(NODE_UUID, row);
57 ConcurrentHashMap<String, Row> portRows = ovsTable;
59 Set<Long> tags = new HashSet<Long>();
60 tags.add(new Random().nextLong());
62 UUID uuid = mock(UUID.class);
63 Set<UUID> uuidSet = new HashSet<>();
66 Column<GenericTableSchema, Set<Long>> longColumnMock = mock(Column.class);
67 Column<GenericTableSchema, Set<UUID>> uuidColumnMock = mock(Column.class);
69 Interface iface = mock(Interface.class);
70 NeutronNetwork neutronNetwork = mock(NeutronNetwork.class);
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);
78 when(port.getTagColumn()).thenReturn(longColumnMock);
79 when(longColumnMock.getData()).thenReturn(tags);
80 when(port.getInterfacesColumn()).thenReturn(uuidColumnMock);
81 when(uuidColumnMock.getData()).thenReturn(uuidSet);
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);
87 // configure neutronNetwork
88 when(tenantNetworkManagerImpl.getTenantNetwork(any(Interface.class))).thenReturn(neutronNetwork);
89 when(neutronNetwork.getNetworkUUID()).thenReturn("networkUUID");
93 * Test method {@link VlanConfigurationCacheImpl#assignInternalVlan(Node, String)}
96 public void testAssignInternalVlan() {
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"));
103 * Test method {@linkp VlanConfigurationCacheImpl#reclaimInternalVlan(Node, String)}
106 public void testReclaimInternalVlan(){
108 assertEquals("Error, did not return the correct internalVlanId",0, (int) vlanConfigurationCacheImpl.reclaimInternalVlan(any(Node.class), NETWORK_ID));