From 673a667dc331d5877f321e45396ad143e0c8055e Mon Sep 17 00:00:00 2001 From: Martin Bobak Date: Mon, 11 May 2015 17:42:23 +0200 Subject: [PATCH] binding thread pools in drop test to target node Change-Id: I593fb2d9dee8d991522d7538a8144b6c74c4417a Signed-off-by: Martin Bobak --- .../testcommon/AbstractDropTest.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/test-common/src/main/java/org/opendaylight/openflowplugin/testcommon/AbstractDropTest.java b/test-common/src/main/java/org/opendaylight/openflowplugin/testcommon/AbstractDropTest.java index 82d0f4d51f..8742e31143 100644 --- a/test-common/src/main/java/org/opendaylight/openflowplugin/testcommon/AbstractDropTest.java +++ b/test-common/src/main/java/org/opendaylight/openflowplugin/testcommon/AbstractDropTest.java @@ -52,8 +52,8 @@ abstract class AbstractDropTest implements PacketProcessingListener, AutoCloseab static final long STARTUP_LOOP_TICK = 500L; static final int STARTUP_LOOP_MAX_RETRIES = 8; - private final ExecutorService executorService = Executors.newFixedThreadPool(8); - + static private final int PROCESSING_THREAD_NUMBER = 8; + private final ExecutorService[] executorServiceLot; private static final AtomicIntegerFieldUpdater SENT_UPDATER = AtomicIntegerFieldUpdater.newUpdater(AbstractDropTest.class, "sent"); private volatile int sent; @@ -64,6 +64,13 @@ abstract class AbstractDropTest implements PacketProcessingListener, AutoCloseab private static final AtomicIntegerFieldUpdater EXCS_UPDATER = AtomicIntegerFieldUpdater.newUpdater(AbstractDropTest.class, "excs"); private volatile int excs; + public AbstractDropTest() { + executorServiceLot = new ExecutorService[PROCESSING_THREAD_NUMBER]; + for (int i = 0; i < PROCESSING_THREAD_NUMBER; i++) { + executorServiceLot[i] = Executors.newFixedThreadPool(1); + } + } + public final DropTestStats getStats() { return new DropTestStats(this.sent, this.rcvd, this.excs); } @@ -80,7 +87,10 @@ abstract class AbstractDropTest implements PacketProcessingListener, AutoCloseab RCVD_UPDATER.incrementAndGet(this); - executorService.submit(new Runnable() { + NodeKey nodeKey = notification.getIngress().getValue().firstKeyOf(Node.class, NodeKey.class); + int nodeIdHash = nodeKey.getId().getValue().hashCode(); + + executorServiceLot[nodeIdHash % PROCESSING_THREAD_NUMBER].submit(new Runnable() { @Override public void run() { @@ -154,6 +164,8 @@ abstract class AbstractDropTest implements PacketProcessingListener, AutoCloseab @Override public void close() { - executorService.shutdown(); + for (ExecutorService service : executorServiceLot) { + service.shutdown(); + } } } -- 2.36.6