blob: ecb8b0d65f04a956ee2c1f86736eea0bb5802b59 [file] [log] [blame]
Brian Stanke86914282016-05-25 15:36:50 -04001/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.incubator.net.virtual.impl;
18
19import com.google.common.collect.Iterators;
20import org.junit.After;
21import org.junit.Before;
22import org.junit.Test;
23import org.onlab.junit.TestUtils;
24import org.onosproject.common.event.impl.TestEventDispatcher;
25import org.onosproject.core.CoreService;
26import org.onosproject.core.CoreServiceAdapter;
27import org.onosproject.core.IdGenerator;
28import org.onosproject.incubator.net.virtual.TenantId;
29import org.onosproject.incubator.net.virtual.VirtualDevice;
30import org.onosproject.incubator.net.virtual.VirtualNetwork;
31import org.onosproject.incubator.net.virtual.VirtualPort;
32import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
33import org.onosproject.net.DefaultPort;
34import org.onosproject.net.Device;
Brian Stanke86914282016-05-25 15:36:50 -040035import org.onosproject.net.MastershipRole;
36import org.onosproject.net.NetTestTools;
37import org.onosproject.net.Port;
38import org.onosproject.net.PortNumber;
Brian Stanke8e9f8d12016-06-08 14:48:33 -040039import org.onosproject.net.TestDeviceParams;
Brian Stanke86914282016-05-25 15:36:50 -040040import org.onosproject.net.device.DeviceService;
41import org.onosproject.store.service.TestStorageService;
42
43import java.util.Iterator;
44import java.util.concurrent.atomic.AtomicLong;
45
46import static org.junit.Assert.*;
47
48/**
49 * Junit tests for VirtualNetworkDeviceService.
50 */
Brian Stanke8e9f8d12016-06-08 14:48:33 -040051public class VirtualNetworkDeviceServiceTest extends TestDeviceParams {
Brian Stanke86914282016-05-25 15:36:50 -040052 private final String tenantIdValue1 = "TENANT_ID1";
Brian Stanke86914282016-05-25 15:36:50 -040053
54 private VirtualNetworkManager manager;
55 private DistributedVirtualNetworkStore virtualNetworkManagerStore;
56 private CoreService coreService;
57
58 @Before
59 public void setUp() throws Exception {
60 virtualNetworkManagerStore = new DistributedVirtualNetworkStore();
61
62 coreService = new VirtualNetworkDeviceServiceTest.TestCoreService();
63 virtualNetworkManagerStore.setCoreService(coreService);
64 TestUtils.setField(coreService, "coreService", new VirtualNetworkDeviceServiceTest.TestCoreService());
65 TestUtils.setField(virtualNetworkManagerStore, "storageService", new TestStorageService());
66 virtualNetworkManagerStore.activate();
67
68 manager = new VirtualNetworkManager();
69 manager.store = virtualNetworkManagerStore;
70 NetTestTools.injectEventDispatcher(manager, new TestEventDispatcher());
71 manager.activate();
72 }
73
74 @After
75 public void tearDown() {
76 virtualNetworkManagerStore.deactivate();
77 manager.deactivate();
78 NetTestTools.injectEventDispatcher(manager, null);
79 }
80
81 /**
82 * Tests the getDevices(), getAvailableDevices(), getDeviceCount(), getDevice(), and isAvailable() methods.
83 */
84 @Test
85 public void testGetDevices() {
86 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
87 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -040088 VirtualDevice device1 = manager.createVirtualDevice(virtualNetwork.id(), DID1);
89 VirtualDevice device2 = manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -040090
91 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
92
93 // test the getDevices() method
94 Iterator<Device> it = deviceService.getDevices().iterator();
95 assertEquals("The device set size did not match.", 2, Iterators.size(it));
96
97 // test the getAvailableDevices() method
98 Iterator<Device> it2 = deviceService.getAvailableDevices().iterator();
99 assertEquals("The device set size did not match.", 2, Iterators.size(it2));
100
101 // test the getDeviceCount() method
102 assertEquals("The device set size did not match.", 2, deviceService.getDeviceCount());
103
104 // test the getDevice() method
105 assertEquals("The expect device did not match.", device1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400106 deviceService.getDevice(DID1));
Brian Stanke86914282016-05-25 15:36:50 -0400107 assertNotEquals("The expect device should not have matched.", device1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400108 deviceService.getDevice(DID2));
Brian Stanke86914282016-05-25 15:36:50 -0400109
110 // test the isAvailable() method
111 assertTrue("The expect device availability did not match.",
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400112 deviceService.isAvailable(DID1));
Brian Stanke86914282016-05-25 15:36:50 -0400113 assertFalse("The expect device availability did not match.",
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400114 deviceService.isAvailable(DID3));
Brian Stanke86914282016-05-25 15:36:50 -0400115 }
116
117 /**
118 * Tests querying for a device using a null device identifier.
119 */
120 @Test(expected = NullPointerException.class)
121 public void testGetDeviceByNullId() {
122 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
123 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
124 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
125
126 // test the getDevice() method with null device id value.
127 deviceService.getDevice(null);
128 }
129
130 /**
131 * Tests querying for a device using a null device type.
132 */
133 @Test(expected = NullPointerException.class)
134 public void testGetDeviceByNullType() {
135 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
136 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
137 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
138
139 // test the getDevices() method with null type value.
140 deviceService.getDevices(null);
141 }
142
143 /**
144 * Tests the isAvailable method using a null device identifier.
145 */
146 @Test(expected = NullPointerException.class)
147 public void testIsAvailableByNullId() {
148 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
149 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
150 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
151
152 // test the isAvailable() method with null device id value.
153 deviceService.isAvailable(null);
154 }
155
156 /**
157 * Tests querying for a device and available devices by device type.
158 */
159 @Test
160 public void testGetDeviceType() {
161 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
162 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400163 manager.createVirtualDevice(virtualNetwork.id(), DID1);
164 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400165
166 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
167
168 // test the getDevices(Type) method.
169 Iterator<Device> it = deviceService.getDevices(Device.Type.VIRTUAL).iterator();
170 assertEquals("The device set size did not match.", 2, Iterators.size(it));
171 Iterator<Device> it2 = deviceService.getDevices(Device.Type.SWITCH).iterator();
172 assertEquals("The device set size did not match.", 0, Iterators.size(it2));
173
174 // test the getAvailableDevices(Type) method.
175 Iterator<Device> it3 = deviceService.getAvailableDevices(Device.Type.VIRTUAL).iterator();
176 assertEquals("The device set size did not match.", 2, Iterators.size(it3));
177 }
178
179 /**
180 * Tests querying the role of a device by null device identifier.
181 */
182 @Test(expected = NullPointerException.class)
183 public void testGetRoleByNullId() {
184 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
185 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
186 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
187
188 // test the getRole() method using a null device identifier
189 deviceService.getRole(null);
190 }
191
192 /**
193 * Tests querying the role of a device by device identifier.
194 */
195 @Test
196 public void testGetRole() {
197 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
198 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
199 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
200
201 // test the getRole() method
202 assertEquals("The expect device role did not match.", MastershipRole.MASTER,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400203 deviceService.getRole(DID1));
Brian Stanke86914282016-05-25 15:36:50 -0400204 }
205
206 /**
207 * Tests querying the ports of a device by null device identifier.
208 */
209 @Test(expected = NullPointerException.class)
210 public void testGetPortsByNullId() {
211 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
212 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
213 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
214
215 // test the getPorts() method using a null device identifier
216 deviceService.getPorts(null);
217 }
218
219 /**
220 * Tests querying the ports of a device by device identifier.
221 */
222 @Test
223 public void testGetPorts() {
224 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
225 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400226 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
227 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400228
229 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
230
231 Port port = new DefaultPort(virtualDevice, PortNumber.portNumber(1), true);
232
233 manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(1), port);
234 manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), port);
235
236 // test the getPorts() method
237 assertEquals("The port set size did not match.", 2,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400238 deviceService.getPorts(DID1).size());
Brian Stanke86914282016-05-25 15:36:50 -0400239 assertEquals("The port set size did not match.", 0,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400240 deviceService.getPorts(DID2).size());
Brian Stanke86914282016-05-25 15:36:50 -0400241 }
242
243 /**
244 * Tests querying the port of a device by device identifier and port number.
245 */
246 @Test
247 public void testGetPort() {
248 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
249 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400250 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
251 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400252
253 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
254
255 Port port = new DefaultPort(virtualDevice, PortNumber.portNumber(1), true);
256
257 VirtualPort virtualPort1 = manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(),
258 PortNumber.portNumber(1), port);
259 manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), port);
260
261 // test the getPort() method
262 assertEquals("The port did not match as expected.", virtualPort1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400263 deviceService.getPort(DID1, PortNumber.portNumber(1)));
Brian Stanke86914282016-05-25 15:36:50 -0400264 assertNotEquals("The port did not match as expected.", virtualPort1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400265 deviceService.getPort(DID1, PortNumber.portNumber(3)));
Brian Stanke86914282016-05-25 15:36:50 -0400266 }
267
268 /**
269 * Tests querying the port statistics of a device by null device identifier.
270 */
271 @Test(expected = NullPointerException.class)
272 public void testGetPortsStatisticsByNullId() {
273 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
274 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
275 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
276
277 // test the getPortStatistics() method using a null device identifier
278 deviceService.getPortStatistics(null);
279 }
280
281 /**
282 * Tests querying the port statistics of a device by device identifier.
283 */
284 @Test
285 public void testGetPortStatistics() {
286 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
287 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400288 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
289 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400290
291 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
292
293 // test the getPortStatistics() method
294 assertEquals("The port statistics set size did not match.", 0,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400295 deviceService.getPortStatistics(DID1).size());
Brian Stanke86914282016-05-25 15:36:50 -0400296 }
297
298 /**
299 * Tests querying the port delta statistics of a device by null device identifier.
300 */
301 @Test(expected = NullPointerException.class)
302 public void testGetPortsDeltaStatisticsByNullId() {
303 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
304 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
305 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
306
307 // test the getPortDeltaStatistics() method using a null device identifier
308 deviceService.getPortDeltaStatistics(null);
309 }
310
311 /**
312 * Tests querying the port delta statistics of a device by device identifier.
313 */
314 @Test
315 public void testGetPortDeltaStatistics() {
316 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
317 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400318 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
319 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400320
321 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
322
323 // test the getPortDeltaStatistics() method
324 assertEquals("The port delta statistics set size did not match.", 0,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400325 deviceService.getPortDeltaStatistics(DID1).size());
Brian Stanke86914282016-05-25 15:36:50 -0400326 }
327
328 /**
329 * Core service test class.
330 */
331 private class TestCoreService extends CoreServiceAdapter {
332
333 @Override
334 public IdGenerator getIdGenerator(String topic) {
335 return new IdGenerator() {
336 private AtomicLong counter = new AtomicLong(0);
337
338 @Override
339 public long getNewId() {
340 return counter.getAndIncrement();
341 }
342 };
343 }
344 }
345}