blob: df5ef28065dfbcc7a11c7347c1da3013baeda46a [file] [log] [blame]
Brian Stanke0e5c94e2016-03-08 11:20:04 -05001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Brian Stanke0e5c94e2016-03-08 11:20:04 -05003 *
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.Lists;
20import org.junit.After;
21import org.junit.Before;
22import org.junit.Test;
23import org.onlab.junit.TestTools;
24import org.onlab.junit.TestUtils;
25import org.onosproject.common.event.impl.TestEventDispatcher;
26import org.onosproject.core.CoreService;
27import org.onosproject.core.CoreServiceAdapter;
28import org.onosproject.core.IdGenerator;
29import org.onosproject.event.Event;
Brian Stanke0e5c94e2016-03-08 11:20:04 -050030import org.onosproject.incubator.net.virtual.DefaultVirtualNetwork;
31import org.onosproject.incubator.net.virtual.NetworkId;
32import org.onosproject.incubator.net.virtual.TenantId;
33import org.onosproject.incubator.net.virtual.VirtualDevice;
Brian Stanke7a81b532016-06-14 15:43:51 -040034import org.onosproject.incubator.net.virtual.VirtualHost;
Brian Stanke0e5c94e2016-03-08 11:20:04 -050035import org.onosproject.incubator.net.virtual.VirtualLink;
36import org.onosproject.incubator.net.virtual.VirtualNetwork;
37import org.onosproject.incubator.net.virtual.VirtualNetworkEvent;
38import org.onosproject.incubator.net.virtual.VirtualNetworkListener;
39import org.onosproject.incubator.net.virtual.VirtualNetworkService;
40import org.onosproject.incubator.net.virtual.VirtualPort;
41import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
42import org.onosproject.net.ConnectPoint;
43import org.onosproject.net.DefaultPort;
44import org.onosproject.net.DeviceId;
45import org.onosproject.net.NetTestTools;
46import org.onosproject.net.Port;
47import org.onosproject.net.PortNumber;
Brian Stanke7a81b532016-06-14 15:43:51 -040048import org.onosproject.net.TestDeviceParams;
Brian Stanke0e5c94e2016-03-08 11:20:04 -050049import org.onosproject.store.service.TestStorageService;
50
51import java.util.Collection;
52import java.util.List;
53import java.util.Set;
54import java.util.concurrent.atomic.AtomicLong;
55
56import static org.junit.Assert.*;
57
58/**
59 * Junit tests for VirtualNetworkManager.
60 */
Brian Stanke7a81b532016-06-14 15:43:51 -040061public class VirtualNetworkManagerTest extends TestDeviceParams {
Brian Stanke86914282016-05-25 15:36:50 -040062 private final String tenantIdValue1 = "TENANT_ID1";
63 private final String tenantIdValue2 = "TENANT_ID2";
Brian Stanke0e5c94e2016-03-08 11:20:04 -050064
65 private VirtualNetworkManager manager;
66 private VirtualNetworkService virtualNetworkManagerService;
67 private DistributedVirtualNetworkStore virtualNetworkManagerStore;
68 private CoreService coreService;
Brian Stanke7a81b532016-06-14 15:43:51 -040069 private TestListener listener = new TestListener();
Brian Stanke0e5c94e2016-03-08 11:20:04 -050070
71 @Before
72 public void setUp() throws Exception {
73 virtualNetworkManagerStore = new DistributedVirtualNetworkStore();
74
75 coreService = new TestCoreService();
76 virtualNetworkManagerStore.setCoreService(coreService);
77 TestUtils.setField(coreService, "coreService", new TestCoreService());
78 TestUtils.setField(virtualNetworkManagerStore, "storageService", new TestStorageService());
79 virtualNetworkManagerStore.activate();
80
81 manager = new VirtualNetworkManager();
82 manager.store = virtualNetworkManagerStore;
83 manager.addListener(listener);
84 NetTestTools.injectEventDispatcher(manager, new TestEventDispatcher());
85 manager.activate();
86 virtualNetworkManagerService = manager;
Brian Stanke0e5c94e2016-03-08 11:20:04 -050087 }
88
89 @After
90 public void tearDown() {
91 virtualNetworkManagerStore.deactivate();
92 manager.removeListener(listener);
93 manager.deactivate();
94 NetTestTools.injectEventDispatcher(manager, null);
95 }
96
97 /**
98 * Tests registering a null tenant id.
99 */
100 @Test(expected = NullPointerException.class)
101 public void testRegisterNullTenantId() {
102 manager.registerTenantId(null);
103 }
104
105 /**
106 * Tests registering/unregistering a tenant id.
107 */
108 @Test
109 public void testRegisterUnregisterTenantId() {
110 manager.unregisterTenantId(TenantId.tenantId(tenantIdValue1));
111 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
112 manager.registerTenantId(TenantId.tenantId(tenantIdValue2));
113 Collection<TenantId> tenantIdCollection = manager.getTenantIds();
114 assertEquals("The tenantId set size did not match.", 2, tenantIdCollection.size());
115
116 manager.unregisterTenantId(TenantId.tenantId(tenantIdValue1));
117 manager.unregisterTenantId(TenantId.tenantId(tenantIdValue2));
118 tenantIdCollection = manager.getTenantIds();
119 assertTrue("The tenantId set should be empty.", tenantIdCollection.isEmpty());
120
121 // Validate that the events were all received in the correct order.
122 validateEvents(VirtualNetworkEvent.Type.TENANT_UNREGISTERED, VirtualNetworkEvent.Type.TENANT_REGISTERED,
123 VirtualNetworkEvent.Type.TENANT_REGISTERED, VirtualNetworkEvent.Type.TENANT_UNREGISTERED,
124 VirtualNetworkEvent.Type.TENANT_UNREGISTERED);
125 }
126
127 /**
128 * Tests adding a null virtual network.
129 */
130 @Test(expected = NullPointerException.class)
131 public void testCreateNullVirtualNetwork() {
132 manager.createVirtualNetwork(null);
133 }
134
135 /**
136 * Tests add and remove of virtual networks.
137 */
138 @Test
139 public void testAddRemoveVirtualNetwork() {
140 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
141 manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
142 manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
143 Set<VirtualNetwork> virtualNetworks = manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1));
144 assertNotNull("The virtual network set should not be null", virtualNetworks);
145 assertEquals("The virtual network set size did not match.", 2, virtualNetworks.size());
146
Brian Stanke5df14472016-03-11 19:34:38 -0500147 int remaining = virtualNetworks.size();
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500148 for (VirtualNetwork virtualNetwork : virtualNetworks) {
149 manager.removeVirtualNetwork(virtualNetwork.id());
Brian Stanke5df14472016-03-11 19:34:38 -0500150 assertEquals("The expected virtual network size does not match",
151 --remaining, manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1)).size());
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500152 // attempt to remove the same virtual network again.
153 manager.removeVirtualNetwork(virtualNetwork.id());
Brian Stanke5df14472016-03-11 19:34:38 -0500154 assertEquals("The expected virtual network size does not match",
155 remaining, manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1)).size());
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500156 }
157 virtualNetworks = manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1));
158 assertTrue("The virtual network set should be empty.", virtualNetworks.isEmpty());
159
Brian Stanke5df14472016-03-11 19:34:38 -0500160 // Create/remove a virtual network.
161 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
162 manager.removeVirtualNetwork(virtualNetwork.id());
163
164 virtualNetworks = manager.getVirtualNetworks(TenantId.tenantId(tenantIdValue1));
165 assertTrue("The virtual network set should be empty.", virtualNetworks.isEmpty());
166
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500167 // Validate that the events were all received in the correct order.
168 validateEvents(VirtualNetworkEvent.Type.TENANT_REGISTERED, VirtualNetworkEvent.Type.NETWORK_ADDED,
169 VirtualNetworkEvent.Type.NETWORK_ADDED, VirtualNetworkEvent.Type.NETWORK_REMOVED,
Brian Stanke5df14472016-03-11 19:34:38 -0500170 VirtualNetworkEvent.Type.NETWORK_REMOVED, VirtualNetworkEvent.Type.NETWORK_ADDED,
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500171 VirtualNetworkEvent.Type.NETWORK_REMOVED);
172 }
173
174 /**
175 * Tests adding a null virtual device.
176 */
177 @Test(expected = NullPointerException.class)
178 public void testCreateNullVirtualDevice() {
179 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
180 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
181
182 manager.createVirtualDevice(virtualNetwork.id(), null);
183 }
184
185 /**
186 * Tests adding a virtual device where no virtual network exists.
187 */
188 @Test(expected = IllegalStateException.class)
189 public void testCreateVirtualDeviceWithNoNetwork() {
190 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
191 VirtualNetwork virtualNetwork = new DefaultVirtualNetwork(NetworkId.NONE, TenantId.tenantId(tenantIdValue1));
192
Brian Stanke7a81b532016-06-14 15:43:51 -0400193 manager.createVirtualDevice(virtualNetwork.id(), DID1);
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500194 }
195
196 /**
197 * Tests add and remove of virtual devices.
198 */
199 @Test
200 public void testAddRemoveVirtualDevice() {
201 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
202 VirtualNetwork virtualNetwork1 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
203 VirtualNetwork virtualNetwork2 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke7a81b532016-06-14 15:43:51 -0400204 manager.createVirtualDevice(virtualNetwork1.id(), DID1);
205 manager.createVirtualDevice(virtualNetwork2.id(), DID2);
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500206
207 Set<VirtualDevice> virtualDevices1 = manager.getVirtualDevices(virtualNetwork1.id());
208 assertNotNull("The virtual device set should not be null", virtualDevices1);
209 assertEquals("The virtual device set size did not match.", 1, virtualDevices1.size());
210
211 Set<VirtualDevice> virtualDevices2 = manager.getVirtualDevices(virtualNetwork2.id());
212 assertNotNull("The virtual device set should not be null", virtualDevices2);
213 assertEquals("The virtual device set size did not match.", 1, virtualDevices2.size());
214
215 for (VirtualDevice virtualDevice : virtualDevices1) {
216 manager.removeVirtualDevice(virtualNetwork1.id(), virtualDevice.id());
217 // attempt to remove the same virtual device again.
218 manager.removeVirtualDevice(virtualNetwork1.id(), virtualDevice.id());
219 }
220 virtualDevices1 = manager.getVirtualDevices(virtualNetwork1.id());
221 assertTrue("The virtual device set should be empty.", virtualDevices1.isEmpty());
222
Brian Stanke5df14472016-03-11 19:34:38 -0500223 // Add/remove the virtual device again.
Brian Stanke7a81b532016-06-14 15:43:51 -0400224 VirtualDevice virtualDevice = manager.createVirtualDevice(virtualNetwork1.id(), DID1);
Brian Stanke5df14472016-03-11 19:34:38 -0500225 manager.removeVirtualDevice(virtualDevice.networkId(), virtualDevice.id());
226 virtualDevices1 = manager.getVirtualDevices(virtualNetwork1.id());
227 assertTrue("The virtual device set should be empty.", virtualDevices1.isEmpty());
228
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500229 // Validate that the events were all received in the correct order.
230 validateEvents(VirtualNetworkEvent.Type.TENANT_REGISTERED, VirtualNetworkEvent.Type.NETWORK_ADDED,
231 VirtualNetworkEvent.Type.NETWORK_ADDED);
232 }
233
234 /**
Brian Stanke7a81b532016-06-14 15:43:51 -0400235 * Tests adding a null virtual host.
236 */
237 @Test(expected = NullPointerException.class)
238 public void testCreateNullVirtualHost() {
239 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
240 VirtualNetwork virtualNetwork = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
241
242 manager.createVirtualHost(virtualNetwork.id(), null, null, null, null, null);
243 }
244
245 /**
246 * Tests adding a virtual host where no virtual network exists.
247 */
248 @Test(expected = IllegalStateException.class)
249 public void testCreateVirtualHostWithNoNetwork() {
250 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
251 VirtualNetwork virtualNetwork = new DefaultVirtualNetwork(NetworkId.NONE, TenantId.tenantId(tenantIdValue1));
252
253 manager.createVirtualHost(virtualNetwork.id(), HID1, null, null, null, null);
254 }
255
256 /**
257 * Tests add and remove of virtual hosts.
258 */
259 @Test
260 public void testAddRemoveVirtualHost() {
261 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
262 VirtualNetwork virtualNetwork1 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
263 VirtualNetwork virtualNetwork2 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
264 manager.createVirtualHost(virtualNetwork1.id(), HID1, MAC1, VLAN1, LOC1, IPSET1);
265 manager.createVirtualHost(virtualNetwork2.id(), HID2, MAC2, VLAN2, LOC2, IPSET2);
266
267 Set<VirtualHost> virtualHosts1 = manager.getVirtualHosts(virtualNetwork1.id());
268 assertNotNull("The virtual host set should not be null", virtualHosts1);
269 assertEquals("The virtual host set size did not match.", 1, virtualHosts1.size());
270
271 Set<VirtualHost> virtualHosts2 = manager.getVirtualHosts(virtualNetwork2.id());
272 assertNotNull("The virtual host set should not be null", virtualHosts2);
273 assertEquals("The virtual host set size did not match.", 1, virtualHosts2.size());
274
275 for (VirtualHost virtualHost : virtualHosts1) {
276 manager.removeVirtualHost(virtualNetwork1.id(), virtualHost.id());
277 // attempt to remove the same virtual host again.
278 manager.removeVirtualHost(virtualNetwork1.id(), virtualHost.id());
279 }
280 virtualHosts1 = manager.getVirtualHosts(virtualNetwork1.id());
281 assertTrue("The virtual host set should be empty.", virtualHosts1.isEmpty());
282
283 // Add/remove the virtual host again.
284 VirtualHost virtualHost = manager.createVirtualHost(virtualNetwork1.id(), HID1, MAC1, VLAN1, LOC1, IPSET1);
285 manager.removeVirtualHost(virtualHost.networkId(), virtualHost.id());
286 virtualHosts1 = manager.getVirtualHosts(virtualNetwork1.id());
287 assertTrue("The virtual host set should be empty.", virtualHosts1.isEmpty());
288 }
289
290 /**
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500291 * Tests add and remove of virtual links.
292 */
293 @Test
294 public void testAddRemoveVirtualLink() {
295 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
296 VirtualNetwork virtualNetwork1 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
297 VirtualDevice srcVirtualDevice =
Brian Stanke7a81b532016-06-14 15:43:51 -0400298 manager.createVirtualDevice(virtualNetwork1.id(), DID1);
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500299 VirtualDevice dstVirtualDevice =
Brian Stanke7a81b532016-06-14 15:43:51 -0400300 manager.createVirtualDevice(virtualNetwork1.id(), DID2);
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500301 ConnectPoint src = new ConnectPoint(srcVirtualDevice.id(), PortNumber.portNumber(1));
302 ConnectPoint dst = new ConnectPoint(dstVirtualDevice.id(), PortNumber.portNumber(2));
Brian Stanke9a108972016-04-11 15:25:17 -0400303 manager.createVirtualLink(virtualNetwork1.id(), src, dst);
304 manager.createVirtualLink(virtualNetwork1.id(), dst, src);
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500305
306 Set<VirtualLink> virtualLinks = manager.getVirtualLinks(virtualNetwork1.id());
307 assertNotNull("The virtual link set should not be null", virtualLinks);
308 assertEquals("The virtual link set size did not match.", 2, virtualLinks.size());
309
310 for (VirtualLink virtualLink : virtualLinks) {
311 manager.removeVirtualLink(virtualLink.networkId(), virtualLink.src(), virtualLink.dst());
312 // attempt to remove the same virtual link again.
313 manager.removeVirtualLink(virtualLink.networkId(), virtualLink.src(), virtualLink.dst());
314 }
315 virtualLinks = manager.getVirtualLinks(virtualNetwork1.id());
316 assertTrue("The virtual link set should be empty.", virtualLinks.isEmpty());
Brian Stanke5df14472016-03-11 19:34:38 -0500317
318 // Add/remove the virtual link again.
Brian Stanke9a108972016-04-11 15:25:17 -0400319 VirtualLink virtualLink = manager.createVirtualLink(virtualNetwork1.id(), src, dst);
Brian Stanke5df14472016-03-11 19:34:38 -0500320 manager.removeVirtualLink(virtualLink.networkId(), virtualLink.src(), virtualLink.dst());
321 virtualLinks = manager.getVirtualLinks(virtualNetwork1.id());
322 assertTrue("The virtual link set should be empty.", virtualLinks.isEmpty());
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500323 }
324
325 /**
Brian Stanke9a108972016-04-11 15:25:17 -0400326 * Tests adding the same virtual link twice.
327 */
328 @Test(expected = IllegalStateException.class)
329 public void testAddSameVirtualLink() {
330 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
331 VirtualNetwork virtualNetwork1 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
332 VirtualDevice srcVirtualDevice =
Brian Stanke7a81b532016-06-14 15:43:51 -0400333 manager.createVirtualDevice(virtualNetwork1.id(), DID1);
Brian Stanke9a108972016-04-11 15:25:17 -0400334 VirtualDevice dstVirtualDevice =
Brian Stanke7a81b532016-06-14 15:43:51 -0400335 manager.createVirtualDevice(virtualNetwork1.id(), DID2);
Brian Stanke9a108972016-04-11 15:25:17 -0400336 ConnectPoint src = new ConnectPoint(srcVirtualDevice.id(), PortNumber.portNumber(1));
337 ConnectPoint dst = new ConnectPoint(dstVirtualDevice.id(), PortNumber.portNumber(2));
338 manager.createVirtualLink(virtualNetwork1.id(), src, dst);
339 manager.createVirtualLink(virtualNetwork1.id(), src, dst);
340 }
341
342 /**
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500343 * Tests add and remove of virtual ports.
344 */
345 @Test
346 public void testAddRemoveVirtualPort() {
347 manager.registerTenantId(TenantId.tenantId(tenantIdValue1));
348 VirtualNetwork virtualNetwork1 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
Brian Stanke5df14472016-03-11 19:34:38 -0500349 VirtualDevice virtualDevice =
Brian Stanke7a81b532016-06-14 15:43:51 -0400350 manager.createVirtualDevice(virtualNetwork1.id(), DID1);
Brian Stanke5df14472016-03-11 19:34:38 -0500351 Port port = new DefaultPort(virtualDevice, PortNumber.portNumber(1), true);
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500352
Brian Stanke5df14472016-03-11 19:34:38 -0500353 manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(), PortNumber.portNumber(1), port);
354 manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(), PortNumber.portNumber(2), port);
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500355
Brian Stanke5df14472016-03-11 19:34:38 -0500356 Set<VirtualPort> virtualPorts = manager.getVirtualPorts(virtualNetwork1.id(), virtualDevice.id());
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500357 assertNotNull("The virtual port set should not be null", virtualPorts);
358 assertEquals("The virtual port set size did not match.", 2, virtualPorts.size());
359
Brian Stanke5df14472016-03-11 19:34:38 -0500360
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500361 for (VirtualPort virtualPort : virtualPorts) {
362 manager.removeVirtualPort(virtualNetwork1.id(),
363 (DeviceId) virtualPort.element().id(), virtualPort.number());
364 // attempt to remove the same virtual port again.
365 manager.removeVirtualPort(virtualNetwork1.id(),
366 (DeviceId) virtualPort.element().id(), virtualPort.number());
367 }
Brian Stanke5df14472016-03-11 19:34:38 -0500368 virtualPorts = manager.getVirtualPorts(virtualNetwork1.id(), virtualDevice.id());
369 assertTrue("The virtual port set should be empty.", virtualPorts.isEmpty());
370
371 // Add/remove the virtual port again.
372 VirtualPort virtualPort = manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(),
373 PortNumber.portNumber(1), port);
374 manager.removeVirtualPort(virtualNetwork1.id(), (DeviceId) virtualPort.element().id(), virtualPort.number());
375 virtualPorts = manager.getVirtualPorts(virtualNetwork1.id(), virtualDevice.id());
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500376 assertTrue("The virtual port set should be empty.", virtualPorts.isEmpty());
377 }
378
379 /**
380 * Method to validate that the actual versus expected virtual network events were
381 * received correctly.
382 *
383 * @param types expected virtual network events.
384 */
385 private void validateEvents(Enum... types) {
386 TestTools.assertAfter(100, () -> {
387 int i = 0;
388 assertEquals("wrong events received", types.length, listener.events.size());
389 for (Event event : listener.events) {
390 assertEquals("incorrect event type", types[i], event.type());
391 i++;
392 }
393 listener.events.clear();
394 });
395 }
396
397 /**
398 * Test listener class to receive virtual network events.
399 */
400 private static class TestListener implements VirtualNetworkListener {
401
Brian Stanke7a81b532016-06-14 15:43:51 -0400402 private List<VirtualNetworkEvent> events = Lists.newArrayList();
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500403
404 @Override
405 public void event(VirtualNetworkEvent event) {
406 events.add(event);
407 }
408
409 }
410
Brian Stanke5df14472016-03-11 19:34:38 -0500411 /**
412 * Core service test class.
413 */
Brian Stanke0e5c94e2016-03-08 11:20:04 -0500414 private class TestCoreService extends CoreServiceAdapter {
415
416 @Override
417 public IdGenerator getIdGenerator(String topic) {
418 return new IdGenerator() {
419 private AtomicLong counter = new AtomicLong(0);
420
421 @Override
422 public long getNewId() {
423 return counter.getAndIncrement();
424 }
425 };
426 }
427 }
428}