You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by re...@apache.org on 2016/01/18 12:41:40 UTC
[2/3] git commit: updated refs/heads/4.7 to 1f1da0f
Add test to check that each thread has it's own execution counter
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/21d24237
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/21d24237
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/21d24237
Branch: refs/heads/4.7
Commit: 21d2423709946d77981d6bc151c4729bb361b2ec
Parents: 24277e1
Author: Miguel Ferreira <mi...@me.com>
Authored: Thu Dec 17 16:29:59 2015 +0100
Committer: Miguel Ferreira <mi...@me.com>
Committed: Mon Jan 18 09:24:32 2016 +0100
----------------------------------------------------------------------
.../network/nicira/ExecutionCounterTest.java | 45 ++++++++++++++++++++
1 file changed, 45 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/21d24237/plugins/network-elements/nicira-nvp/src/test/java/com/cloud/network/nicira/ExecutionCounterTest.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/test/java/com/cloud/network/nicira/ExecutionCounterTest.java b/plugins/network-elements/nicira-nvp/src/test/java/com/cloud/network/nicira/ExecutionCounterTest.java
index 18797df..f063b75 100644
--- a/plugins/network-elements/nicira-nvp/src/test/java/com/cloud/network/nicira/ExecutionCounterTest.java
+++ b/plugins/network-elements/nicira-nvp/src/test/java/com/cloud/network/nicira/ExecutionCounterTest.java
@@ -22,6 +22,10 @@ package com.cloud.network.nicira;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicInteger;
+
import org.junit.Test;
public class ExecutionCounterTest {
@@ -52,4 +56,45 @@ public class ExecutionCounterTest {
assertThat(executionCounter.hasReachedExecutionLimit(), equalTo(true));
}
+
+ @Test
+ public void testConcurrentUpdatesToCounter() throws Exception {
+ final ExecutionCounter executionCounter = new ExecutionCounter(0);
+ final ExecutorService executorService = Executors.newFixedThreadPool(3);
+ final AtomicInteger counterTask1 = new AtomicInteger(-1);
+ final AtomicInteger counterTask2 = new AtomicInteger(-1);
+ final AtomicInteger counterTask3 = new AtomicInteger(-1);
+
+ final Runnable task1 = new Runnable() {
+ @Override
+ public void run() {
+ executionCounter.incrementExecutionCounter().incrementExecutionCounter();
+ executionCounter.incrementExecutionCounter().incrementExecutionCounter();
+ counterTask1.set(executionCounter.getValue());
+ }
+ };
+ final Runnable task2 = new Runnable() {
+ @Override
+ public void run() {
+ executionCounter.incrementExecutionCounter().incrementExecutionCounter();
+ counterTask2.set(executionCounter.getValue());
+ }
+ };
+ final Runnable task3 = new Runnable() {
+ @Override
+ public void run() {
+ counterTask3.set(executionCounter.getValue());
+ }
+ };
+
+ executorService.execute(task1);
+ executorService.execute(task2);
+ executorService.execute(task3);
+
+ executorService.shutdown();
+
+ assertThat(counterTask1.get(), equalTo(4));
+ assertThat(counterTask2.get(), equalTo(2));
+ assertThat(counterTask3.get(), equalTo(0));
+ }
}