Working on IO loop tests commands.
diff --git a/apps/foo/src/main/java/org/onlab/onos/foo/IOLoopTestServer.java b/apps/foo/src/main/java/org/onlab/onos/foo/IOLoopTestServer.java
index bb5fee7..778f217 100644
--- a/apps/foo/src/main/java/org/onlab/onos/foo/IOLoopTestServer.java
+++ b/apps/foo/src/main/java/org/onlab/onos/foo/IOLoopTestServer.java
@@ -85,10 +85,12 @@
IOLoopTestServer server = new IOLoopTestServer(ip, wc, ml, PORT);
server.start();
- // Start pruning clients.
- while (true) {
+ // Start pruning clients and keep going until their number goes to 0.
+ int remaining = -1;
+ while (remaining == -1 || remaining > 0) {
delay(PRUNE_FREQUENCY);
- server.prune();
+ int r = server.prune();
+ remaining = remaining == -1 && r == 0 ? remaining : r;
}
}
@@ -161,11 +163,15 @@
/**
* Prunes the IO loops of stale message buffers.
+ *
+ * @return number of remaining IO loops among all workers.
*/
- public void prune() {
+ public int prune() {
+ int count = 0;
for (CustomIOLoop l : iloops) {
- l.pruneStaleStreams();
+ count += l.pruneStaleStreams();
}
+ return count;
}
// Get the next worker to which a client should be assigned