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