blob: 5de6190cb78b411a74a0a717b3db88c9d1a68b54 [file] [log] [blame]
Brian Stanke86914282016-05-25 15:36:50 -04001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2016-present Open Networking Foundation
Brian Stanke86914282016-05-25 15:36:50 -04003 *
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;
Claudine Chiu465a2602017-03-17 18:33:36 -040020import com.google.common.collect.Lists;
Brian Stanke86914282016-05-25 15:36:50 -040021import org.junit.After;
22import org.junit.Before;
23import org.junit.Test;
Claudine Chiu465a2602017-03-17 18:33:36 -040024import org.onlab.junit.TestTools;
Brian Stanke86914282016-05-25 15:36:50 -040025import org.onlab.junit.TestUtils;
yoonseonc6a69272017-01-12 18:22:20 -080026import org.onlab.osgi.TestServiceDirectory;
Brian Stanke86914282016-05-25 15:36:50 -040027import org.onosproject.common.event.impl.TestEventDispatcher;
28import org.onosproject.core.CoreService;
29import org.onosproject.core.CoreServiceAdapter;
30import org.onosproject.core.IdGenerator;
Claudine Chiu465a2602017-03-17 18:33:36 -040031import org.onosproject.event.Event;
32import org.onosproject.event.EventDeliveryService;
Brian Stanke86914282016-05-25 15:36:50 -040033import org.onosproject.incubator.net.virtual.TenantId;
34import org.onosproject.incubator.net.virtual.VirtualDevice;
35import org.onosproject.incubator.net.virtual.VirtualNetwork;
36import org.onosproject.incubator.net.virtual.VirtualPort;
37import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
Yoonseon Han6c603892016-09-01 11:52:21 -070038import org.onosproject.net.ConnectPoint;
Brian Stanke86914282016-05-25 15:36:50 -040039import org.onosproject.net.Device;
Claudine Chiu465a2602017-03-17 18:33:36 -040040import org.onosproject.net.DeviceId;
Brian Stanke86914282016-05-25 15:36:50 -040041import org.onosproject.net.MastershipRole;
42import org.onosproject.net.NetTestTools;
Brian Stanke86914282016-05-25 15:36:50 -040043import org.onosproject.net.PortNumber;
Claudine Chiu465a2602017-03-17 18:33:36 -040044import org.onosproject.net.device.DeviceEvent;
45import org.onosproject.net.device.DeviceListener;
Brian Stanke86914282016-05-25 15:36:50 -040046import org.onosproject.net.device.DeviceService;
47import org.onosproject.store.service.TestStorageService;
48
Claudine Chiu465a2602017-03-17 18:33:36 -040049import java.util.ArrayList;
Brian Stanke86914282016-05-25 15:36:50 -040050import java.util.Iterator;
Claudine Chiu465a2602017-03-17 18:33:36 -040051import java.util.List;
52import java.util.Set;
Brian Stanke86914282016-05-25 15:36:50 -040053import java.util.concurrent.atomic.AtomicLong;
54
55import static org.junit.Assert.*;
56
57/**
58 * Junit tests for VirtualNetworkDeviceService.
59 */
Claudine Chiu465a2602017-03-17 18:33:36 -040060public class VirtualNetworkDeviceManagerTest extends VirtualNetworkTestUtil {
Brian Stanke86914282016-05-25 15:36:50 -040061 private final String tenantIdValue1 = "TENANT_ID1";
Brian Stanke86914282016-05-25 15:36:50 -040062
63 private VirtualNetworkManager manager;
64 private DistributedVirtualNetworkStore virtualNetworkManagerStore;
65 private CoreService coreService;
yoonseonc6a69272017-01-12 18:22:20 -080066 private TestServiceDirectory testDirectory;
Claudine Chiu465a2602017-03-17 18:33:36 -040067 private TestListener testListener = new TestListener();
68 private TestEventDispatcher dispatcher = new TestEventDispatcher();
Brian Stanke86914282016-05-25 15:36:50 -040069
70 @Before
71 public void setUp() throws Exception {
72 virtualNetworkManagerStore = new DistributedVirtualNetworkStore();
73
yoonseon214963b2016-11-21 15:41:07 -080074 coreService = new VirtualNetworkDeviceManagerTest.TestCoreService();
yoonseonc6a69272017-01-12 18:22:20 -080075 TestUtils.setField(virtualNetworkManagerStore, "coreService", coreService);
Brian Stanke86914282016-05-25 15:36:50 -040076 TestUtils.setField(virtualNetworkManagerStore, "storageService", new TestStorageService());
77 virtualNetworkManagerStore.activate();
78
79 manager = new VirtualNetworkManager();
80 manager.store = virtualNetworkManagerStore;
yoonseon322c9c32016-12-07 16:47:02 -080081 manager.coreService = coreService;
Claudine Chiu465a2602017-03-17 18:33:36 -040082 NetTestTools.injectEventDispatcher(manager, dispatcher);
yoonseonc6a69272017-01-12 18:22:20 -080083
84 testDirectory = new TestServiceDirectory();
85 TestUtils.setField(manager, "serviceDirectory", testDirectory);
86
Brian Stanke86914282016-05-25 15:36:50 -040087 manager.activate();
88 }
89
90 @After
91 public void tearDown() {
92 virtualNetworkManagerStore.deactivate();
93 manager.deactivate();
94 NetTestTools.injectEventDispatcher(manager, null);
95 }
96
97 /**
98 * Tests the getDevices(), getAvailableDevices(), getDeviceCount(), getDevice(), and isAvailable() methods.
99 */
100 @Test
101 public void testGetDevices() {
102 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
103 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400104 VirtualDevice device1 = manager.createVirtualDevice(virtualNetwork.id(), DID1);
105 VirtualDevice device2 = manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400106
107 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
108
109 // test the getDevices() method
110 Iterator<Device> it = deviceService.getDevices().iterator();
111 assertEquals("The device set size did not match.", 2, Iterators.size(it));
112
113 // test the getAvailableDevices() method
114 Iterator<Device> it2 = deviceService.getAvailableDevices().iterator();
115 assertEquals("The device set size did not match.", 2, Iterators.size(it2));
116
117 // test the getDeviceCount() method
118 assertEquals("The device set size did not match.", 2, deviceService.getDeviceCount());
119
120 // test the getDevice() method
121 assertEquals("The expect device did not match.", device1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400122 deviceService.getDevice(DID1));
Brian Stanke86914282016-05-25 15:36:50 -0400123 assertNotEquals("The expect device should not have matched.", device1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400124 deviceService.getDevice(DID2));
Brian Stanke86914282016-05-25 15:36:50 -0400125
126 // test the isAvailable() method
127 assertTrue("The expect device availability did not match.",
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400128 deviceService.isAvailable(DID1));
Brian Stanke86914282016-05-25 15:36:50 -0400129 assertFalse("The expect device availability did not match.",
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400130 deviceService.isAvailable(DID3));
Brian Stanke86914282016-05-25 15:36:50 -0400131 }
132
133 /**
134 * Tests querying for a device using a null device identifier.
135 */
136 @Test(expected = NullPointerException.class)
137 public void testGetDeviceByNullId() {
138 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
139 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
140 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
141
142 // test the getDevice() method with null device id value.
143 deviceService.getDevice(null);
144 }
145
146 /**
147 * Tests querying for a device using a null device type.
148 */
149 @Test(expected = NullPointerException.class)
150 public void testGetDeviceByNullType() {
151 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
152 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
153 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
154
155 // test the getDevices() method with null type value.
156 deviceService.getDevices(null);
157 }
158
159 /**
160 * Tests the isAvailable method using a null device identifier.
161 */
162 @Test(expected = NullPointerException.class)
163 public void testIsAvailableByNullId() {
164 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
165 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
166 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
167
168 // test the isAvailable() method with null device id value.
169 deviceService.isAvailable(null);
170 }
171
172 /**
173 * Tests querying for a device and available devices by device type.
174 */
175 @Test
176 public void testGetDeviceType() {
177 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
178 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400179 manager.createVirtualDevice(virtualNetwork.id(), DID1);
180 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400181
182 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
183
184 // test the getDevices(Type) method.
185 Iterator<Device> it = deviceService.getDevices(Device.Type.VIRTUAL).iterator();
186 assertEquals("The device set size did not match.", 2, Iterators.size(it));
187 Iterator<Device> it2 = deviceService.getDevices(Device.Type.SWITCH).iterator();
188 assertEquals("The device set size did not match.", 0, Iterators.size(it2));
189
190 // test the getAvailableDevices(Type) method.
191 Iterator<Device> it3 = deviceService.getAvailableDevices(Device.Type.VIRTUAL).iterator();
192 assertEquals("The device set size did not match.", 2, Iterators.size(it3));
193 }
194
195 /**
196 * Tests querying the role of a device by null device identifier.
197 */
198 @Test(expected = NullPointerException.class)
199 public void testGetRoleByNullId() {
200 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
201 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
202 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
203
204 // test the getRole() method using a null device identifier
205 deviceService.getRole(null);
206 }
207
208 /**
209 * Tests querying the role of a device by device identifier.
210 */
211 @Test
212 public void testGetRole() {
213 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
214 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
215 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
216
217 // test the getRole() method
218 assertEquals("The expect device role did not match.", MastershipRole.MASTER,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400219 deviceService.getRole(DID1));
Brian Stanke86914282016-05-25 15:36:50 -0400220 }
221
222 /**
223 * Tests querying the ports of a device by null device identifier.
224 */
225 @Test(expected = NullPointerException.class)
226 public void testGetPortsByNullId() {
227 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
228 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
229 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
230
231 // test the getPorts() method using a null device identifier
232 deviceService.getPorts(null);
233 }
234
235 /**
236 * Tests querying the ports of a device by device identifier.
237 */
238 @Test
239 public void testGetPorts() {
240 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
241 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400242 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
243 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400244
245 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
246
Yoonseon Han6c603892016-09-01 11:52:21 -0700247 ConnectPoint cp = new ConnectPoint(virtualDevice.id(), PortNumber.portNumber(1));
Brian Stanke86914282016-05-25 15:36:50 -0400248
Yoonseon Han6c603892016-09-01 11:52:21 -0700249 manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(1), cp);
250 manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), cp);
Brian Stanke86914282016-05-25 15:36:50 -0400251
252 // test the getPorts() method
253 assertEquals("The port set size did not match.", 2,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400254 deviceService.getPorts(DID1).size());
Brian Stanke86914282016-05-25 15:36:50 -0400255 assertEquals("The port set size did not match.", 0,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400256 deviceService.getPorts(DID2).size());
Brian Stanke86914282016-05-25 15:36:50 -0400257 }
258
259 /**
260 * Tests querying the port of a device by device identifier and port number.
261 */
262 @Test
263 public void testGetPort() {
264 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
265 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400266 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
267 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400268
269 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
270
Yoonseon Han6c603892016-09-01 11:52:21 -0700271 ConnectPoint cp = new ConnectPoint(virtualDevice.id(), PortNumber.portNumber(1));
Brian Stanke86914282016-05-25 15:36:50 -0400272
273 VirtualPort virtualPort1 = manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(),
Yoonseon Han6c603892016-09-01 11:52:21 -0700274 PortNumber.portNumber(1), cp);
275 manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), cp);
Brian Stanke86914282016-05-25 15:36:50 -0400276
277 // test the getPort() method
278 assertEquals("The port did not match as expected.", virtualPort1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400279 deviceService.getPort(DID1, PortNumber.portNumber(1)));
Brian Stanke86914282016-05-25 15:36:50 -0400280 assertNotEquals("The port did not match as expected.", virtualPort1,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400281 deviceService.getPort(DID1, PortNumber.portNumber(3)));
Brian Stanke86914282016-05-25 15:36:50 -0400282 }
283
284 /**
285 * Tests querying the port statistics of a device by null device identifier.
286 */
287 @Test(expected = NullPointerException.class)
288 public void testGetPortsStatisticsByNullId() {
289 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
290 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
291 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
292
293 // test the getPortStatistics() method using a null device identifier
294 deviceService.getPortStatistics(null);
295 }
296
297 /**
298 * Tests querying the port statistics of a device by device identifier.
299 */
300 @Test
301 public void testGetPortStatistics() {
302 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
303 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400304 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
305 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400306
307 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
308
309 // test the getPortStatistics() method
310 assertEquals("The port statistics set size did not match.", 0,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400311 deviceService.getPortStatistics(DID1).size());
Brian Stanke86914282016-05-25 15:36:50 -0400312 }
313
314 /**
315 * Tests querying the port delta statistics of a device by null device identifier.
316 */
317 @Test(expected = NullPointerException.class)
318 public void testGetPortsDeltaStatisticsByNullId() {
319 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
320 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
321 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
322
323 // test the getPortDeltaStatistics() method using a null device identifier
324 deviceService.getPortDeltaStatistics(null);
325 }
326
327 /**
328 * Tests querying the port delta statistics of a device by device identifier.
329 */
330 @Test
331 public void testGetPortDeltaStatistics() {
332 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
333 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400334 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork.id(), DID1);
335 manager.createVirtualDevice(virtualNetwork.id(), DID2);
Brian Stanke86914282016-05-25 15:36:50 -0400336
337 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
338
339 // test the getPortDeltaStatistics() method
340 assertEquals("The port delta statistics set size did not match.", 0,
Brian Stanke8e9f8d12016-06-08 14:48:33 -0400341 deviceService.getPortDeltaStatistics(DID1).size());
Brian Stanke86914282016-05-25 15:36:50 -0400342 }
343
344 /**
Claudine Chiu465a2602017-03-17 18:33:36 -0400345 * Tests DeviceEvents received during virtual device/port addition and removal.
346 */
347 @Test
348 public void testDeviceEventsForAddRemovalDeviceAndPorts() throws TestUtils.TestUtilsException {
349 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
350 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
351
352 // add virtual device before virtual device manager is created
353 VirtualDevice device1 = manager.createVirtualDevice(virtualNetwork.id(), VDID1);
354 validateEvents(); // no DeviceEvent expected
355
356 testDirectory.add(EventDeliveryService.class, dispatcher);
357 DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
358
359 // virtual device manager is created; register DeviceEvent listener
360 deviceService.addListener(testListener);
361
362 // list to keep track of expected event types
363 List<DeviceEvent.Type> expectedEventTypes = new ArrayList<>();
364
365 // add virtual device
366 VirtualDevice device2 = manager.createVirtualDevice(virtualNetwork.id(), VDID2);
367 expectedEventTypes.add(DeviceEvent.Type.DEVICE_ADDED);
368
369 ConnectPoint cp = new ConnectPoint(PHYDID1, PortNumber.portNumber(1));
370
371 // add 2 virtual ports
372 manager.createVirtualPort(virtualNetwork.id(),
373 device2.id(), PortNumber.portNumber(1), cp);
374 expectedEventTypes.add(DeviceEvent.Type.PORT_ADDED);
375 manager.createVirtualPort(virtualNetwork.id(),
376 device2.id(), PortNumber.portNumber(2), cp);
377 expectedEventTypes.add(DeviceEvent.Type.PORT_ADDED);
378
379 // verify virtual ports were added
380 Set<VirtualPort> virtualPorts = manager.getVirtualPorts(virtualNetwork.id(), device2.id());
381 assertNotNull("The virtual port set should not be null", virtualPorts);
382 assertEquals("The virtual port set size did not match.", 2, virtualPorts.size());
383
384 // remove 2 virtual ports
385 for (VirtualPort virtualPort : virtualPorts) {
386 manager.removeVirtualPort(virtualNetwork.id(),
387 (DeviceId) virtualPort.element().id(), virtualPort.number());
388 expectedEventTypes.add(DeviceEvent.Type.PORT_REMOVED);
389 // attempt to remove the same virtual port again - no DeviceEvent.Type.PORT_REMOVED expected.
390 manager.removeVirtualPort(virtualNetwork.id(),
391 (DeviceId) virtualPort.element().id(), virtualPort.number());
392 }
393
394 // verify virtual ports were removed
395 virtualPorts = manager.getVirtualPorts(virtualNetwork.id(), device2.id());
396 assertTrue("The virtual port set should be empty.", virtualPorts.isEmpty());
397
398 // Add/remove one virtual port again.
399 VirtualPort virtualPort =
400 manager.createVirtualPort(virtualNetwork.id(), device2.id(),
401 PortNumber.portNumber(1), cp);
402 expectedEventTypes.add(DeviceEvent.Type.PORT_ADDED);
403
404 ConnectPoint newCp = new ConnectPoint(PHYDID3, PortNumber.portNumber(2));
405 manager.bindVirtualPort(virtualNetwork.id(), device2.id(),
406 PortNumber.portNumber(1), newCp);
407 expectedEventTypes.add(DeviceEvent.Type.PORT_UPDATED);
408
409 manager.removeVirtualPort(virtualNetwork.id(),
410 (DeviceId) virtualPort.element().id(), virtualPort.number());
411 expectedEventTypes.add(DeviceEvent.Type.PORT_REMOVED);
412
413 // verify no virtual ports remain
414 virtualPorts = manager.getVirtualPorts(virtualNetwork.id(), device2.id());
415 assertTrue("The virtual port set should be empty.", virtualPorts.isEmpty());
416
417 // remove virtual device
418 manager.removeVirtualDevice(virtualNetwork.id(), device2.id());
419 expectedEventTypes.add(DeviceEvent.Type.DEVICE_REMOVED);
420
421 // Validate that the events were all received in the correct order.
422 validateEvents((Enum[]) expectedEventTypes.toArray(
423 new DeviceEvent.Type[expectedEventTypes.size()]));
424
425 // cleanup
426 deviceService.removeListener(testListener);
427 }
428
429 /**
Brian Stanke86914282016-05-25 15:36:50 -0400430 * Core service test class.
431 */
432 private class TestCoreService extends CoreServiceAdapter {
433
434 @Override
435 public IdGenerator getIdGenerator(String topic) {
436 return new IdGenerator() {
437 private AtomicLong counter = new AtomicLong(0);
438
439 @Override
440 public long getNewId() {
441 return counter.getAndIncrement();
442 }
443 };
444 }
445 }
Claudine Chiu465a2602017-03-17 18:33:36 -0400446
447 /**
448 * Method to validate that the actual versus expected virtual network events were
449 * received correctly.
450 *
451 * @param types expected virtual network events.
452 */
453 private void validateEvents(Enum... types) {
454 TestTools.assertAfter(100, () -> {
455 int i = 0;
456 assertEquals("wrong events received", types.length, testListener.events.size());
457 for (Event event : testListener.events) {
458 assertEquals("incorrect event type", types[i], event.type());
459 i++;
460 }
461 testListener.events.clear();
462 });
463 }
464
465 /**
466 * Test listener class to receive device events.
467 */
468 private static class TestListener implements DeviceListener {
469
470 private List<DeviceEvent> events = Lists.newArrayList();
471
472 @Override
473 public void event(DeviceEvent event) {
474 events.add(event);
475 }
476 }
Brian Stanke86914282016-05-25 15:36:50 -0400477}