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