You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by mr...@apache.org on 2016/07/11 15:35:52 UTC
[42/50] [abbrv] usergrid git commit: Fixes to tests and test
properties.
Fixes to tests and test properties.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/917f0e32
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/917f0e32
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/917f0e32
Branch: refs/heads/release-2.1.1
Commit: 917f0e32ea72734b98902ef041a6fe5302495d4b
Parents: 996bf09
Author: Dave Johnson <sn...@apache.org>
Authored: Thu Jul 7 12:10:01 2016 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Thu Jul 7 12:10:01 2016 -0400
----------------------------------------------------------------------
.../UniqueValuesServiceDeleteTest.java | 114 +++++++------------
1 file changed, 39 insertions(+), 75 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/917f0e32/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceDeleteTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceDeleteTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceDeleteTest.java
index 3f58834..397ec78 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceDeleteTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/uniquevalues/UniqueValuesServiceDeleteTest.java
@@ -22,6 +22,7 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.google.inject.Inject;
+import org.apache.commons.lang.RandomStringUtils;
import org.apache.usergrid.persistence.actorsystem.ActorSystemFig;
import org.apache.usergrid.persistence.actorsystem.ActorSystemManager;
import org.apache.usergrid.persistence.collection.AbstractUniqueValueTest;
@@ -52,6 +53,8 @@ import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import static junit.framework.TestCase.fail;
+
/**
* Test the unique values service.
@@ -86,7 +89,7 @@ public class UniqueValuesServiceDeleteTest extends AbstractUniqueValueTest {
@Before
public void initAkka() {
// each test class needs unique port number
- initAkka( 2555, actorSystemManager, uniqueValuesService );
+ initAkka( 2559, actorSystemManager, uniqueValuesService );
}
@@ -94,92 +97,53 @@ public class UniqueValuesServiceDeleteTest extends AbstractUniqueValueTest {
* Use multiple threads to attempt to create entities with duplicate usernames.
*/
@Test
- public void testDuplicatePrevention() throws Exception {
+ public void testUniqueValueCleanup() throws Exception {
initAkka();
- final AtomicInteger successCounter = new AtomicInteger( 0 );
- final AtomicInteger errorCounter = new AtomicInteger( 0 );
-
- Multimap<String, Entity> usersCreated =
- generateDuplicateUsers( numUsers, successCounter, errorCounter );
-
- int userCount = 0;
- int usernamesWithDuplicates = 0;
- for ( String username : usersCreated.keySet() ) {
- Collection<Entity> users = usersCreated.get( username );
- if ( users.size() > 1 ) {
- usernamesWithDuplicates++;
- }
- userCount++;
- }
-
- Assert.assertEquals( 0, usernamesWithDuplicates );
-
- Assert.assertEquals( numUsers, successCounter.get() );
- Assert.assertEquals( 0, errorCounter.get() );
- Assert.assertEquals( numUsers, usersCreated.size() );
- Assert.assertEquals( numUsers, userCount );
- }
-
-
- private Multimap<String, Entity> generateDuplicateUsers(
- int numUsers, AtomicInteger successCounter, AtomicInteger errorCounter ) {
-
ApplicationScope context = new ApplicationScopeImpl( new SimpleId( "organization" ) );
EntityCollectionManager manager = factory.createCollectionManager( context );
- Multimap<String, Entity> usersCreated =
- Multimaps.synchronizedListMultimap( ArrayListMultimap.create() );
-
- ExecutorService execService = Executors.newFixedThreadPool( poolSize );
+ String username = RandomStringUtils.randomAlphanumeric( 20 );
- for (int i = 0; i < numUsers; i++) {
-
- // multiple threads simultaneously trying to create a user with the same propertyName
- for (int j = 0; j < numThreads; j++) {
- String username = "user_" + i;
-
- execService.submit( () -> {
-
- try {
-
- // give entity two unqiue fields username and email
- Entity newEntity = new Entity( new SimpleId( "user" ) );
- newEntity.setField( new StringField( "username", username, true ) );
- newEntity.setField( new StringField( "email", username + "@example.org", true ) );
-
- Observable<Entity> observable = manager.write( newEntity, null );
- Entity returned = observable.toBlocking().lastOrDefault( null );
-
- usersCreated.put( username, newEntity );
- successCounter.incrementAndGet();
-
- logger.debug("Created user {}", username);
-
- } catch ( Throwable t ) {
- if ( t instanceof WriteUniqueVerifyException) {
- // we expect lots of these
- } else {
- errorCounter.incrementAndGet();
- logger.error( "Error creating user " + username, t );
- }
- }
+ // create user
+ Entity originalUser = null;
+ {
+ Entity newEntity = new Entity( new SimpleId( "user" ) );
+ newEntity.setField( new StringField( "username", username, true ) );
+ newEntity.setField( new StringField( "email", username + "@example.org", true ) );
+ Observable<Entity> observable = manager.write( newEntity, null );
+ originalUser = observable.toBlocking().lastOrDefault( null );
+ }
- } );
- }
+ // cannot create another user with same name
+ {
+ Entity newEntity = new Entity( new SimpleId( "user" ) );
+ newEntity.setField( new StringField( "username", username, true ) );
+ newEntity.setField( new StringField( "email", username + "@example.org", true ) );
+ try {
+ Observable<Entity> observable = manager.write( newEntity, null );
+ Entity returned = observable.toBlocking().lastOrDefault( null );
+ fail("Should not have created dupliate user");
+ } catch ( WriteUniqueVerifyException expected ) {}
}
- execService.shutdown();
- try {
- while (!execService.awaitTermination( 60, TimeUnit.SECONDS )) {
- System.out.println( "Waiting..." );
+ // delete user
+ manager.mark( originalUser.getId(), null ).toBlocking().firstOrDefault( null );
+
+ // now we can create another user with same name
+ {
+ Entity newEntity = new Entity( new SimpleId( "user" ) );
+ newEntity.setField( new StringField( "username", username, true ) );
+ newEntity.setField( new StringField( "email", username + "@example.org", true ) );
+ try {
+ Observable<Entity> observable = manager.write( newEntity, null );
+ Entity returned = observable.toBlocking().lastOrDefault( null );
+ } catch ( WriteUniqueVerifyException unexpected ) {
+ logger.error("Error creating user", unexpected);
+ fail("Still cannot create new user after delete");
}
- } catch (InterruptedException e) {
- e.printStackTrace();
}
-
- return usersCreated;
}
}