Committed by
Gerrit Code Review
Moving LLDP provider configuration processing off the event thread.
Change-Id: Ief44d354081107c037870d9a7ede60e8a6447113
Showing
2 changed files
with
17 additions
and
3 deletions
| ... | @@ -784,6 +784,7 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { | ... | @@ -784,6 +784,7 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { |
| 784 | 784 | ||
| 785 | @Override | 785 | @Override |
| 786 | public void event(NetworkConfigEvent event) { | 786 | public void event(NetworkConfigEvent event) { |
| 787 | + executor.submit(() -> { | ||
| 787 | if (event.configClass() == LinkDiscoveryFromDevice.class && | 788 | if (event.configClass() == LinkDiscoveryFromDevice.class && |
| 788 | CONFIG_CHANGED.contains(event.type())) { | 789 | CONFIG_CHANGED.contains(event.type())) { |
| 789 | 790 | ||
| ... | @@ -822,6 +823,7 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { | ... | @@ -822,6 +823,7 @@ public class LldpLinkProvider extends AbstractProvider implements LinkProvider { |
| 822 | reconfigureSuppressionRules(cfg); | 823 | reconfigureSuppressionRules(cfg); |
| 823 | log.trace("Network config reconfigured"); | 824 | log.trace("Network config reconfigured"); |
| 824 | } | 825 | } |
| 826 | + }); | ||
| 825 | } | 827 | } |
| 826 | } | 828 | } |
| 827 | } | 829 | } | ... | ... |
| ... | @@ -93,6 +93,7 @@ import static org.junit.Assert.assertFalse; | ... | @@ -93,6 +93,7 @@ import static org.junit.Assert.assertFalse; |
| 93 | import static org.junit.Assert.assertNotNull; | 93 | import static org.junit.Assert.assertNotNull; |
| 94 | import static org.junit.Assert.assertNull; | 94 | import static org.junit.Assert.assertNull; |
| 95 | import static org.junit.Assert.assertTrue; | 95 | import static org.junit.Assert.assertTrue; |
| 96 | +import static org.onlab.junit.TestTools.assertAfter; | ||
| 96 | import static org.onosproject.provider.lldp.impl.LldpLinkProvider.DEFAULT_RULES; | 97 | import static org.onosproject.provider.lldp.impl.LldpLinkProvider.DEFAULT_RULES; |
| 97 | 98 | ||
| 98 | 99 | ||
| ... | @@ -101,6 +102,7 @@ public class LldpLinkProviderTest { | ... | @@ -101,6 +102,7 @@ public class LldpLinkProviderTest { |
| 101 | private static final DeviceId DID1 = DeviceId.deviceId("of:0000000000000001"); | 102 | private static final DeviceId DID1 = DeviceId.deviceId("of:0000000000000001"); |
| 102 | private static final DeviceId DID2 = DeviceId.deviceId("of:0000000000000002"); | 103 | private static final DeviceId DID2 = DeviceId.deviceId("of:0000000000000002"); |
| 103 | private static final DeviceId DID3 = DeviceId.deviceId("of:0000000000000003"); | 104 | private static final DeviceId DID3 = DeviceId.deviceId("of:0000000000000003"); |
| 105 | + private static final int EVENT_MS = 500; | ||
| 104 | 106 | ||
| 105 | private static Port pd1; | 107 | private static Port pd1; |
| 106 | private static Port pd2; | 108 | private static Port pd2; |
| ... | @@ -222,12 +224,13 @@ public class LldpLinkProviderTest { | ... | @@ -222,12 +224,13 @@ public class LldpLinkProviderTest { |
| 222 | DID3, | 224 | DID3, |
| 223 | LinkDiscoveryFromDevice.class)); | 225 | LinkDiscoveryFromDevice.class)); |
| 224 | 226 | ||
| 227 | + assertAfter(EVENT_MS, () -> { | ||
| 225 | // discovery helper for device is expected to be gone or stopped | 228 | // discovery helper for device is expected to be gone or stopped |
| 226 | LinkDiscovery linkDiscovery = provider.discoverers.get(DID3); | 229 | LinkDiscovery linkDiscovery = provider.discoverers.get(DID3); |
| 227 | if (linkDiscovery != null) { | 230 | if (linkDiscovery != null) { |
| 228 | assertTrue("Discovery expected to be stopped", linkDiscovery.isStopped()); | 231 | assertTrue("Discovery expected to be stopped", linkDiscovery.isStopped()); |
| 229 | } | 232 | } |
| 230 | - | 233 | + }); |
| 231 | } | 234 | } |
| 232 | 235 | ||
| 233 | @Test | 236 | @Test |
| ... | @@ -499,7 +502,7 @@ public class LldpLinkProviderTest { | ... | @@ -499,7 +502,7 @@ public class LldpLinkProviderTest { |
| 499 | "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId(), annotations); | 502 | "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId(), annotations); |
| 500 | } | 503 | } |
| 501 | 504 | ||
| 502 | - @SuppressWarnings(value = { "unused" }) | 505 | + @SuppressWarnings(value = {"unused"}) |
| 503 | private DeviceEvent portEvent(DeviceEvent.Type type, DeviceId did, PortNumber port) { | 506 | private DeviceEvent portEvent(DeviceEvent.Type type, DeviceId did, PortNumber port) { |
| 504 | return new DeviceEvent(type, deviceService.getDevice(did), | 507 | return new DeviceEvent(type, deviceService.getDevice(did), |
| 505 | deviceService.getPort(did, port)); | 508 | deviceService.getPort(did, port)); |
| ... | @@ -578,8 +581,10 @@ public class LldpLinkProviderTest { | ... | @@ -578,8 +581,10 @@ public class LldpLinkProviderTest { |
| 578 | 581 | ||
| 579 | configEvent(NetworkConfigEvent.Type.CONFIG_UPDATED); | 582 | configEvent(NetworkConfigEvent.Type.CONFIG_UPDATED); |
| 580 | 583 | ||
| 584 | + assertAfter(EVENT_MS, () -> { | ||
| 581 | assertTrue(provider.rules().getSuppressedDeviceType().contains(deviceType1)); | 585 | assertTrue(provider.rules().getSuppressedDeviceType().contains(deviceType1)); |
| 582 | assertTrue(provider.rules().getSuppressedDeviceType().contains(deviceType2)); | 586 | assertTrue(provider.rules().getSuppressedDeviceType().contains(deviceType2)); |
| 587 | + }); | ||
| 583 | } | 588 | } |
| 584 | 589 | ||
| 585 | @Test | 590 | @Test |
| ... | @@ -594,9 +599,11 @@ public class LldpLinkProviderTest { | ... | @@ -594,9 +599,11 @@ public class LldpLinkProviderTest { |
| 594 | 599 | ||
| 595 | configEvent(NetworkConfigEvent.Type.CONFIG_ADDED); | 600 | configEvent(NetworkConfigEvent.Type.CONFIG_ADDED); |
| 596 | 601 | ||
| 602 | + assertAfter(EVENT_MS, () -> { | ||
| 597 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key1)); | 603 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key1)); |
| 598 | assertEquals(value1, provider.rules().getSuppressedAnnotation().get(key1)); | 604 | assertEquals(value1, provider.rules().getSuppressedAnnotation().get(key1)); |
| 599 | assertFalse(provider.rules().getSuppressedAnnotation().containsKey(key2)); | 605 | assertFalse(provider.rules().getSuppressedAnnotation().containsKey(key2)); |
| 606 | + }); | ||
| 600 | } | 607 | } |
| 601 | 608 | ||
| 602 | @Test | 609 | @Test |
| ... | @@ -610,19 +617,23 @@ public class LldpLinkProviderTest { | ... | @@ -610,19 +617,23 @@ public class LldpLinkProviderTest { |
| 610 | 617 | ||
| 611 | configEvent(NetworkConfigEvent.Type.CONFIG_ADDED); | 618 | configEvent(NetworkConfigEvent.Type.CONFIG_ADDED); |
| 612 | 619 | ||
| 620 | + assertAfter(EVENT_MS, () -> { | ||
| 613 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key1)); | 621 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key1)); |
| 614 | assertEquals(value1, provider.rules().getSuppressedAnnotation().get(key1)); | 622 | assertEquals(value1, provider.rules().getSuppressedAnnotation().get(key1)); |
| 615 | assertFalse(provider.rules().getSuppressedAnnotation().containsKey(key2)); | 623 | assertFalse(provider.rules().getSuppressedAnnotation().containsKey(key2)); |
| 624 | + }); | ||
| 616 | 625 | ||
| 617 | annotation.put(key2, value2); | 626 | annotation.put(key2, value2); |
| 618 | cfg.annotation(annotation); | 627 | cfg.annotation(annotation); |
| 619 | 628 | ||
| 620 | configEvent(NetworkConfigEvent.Type.CONFIG_UPDATED); | 629 | configEvent(NetworkConfigEvent.Type.CONFIG_UPDATED); |
| 621 | 630 | ||
| 631 | + assertAfter(EVENT_MS, () -> { | ||
| 622 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key1)); | 632 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key1)); |
| 623 | assertEquals(value1, provider.rules().getSuppressedAnnotation().get(key1)); | 633 | assertEquals(value1, provider.rules().getSuppressedAnnotation().get(key1)); |
| 624 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key2)); | 634 | assertTrue(provider.rules().getSuppressedAnnotation().containsKey(key2)); |
| 625 | assertEquals(value2, provider.rules().getSuppressedAnnotation().get(key2)); | 635 | assertEquals(value2, provider.rules().getSuppressedAnnotation().get(key2)); |
| 636 | + }); | ||
| 626 | } | 637 | } |
| 627 | 638 | ||
| 628 | private void configEvent(NetworkConfigEvent.Type evType) { | 639 | private void configEvent(NetworkConfigEvent.Type evType) { |
| ... | @@ -706,6 +717,7 @@ public class LldpLinkProviderTest { | ... | @@ -706,6 +717,7 @@ public class LldpLinkProviderTest { |
| 706 | private final Map<DeviceId, Device> devices = new HashMap<>(); | 717 | private final Map<DeviceId, Device> devices = new HashMap<>(); |
| 707 | private final ArrayListMultimap<DeviceId, Port> ports = | 718 | private final ArrayListMultimap<DeviceId, Port> ports = |
| 708 | ArrayListMultimap.create(); | 719 | ArrayListMultimap.create(); |
| 720 | + | ||
| 709 | public TestDeviceService() { | 721 | public TestDeviceService() { |
| 710 | Device d1 = new DefaultDevice(ProviderId.NONE, DID1, Device.Type.SWITCH, | 722 | Device d1 = new DefaultDevice(ProviderId.NONE, DID1, Device.Type.SWITCH, |
| 711 | "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); | 723 | "TESTMF", "TESTHW", "TESTSW", "TESTSN", new ChassisId()); |
| ... | @@ -727,7 +739,7 @@ public class LldpLinkProviderTest { | ... | @@ -727,7 +739,7 @@ public class LldpLinkProviderTest { |
| 727 | devices.put(deviceId, device); | 739 | devices.put(deviceId, device); |
| 728 | } | 740 | } |
| 729 | 741 | ||
| 730 | - private void putPorts(DeviceId did, Port...ports) { | 742 | + private void putPorts(DeviceId did, Port... ports) { |
| 731 | this.ports.putAll(did, Lists.newArrayList(ports)); | 743 | this.ports.putAll(did, Lists.newArrayList(ports)); |
| 732 | } | 744 | } |
| 733 | 745 | ... | ... |
-
Please register or login to post a comment