poll for events when validating.
Change-Id: Ia727a1c97f5d2d713281130997cee7fa3b1ba39d
diff --git a/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java b/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java
index 8923da9..aeb0978 100644
--- a/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java
+++ b/core/net/src/test/java/org/onlab/onos/net/device/impl/DistributedDeviceManagerTest.java
@@ -43,8 +43,11 @@
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
import static org.junit.Assert.*;
import static org.onlab.onos.net.Device.Type.SWITCH;
@@ -182,7 +185,7 @@
validateEvents(DEVICE_ADDED, DEVICE_ADDED);
connectDevice(DID1, SW2);
- validateEvents(DEVICE_UPDATED);
+ validateEvents(DEVICE_UPDATED, DEVICE_UPDATED);
}
@Test
@@ -251,12 +254,16 @@
}
protected void validateEvents(Enum... types) {
- int i = 0;
- assertEquals("wrong events received", types.length, listener.events.size());
- for (Event event : listener.events) {
- assertEquals("incorrect event type", types[i], event.type());
- i++;
+ for (Enum type : types) {
+ try {
+ Event event = listener.events.poll(1, TimeUnit.SECONDS);
+ assertNotNull("Timed out waiting for " + event, event);
+ assertEquals("incorrect event type", type, event.type());
+ } catch (InterruptedException e) {
+ fail("Unexpected interrupt");
+ }
}
+ assertTrue("Unexpected events left", listener.events.isEmpty());
listener.events.clear();
}
@@ -281,7 +288,7 @@
}
private static class TestListener implements DeviceListener {
- final List<DeviceEvent> events = new ArrayList<>();
+ final BlockingQueue<DeviceEvent> events = new LinkedBlockingQueue<>();
@Override
public void event(DeviceEvent event) {