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));
+    }
 }