Updated Branches:
  refs/heads/develop 10955ed5b -> e32ba7038

race condition fix in concurrency test


Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/e32ba703
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/e32ba703
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/e32ba703

Branch: refs/heads/develop
Commit: e32ba7038307ee45c00fb10f5478cbe2a1778a20
Parents: 10955ed
Author: Sebastian Schaffert <[email protected]>
Authored: Thu Dec 12 00:51:26 2013 +0100
Committer: Sebastian Schaffert <[email protected]>
Committed: Thu Dec 12 00:51:26 2013 +0100

----------------------------------------------------------------------
 .../marmotta/kiwi/test/ConcurrencyTestBase.java | 64 +++++++++++---------
 1 file changed, 34 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/marmotta/blob/e32ba703/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/ConcurrencyTestBase.java
----------------------------------------------------------------------
diff --git 
a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/ConcurrencyTestBase.java
 
b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/ConcurrencyTestBase.java
index 517efe9..857e984 100644
--- 
a/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/ConcurrencyTestBase.java
+++ 
b/libraries/kiwi/kiwi-triplestore/src/test/java/org/apache/marmotta/kiwi/test/ConcurrencyTestBase.java
@@ -143,14 +143,16 @@ public abstract class ConcurrencyTestBase {
      * @return
      */
     protected URI randomURI() {
-        if(resources.size() > 0 && rnd.nextInt(10) == 0) {
-            resourcesReused++;
-            // return a resource that was already used
-            return resources.get(rnd.nextInt(resources.size()));
-        } else {
-            URI resource = 
repository.getValueFactory().createURI("http://localhost/"+ 
RandomStringUtils.randomAlphanumeric(8));
-            resources.add(resource);
-            return resource;
+        synchronized (resources) {
+            if(resources.size() > 0 && rnd.nextInt(10) == 0) {
+                resourcesReused++;
+                // return a resource that was already used
+                return resources.get(rnd.nextInt(resources.size()));
+            } else {
+                URI resource = 
repository.getValueFactory().createURI("http://localhost/"+ 
RandomStringUtils.randomAlphanumeric(8));
+                resources.add(resource);
+                return resource;
+            }
         }
     }
 
@@ -159,30 +161,32 @@ public abstract class ConcurrencyTestBase {
      * @return
      */
     protected Value randomObject() {
-        if(objects.size() > 0 && rnd.nextInt(10) == 0) {
-            objectsReused++;
-            return objects.get(rnd.nextInt(objects.size()));
-        } else {
-            Value object;
-            switch(rnd.nextInt(6)) {
-                case 0: object = 
repository.getValueFactory().createURI("http://localhost/"+ 
RandomStringUtils.randomAlphanumeric(8));
-                    break;
-                case 1: object = repository.getValueFactory().createBNode();
-                    break;
-                case 2: object = 
repository.getValueFactory().createLiteral(RandomStringUtils.randomAscii(40));
-                    break;
-                case 3: object = 
repository.getValueFactory().createLiteral(rnd.nextInt());
-                    break;
-                case 4: object = 
repository.getValueFactory().createLiteral(rnd.nextDouble());
-                    break;
-                case 5: object = 
repository.getValueFactory().createLiteral(rnd.nextBoolean());
-                    break;
-                default: object = 
repository.getValueFactory().createURI("http://localhost/"+ 
RandomStringUtils.randomAlphanumeric(8));
-                    break;
+        synchronized (objects) {
+            if(objects.size() > 0 && rnd.nextInt(10) == 0) {
+                objectsReused++;
+                return objects.get(rnd.nextInt(objects.size()));
+            } else {
+                Value object;
+                switch(rnd.nextInt(6)) {
+                    case 0: object = 
repository.getValueFactory().createURI("http://localhost/"+ 
RandomStringUtils.randomAlphanumeric(8));
+                        break;
+                    case 1: object = 
repository.getValueFactory().createBNode();
+                        break;
+                    case 2: object = 
repository.getValueFactory().createLiteral(RandomStringUtils.randomAscii(40));
+                        break;
+                    case 3: object = 
repository.getValueFactory().createLiteral(rnd.nextInt());
+                        break;
+                    case 4: object = 
repository.getValueFactory().createLiteral(rnd.nextDouble());
+                        break;
+                    case 5: object = 
repository.getValueFactory().createLiteral(rnd.nextBoolean());
+                        break;
+                    default: object = 
repository.getValueFactory().createURI("http://localhost/"+ 
RandomStringUtils.randomAlphanumeric(8));
+                        break;
 
+                }
+                objects.add(object);
+                return object;
             }
-            objects.add(object);
-            return object;
         }
 
     }

Reply via email to