Committed by
Jonathan Hart
Add IPv6 HostManager test.
Change-Id: I84a54b3635fd5b7a2a591f9bcf54cb3f7bceaddb
Showing
1 changed file
with
176 additions
and
0 deletions
... | @@ -70,11 +70,17 @@ public class HostManagerTest { | ... | @@ -70,11 +70,17 @@ public class HostManagerTest { |
70 | private static final VlanId VLAN2 = VlanId.vlanId((short) 2); | 70 | private static final VlanId VLAN2 = VlanId.vlanId((short) 2); |
71 | private static final MacAddress MAC1 = MacAddress.valueOf("00:00:11:00:00:01"); | 71 | private static final MacAddress MAC1 = MacAddress.valueOf("00:00:11:00:00:01"); |
72 | private static final MacAddress MAC2 = MacAddress.valueOf("00:00:22:00:00:02"); | 72 | private static final MacAddress MAC2 = MacAddress.valueOf("00:00:22:00:00:02"); |
73 | + private static final MacAddress MAC3 = MacAddress.valueOf("00:00:33:00:00:03"); | ||
74 | + private static final MacAddress MAC4 = MacAddress.valueOf("00:00:44:00:00:04"); | ||
73 | private static final HostId HID1 = HostId.hostId(MAC1, VLAN1); | 75 | private static final HostId HID1 = HostId.hostId(MAC1, VLAN1); |
74 | private static final HostId HID2 = HostId.hostId(MAC2, VLAN1); | 76 | private static final HostId HID2 = HostId.hostId(MAC2, VLAN1); |
77 | + private static final HostId HID3 = HostId.hostId(MAC3, VLAN1); | ||
78 | + private static final HostId HID4 = HostId.hostId(MAC4, VLAN1); | ||
75 | 79 | ||
76 | private static final IpAddress IP1 = IpAddress.valueOf("10.0.0.1"); | 80 | private static final IpAddress IP1 = IpAddress.valueOf("10.0.0.1"); |
77 | private static final IpAddress IP2 = IpAddress.valueOf("10.0.0.2"); | 81 | private static final IpAddress IP2 = IpAddress.valueOf("10.0.0.2"); |
82 | + private static final IpAddress IP3 = IpAddress.valueOf("2001::1"); | ||
83 | + private static final IpAddress IP4 = IpAddress.valueOf("2001::2"); | ||
78 | 84 | ||
79 | private static final DeviceId DID1 = DeviceId.deviceId("of:001"); | 85 | private static final DeviceId DID1 = DeviceId.deviceId("of:001"); |
80 | private static final DeviceId DID2 = DeviceId.deviceId("of:002"); | 86 | private static final DeviceId DID2 = DeviceId.deviceId("of:002"); |
... | @@ -94,6 +100,15 @@ public class HostManagerTest { | ... | @@ -94,6 +100,15 @@ public class HostManagerTest { |
94 | private static final InterfaceIpAddress IA3 = | 100 | private static final InterfaceIpAddress IA3 = |
95 | new InterfaceIpAddress(IpAddress.valueOf("10.3.3.3"), | 101 | new InterfaceIpAddress(IpAddress.valueOf("10.3.3.3"), |
96 | IpPrefix.valueOf("10.3.3.0/24")); | 102 | IpPrefix.valueOf("10.3.3.0/24")); |
103 | + private static final InterfaceIpAddress IA4 = | ||
104 | + new InterfaceIpAddress(IpAddress.valueOf("2001:100::1"), | ||
105 | + IpPrefix.valueOf("2001:100::/56")); | ||
106 | + private static final InterfaceIpAddress IA5 = | ||
107 | + new InterfaceIpAddress(IpAddress.valueOf("2001:200::1"), | ||
108 | + IpPrefix.valueOf("2001:200::/48")); | ||
109 | + private static final InterfaceIpAddress IA6 = | ||
110 | + new InterfaceIpAddress(IpAddress.valueOf("2001:300::1"), | ||
111 | + IpPrefix.valueOf("2001:300::/56")); | ||
97 | 112 | ||
98 | private HostManager mgr; | 113 | private HostManager mgr; |
99 | 114 | ||
... | @@ -169,6 +184,28 @@ public class HostManagerTest { | ... | @@ -169,6 +184,28 @@ public class HostManagerTest { |
169 | } | 184 | } |
170 | 185 | ||
171 | @Test | 186 | @Test |
187 | + public void hostDetectedIPv6() { | ||
188 | + assertNull("host shouldn't be found", mgr.getHost(HID3)); | ||
189 | + | ||
190 | + // host addition | ||
191 | + detect(HID3, MAC3, VLAN1, LOC1, IP3); | ||
192 | + assertEquals("exactly one should be found", 1, mgr.getHostCount()); | ||
193 | + detect(HID4, MAC4, VLAN2, LOC2, IP3); | ||
194 | + assertEquals("two hosts should be found", 2, mgr.getHostCount()); | ||
195 | + validateEvents(HOST_ADDED, HOST_ADDED); | ||
196 | + | ||
197 | + // host motion | ||
198 | + detect(HID3, MAC3, VLAN1, LOC2, IP3); | ||
199 | + validateEvents(HOST_MOVED); | ||
200 | + assertEquals("only two hosts should be found", 2, mgr.getHostCount()); | ||
201 | + | ||
202 | + // host update | ||
203 | + detect(HID3, MAC3, VLAN1, LOC2, IP4); | ||
204 | + validateEvents(HOST_UPDATED); | ||
205 | + assertEquals("only two hosts should be found", 2, mgr.getHostCount()); | ||
206 | + } | ||
207 | + | ||
208 | + @Test | ||
172 | public void hostVanished() { | 209 | public void hostVanished() { |
173 | detect(HID1, MAC1, VLAN1, LOC1, IP1); | 210 | detect(HID1, MAC1, VLAN1, LOC1, IP1); |
174 | providerService.hostVanished(HID1); | 211 | providerService.hostVanished(HID1); |
... | @@ -177,6 +214,15 @@ public class HostManagerTest { | ... | @@ -177,6 +214,15 @@ public class HostManagerTest { |
177 | assertNull("host should have been removed", mgr.getHost(HID1)); | 214 | assertNull("host should have been removed", mgr.getHost(HID1)); |
178 | } | 215 | } |
179 | 216 | ||
217 | + @Test | ||
218 | + public void hostVanishedIPv6() { | ||
219 | + detect(HID3, MAC3, VLAN1, LOC1, IP3); | ||
220 | + providerService.hostVanished(HID3); | ||
221 | + validateEvents(HOST_ADDED, HOST_REMOVED); | ||
222 | + | ||
223 | + assertNull("host should have been removed", mgr.getHost(HID3)); | ||
224 | + } | ||
225 | + | ||
180 | private void validateHosts( | 226 | private void validateHosts( |
181 | String msg, Iterable<Host> hosts, HostId... ids) { | 227 | String msg, Iterable<Host> hosts, HostId... ids) { |
182 | Set<HostId> hids = Sets.newHashSet(ids); | 228 | Set<HostId> hids = Sets.newHashSet(ids); |
... | @@ -199,6 +245,19 @@ public class HostManagerTest { | ... | @@ -199,6 +245,19 @@ public class HostManagerTest { |
199 | assertTrue("incorrect host location", mgr.getConnectedHosts(DID2).isEmpty()); | 245 | assertTrue("incorrect host location", mgr.getConnectedHosts(DID2).isEmpty()); |
200 | } | 246 | } |
201 | 247 | ||
248 | + @Test | ||
249 | + public void getHostsIPv6() { | ||
250 | + detect(HID3, MAC3, VLAN1, LOC1, IP3); | ||
251 | + detect(HID4, MAC4, VLAN1, LOC2, IP4); | ||
252 | + | ||
253 | + validateHosts("host not properly stored", mgr.getHosts(), HID3, HID4); | ||
254 | + validateHosts("can't get hosts by VLAN", mgr.getHostsByVlan(VLAN1), HID3, HID4); | ||
255 | + validateHosts("can't get hosts by MAC", mgr.getHostsByMac(MAC3), HID3); | ||
256 | + validateHosts("can't get hosts by IP", mgr.getHostsByIp(IP3), HID3); | ||
257 | + validateHosts("can't get hosts by location", mgr.getConnectedHosts(LOC1), HID3); | ||
258 | + assertTrue("incorrect host location", mgr.getConnectedHosts(DID2).isEmpty()); | ||
259 | + } | ||
260 | + | ||
202 | private static class TestHostProvider extends AbstractProvider | 261 | private static class TestHostProvider extends AbstractProvider |
203 | implements HostProvider { | 262 | implements HostProvider { |
204 | 263 | ||
... | @@ -263,6 +322,40 @@ public class HostManagerTest { | ... | @@ -263,6 +322,40 @@ public class HostManagerTest { |
263 | } | 322 | } |
264 | 323 | ||
265 | @Test | 324 | @Test |
325 | + public void bindAddressesToPortIPv6() { | ||
326 | + PortAddresses add1 = | ||
327 | + new PortAddresses(CP1, Sets.newHashSet(IA4, IA5), MAC3, VlanId.NONE); | ||
328 | + | ||
329 | + mgr.bindAddressesToPort(add1); | ||
330 | + Set<PortAddresses> storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
331 | + | ||
332 | + assertEquals(1, storedAddresses.size()); | ||
333 | + assertTrue(storedAddresses.contains(add1)); | ||
334 | + | ||
335 | + // Add some more addresses and check that they're added correctly | ||
336 | + PortAddresses add2 = | ||
337 | + new PortAddresses(CP1, Sets.newHashSet(IA6), null, | ||
338 | + VlanId.vlanId((short) 2)); | ||
339 | + | ||
340 | + mgr.bindAddressesToPort(add2); | ||
341 | + storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
342 | + | ||
343 | + assertEquals(2, storedAddresses.size()); | ||
344 | + assertTrue(storedAddresses.contains(add1)); | ||
345 | + assertTrue(storedAddresses.contains(add2)); | ||
346 | + | ||
347 | + PortAddresses add3 = new PortAddresses(CP1, null, MAC4, VlanId.NONE); | ||
348 | + | ||
349 | + mgr.bindAddressesToPort(add3); | ||
350 | + storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
351 | + | ||
352 | + assertEquals(3, storedAddresses.size()); | ||
353 | + assertTrue(storedAddresses.contains(add1)); | ||
354 | + assertTrue(storedAddresses.contains(add2)); | ||
355 | + assertTrue(storedAddresses.contains(add3)); | ||
356 | + } | ||
357 | + | ||
358 | + @Test | ||
266 | public void unbindAddressesFromPort() { | 359 | public void unbindAddressesFromPort() { |
267 | PortAddresses add1 = | 360 | PortAddresses add1 = |
268 | new PortAddresses(CP1, Sets.newHashSet(IA1, IA2), MAC1, VlanId.NONE); | 361 | new PortAddresses(CP1, Sets.newHashSet(IA1, IA2), MAC1, VlanId.NONE); |
... | @@ -291,6 +384,34 @@ public class HostManagerTest { | ... | @@ -291,6 +384,34 @@ public class HostManagerTest { |
291 | } | 384 | } |
292 | 385 | ||
293 | @Test | 386 | @Test |
387 | + public void unbindAddressesFromPortIPv6() { | ||
388 | + PortAddresses add1 = | ||
389 | + new PortAddresses(CP1, Sets.newHashSet(IA4, IA5), MAC3, VlanId.NONE); | ||
390 | + | ||
391 | + mgr.bindAddressesToPort(add1); | ||
392 | + Set<PortAddresses> storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
393 | + | ||
394 | + assertEquals(1, storedAddresses.size()); | ||
395 | + assertTrue(storedAddresses.contains(add1)); | ||
396 | + | ||
397 | + PortAddresses rem1 = | ||
398 | + new PortAddresses(CP1, Sets.newHashSet(IA4), null, VlanId.NONE); | ||
399 | + | ||
400 | + mgr.unbindAddressesFromPort(rem1); | ||
401 | + storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
402 | + | ||
403 | + // It shouldn't have been removed because it didn't match the originally | ||
404 | + // submitted address object | ||
405 | + assertEquals(1, storedAddresses.size()); | ||
406 | + assertTrue(storedAddresses.contains(add1)); | ||
407 | + | ||
408 | + mgr.unbindAddressesFromPort(add1); | ||
409 | + storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
410 | + | ||
411 | + assertTrue(storedAddresses.isEmpty()); | ||
412 | + } | ||
413 | + | ||
414 | + @Test | ||
294 | public void clearAddresses() { | 415 | public void clearAddresses() { |
295 | PortAddresses add1 = | 416 | PortAddresses add1 = |
296 | new PortAddresses(CP1, Sets.newHashSet(IA1, IA2), MAC1, VlanId.NONE); | 417 | new PortAddresses(CP1, Sets.newHashSet(IA1, IA2), MAC1, VlanId.NONE); |
... | @@ -308,6 +429,23 @@ public class HostManagerTest { | ... | @@ -308,6 +429,23 @@ public class HostManagerTest { |
308 | } | 429 | } |
309 | 430 | ||
310 | @Test | 431 | @Test |
432 | + public void clearAddressesIPv6() { | ||
433 | + PortAddresses add1 = | ||
434 | + new PortAddresses(CP1, Sets.newHashSet(IA4, IA5), MAC3, VlanId.NONE); | ||
435 | + | ||
436 | + mgr.bindAddressesToPort(add1); | ||
437 | + Set<PortAddresses> storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
438 | + | ||
439 | + assertEquals(1, storedAddresses.size()); | ||
440 | + assertTrue(storedAddresses.contains(add1)); | ||
441 | + | ||
442 | + mgr.clearAddresses(CP1); | ||
443 | + storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
444 | + | ||
445 | + assertTrue(storedAddresses.isEmpty()); | ||
446 | + } | ||
447 | + | ||
448 | + @Test | ||
311 | public void getAddressBindingsForPort() { | 449 | public void getAddressBindingsForPort() { |
312 | PortAddresses add1 = | 450 | PortAddresses add1 = |
313 | new PortAddresses(CP1, Sets.newHashSet(IA1, IA2), MAC1, VlanId.NONE); | 451 | new PortAddresses(CP1, Sets.newHashSet(IA1, IA2), MAC1, VlanId.NONE); |
... | @@ -320,6 +458,18 @@ public class HostManagerTest { | ... | @@ -320,6 +458,18 @@ public class HostManagerTest { |
320 | } | 458 | } |
321 | 459 | ||
322 | @Test | 460 | @Test |
461 | + public void getAddressBindingsForPortIPv6() { | ||
462 | + PortAddresses add1 = | ||
463 | + new PortAddresses(CP1, Sets.newHashSet(IA4, IA5), MAC3, VlanId.NONE); | ||
464 | + | ||
465 | + mgr.bindAddressesToPort(add1); | ||
466 | + Set<PortAddresses> storedAddresses = mgr.getAddressBindingsForPort(CP1); | ||
467 | + | ||
468 | + assertEquals(1, storedAddresses.size()); | ||
469 | + assertTrue(storedAddresses.contains(add1)); | ||
470 | + } | ||
471 | + | ||
472 | + @Test | ||
323 | public void getAddressBindings() { | 473 | public void getAddressBindings() { |
324 | Set<PortAddresses> storedAddresses = mgr.getAddressBindings(); | 474 | Set<PortAddresses> storedAddresses = mgr.getAddressBindings(); |
325 | 475 | ||
... | @@ -344,4 +494,30 @@ public class HostManagerTest { | ... | @@ -344,4 +494,30 @@ public class HostManagerTest { |
344 | assertTrue(storedAddresses.size() == 2); | 494 | assertTrue(storedAddresses.size() == 2); |
345 | assertTrue(storedAddresses.equals(Sets.newHashSet(add1, add2))); | 495 | assertTrue(storedAddresses.equals(Sets.newHashSet(add1, add2))); |
346 | } | 496 | } |
497 | + | ||
498 | + @Test | ||
499 | + public void getAddressBindingsIPv6() { | ||
500 | + Set<PortAddresses> storedAddresses = mgr.getAddressBindings(); | ||
501 | + | ||
502 | + assertTrue(storedAddresses.isEmpty()); | ||
503 | + | ||
504 | + PortAddresses add1 = | ||
505 | + new PortAddresses(CP1, Sets.newHashSet(IA4, IA5), MAC3, VlanId.NONE); | ||
506 | + | ||
507 | + mgr.bindAddressesToPort(add1); | ||
508 | + | ||
509 | + storedAddresses = mgr.getAddressBindings(); | ||
510 | + | ||
511 | + assertTrue(storedAddresses.size() == 1); | ||
512 | + | ||
513 | + PortAddresses add2 = | ||
514 | + new PortAddresses(CP2, Sets.newHashSet(IA5), MAC4, VlanId.NONE); | ||
515 | + | ||
516 | + mgr.bindAddressesToPort(add2); | ||
517 | + | ||
518 | + storedAddresses = mgr.getAddressBindings(); | ||
519 | + | ||
520 | + assertTrue(storedAddresses.size() == 2); | ||
521 | + assertTrue(storedAddresses.equals(Sets.newHashSet(add1, add2))); | ||
522 | + } | ||
347 | } | 523 | } | ... | ... |
-
Please register or login to post a comment