Repository: usergrid
Updated Branches:
  refs/heads/1.x e0be7dda2 -> 14d6cdf97


http://git-wip-us.apache.org/repos/asf/usergrid/blob/7324b5a8/stack/tools/src/test/java/org/apache/usergrid/tools/ExportImportAdminsTest.java
----------------------------------------------------------------------
diff --git 
a/stack/tools/src/test/java/org/apache/usergrid/tools/ExportImportAdminsTest.java
 
b/stack/tools/src/test/java/org/apache/usergrid/tools/ExportImportAdminsTest.java
index 9cce040..260c7ce 100644
--- 
a/stack/tools/src/test/java/org/apache/usergrid/tools/ExportImportAdminsTest.java
+++ 
b/stack/tools/src/test/java/org/apache/usergrid/tools/ExportImportAdminsTest.java
@@ -52,6 +52,7 @@ public class ExportImportAdminsTest {
     @ClassRule
     public static ServiceITSetup setup = new ServiceITSetupImpl( 
ServiceITSuite.cassandraResource );
 
+
     @org.junit.Test
     public void testExportUserAndOrg() throws Exception {
 

http://git-wip-us.apache.org/repos/asf/usergrid/blob/7324b5a8/stack/tools/src/test/java/org/apache/usergrid/tools/MockUserOrgManager.java
----------------------------------------------------------------------
diff --git 
a/stack/tools/src/test/java/org/apache/usergrid/tools/MockUserOrgManager.java 
b/stack/tools/src/test/java/org/apache/usergrid/tools/MockUserOrgManager.java
new file mode 100644
index 0000000..e8323e4
--- /dev/null
+++ 
b/stack/tools/src/test/java/org/apache/usergrid/tools/MockUserOrgManager.java
@@ -0,0 +1,215 @@
+package org.apache.usergrid.tools;
+
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.SetMultimap;
+import rx.*;
+
+import java.util.*;
+import java.util.Observable;
+
+/**
+ * Mock manager implementation for mockTesting.
+ */
+class MockUserOrgManager implements UserOrgInterface {
+
+    SetMultimap<Org, OrgUser> usersByOrg = HashMultimap.create();
+
+    SetMultimap<OrgUser, Org> orgsByUser = HashMultimap.create();
+
+    SetMultimap<Org, UUID> appsByOrg = HashMultimap.create();
+
+    Map<UUID, Org> orgsById = new HashMap<UUID, Org>();
+
+    Map<UUID, OrgUser> usersById = new HashMap<UUID, OrgUser>();
+
+    /** represents "index" of users by username */
+    Map<String, OrgUser> usersByUsername = new HashMap<String, OrgUser>();
+
+    /** represents "index" of users by email */
+    Map<String, OrgUser> usersByEmail = new HashMap<String, OrgUser>();
+
+    
+    /**
+     * Populate manager with orgs and users.
+     * Will create a number of orgs and a duplicate for each.
+     *
+     * @param numOrgs One half of the number of orgs to create.
+     */
+    public MockUserOrgManager(int numOrgs) throws Exception {
+        
+        for (int i = 0; i < numOrgs; i++) {
+
+            // create a pair of duplicate orgs 
+            
+            // org1 is the original and the oldest one, with capital letters
+            Org org1 = new Org( UUID.randomUUID(), "OrG_" + i );
+            orgsById.put( org1.getId(), org1 );
+            pause(100);
+            
+            // org2 is duplicate, the newest one
+            Org org2 = new Org( UUID.randomUUID(), "org_" + i );
+            orgsById.put( org2.getId(), org2 );
+
+            // create three users A, B and C
+            
+            String base = "user_" + i;
+            OrgUser usera = new OrgUser( UUID.randomUUID(), base + "_a", base 
+ "[email protected]" );
+            OrgUser userb = new OrgUser( UUID.randomUUID(), base + "_b", base 
+ "[email protected]" );
+            OrgUser userc = new OrgUser( UUID.randomUUID(), base + "_c", base 
+ "[email protected]" );
+
+            // org1 gets users A and B
+            addUserToOrg( usera, org1 );
+            addUserToOrg( userb, org1 );
+
+            // org2 gets users C 
+            addUserToOrg( userc, org2 );
+
+            // add some apps to the orgs, org1 gets 2 apps
+            addAppToOrg( UUID.randomUUID(), org1 );
+            addAppToOrg( UUID.randomUUID(), org1 );
+           
+            // org2 gets 1 app
+            addAppToOrg( UUID.randomUUID(), org2 );
+        }
+    }
+    
+    void pause( long timems ) {
+        try { Thread.sleep( timems ); } catch (InterruptedException 
intentionallyIgnored) {}
+    }
+
+    @Override
+    public rx.Observable<Org> getOrgs() throws Exception {
+        return rx.Observable.from( usersByOrg.keySet() );
+    }
+
+    @Override
+    public rx.Observable<OrgUser> getUsers() throws Exception {
+        return rx.Observable.from( orgsByUser.keySet() );
+    }
+
+    @Override
+    public Set<Org> getUsersOrgs(OrgUser user) {
+        return orgsByUser.get( user );
+    }
+
+    @Override
+    public void removeOrg(Org keeper, Org duplicate) throws Exception {
+        Set<OrgUser> users = usersByOrg.get( duplicate );
+        for (OrgUser user : users) {
+            Set<Org> userOrgs = orgsByUser.get( user );
+            userOrgs.remove( duplicate );
+        }
+        usersByOrg.removeAll( duplicate );
+    }
+
+    @Override
+    public Set<OrgUser> getOrgUsers(Org org) throws Exception {
+        return usersByOrg.get( org );
+    }
+
+    @Override
+    public void removeUserFromOrg(OrgUser user, Org org) throws Exception {
+        
+        Set<OrgUser> orgUsers = usersByOrg.get( org );
+        orgUsers.remove( user );
+        
+        Set<Org> usersOrgs = orgsByUser.get( user );
+        usersOrgs.remove( org );
+    }
+
+    @Override
+    public void addUserToOrg(OrgUser user, Org org) throws Exception {
+        
+        Set<Org> usersOrgs = orgsByUser.get( user );
+        usersOrgs.add( org );
+        
+        Set<OrgUser> orgsUsers = usersByOrg.get( org );
+        orgsUsers.add( user );
+    }
+
+    @Override
+    public Set<UUID> getOrgApps(Org org) {
+        return appsByOrg.get( org );
+    }
+
+    @Override
+    public void removeAppFromOrg(UUID appId, Org org) throws Exception {
+        Set<UUID> apps = appsByOrg.get( org );
+        apps.remove( appId );
+    }
+
+    @Override
+    public void addAppToOrg(UUID appId, Org org) throws Exception {
+        Set<UUID> apps = appsByOrg.get( org );
+        apps.add(appId); 
+    }
+
+    @Override
+    public void logDuplicates(Map<String, Set<Org>> duplicatesByName) {
+
+        for (String orgName : duplicatesByName.keySet()) {
+            Set<Org> orgs = duplicatesByName.get( orgName );
+            for (Org org : orgs) {
+                DuplicateAdminUserRepairTest.logger.info( "Duplicate org 
{}:{}", orgName, org.getId() );
+            }
+        }
+    }
+
+    @Override
+    public Org getOrg(UUID uuid) throws Exception {
+        return orgsById.get(uuid); 
+    }
+
+    @Override
+    public OrgUser getOrgUser(UUID id) throws Exception {
+        return usersById.get(id);
+    }
+
+    @Override
+    public OrgUser lookupOrgUserByUsername(String username) {
+        return usersByUsername.get(username);
+    }
+
+    @Override
+    public OrgUser lookupOrgUserByEmail(String email) {
+        return usersByEmail.get(email);
+    }
+
+    @Override
+    public void removeOrgUser(OrgUser orgUser) throws Exception {
+
+        usersById.remove( orgUser.getId() );
+        usersByUsername.remove( orgUser.getId() );
+        usersByEmail.remove( orgUser.getId() );
+        
+        Set<Org> orgs = orgsByUser.get( orgUser );
+        for ( Org org : orgs ) {
+            removeUserFromOrg( orgUser, org );
+        }
+    }
+
+    @Override
+    public void updateOrgUser(OrgUser keeper) throws Exception  {
+        // ensure 'keeper' user is the one in the indexes
+        usersById.put(       keeper.getId(), keeper );
+        usersByUsername.put( keeper.getUsername(), keeper );
+        usersByEmail.put(    keeper.getEmail(), keeper );
+    }
+
+    @Override
+    public void setOrgUserName(OrgUser user, String newUserName) throws 
Exception  {
+        user.setUsername( newUserName );
+        updateOrgUser( user ); // re-index user
+    }
+
+    // implemented for testing only
+    OrgUser createOrgUser(UUID id, String name, String email) {
+        OrgUser user = new OrgUser( id, name, email );
+        usersById.put( user.getId(), user );
+        usersByUsername.put( user.getUsername(), user );
+        usersByEmail.put( user.getEmail(), user );
+        return user;
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/usergrid/blob/7324b5a8/stack/tools/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/stack/tools/src/test/resources/log4j.properties 
b/stack/tools/src/test/resources/log4j.properties
new file mode 100644
index 0000000..def47b4
--- /dev/null
+++ b/stack/tools/src/test/resources/log4j.properties
@@ -0,0 +1,47 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# for production, you should probably set the root to INFO
+# and the pattern to %c instead of %l.  (%l is slower.)
+
+# output messages into a rolling log file as well as stdout
+log4j.rootLogger=ERROR,stdout
+
+# stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+#log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d %p (%t) [%c] - %m%n
+
+log4j.logger.org.apache.usergrid=INFO
+log4j.logger.org.apache.usergrid.tools=DEBUG
+
+log4j.logger.org.apache.usergrid.management.cassandra=WARN
+log4j.logger.org.apache.usergrid.persistence.cassandra.DB=WARN
+log4j.logger.org.apache.usergrid.persistence.cassandra.BATCH=WARN
+log4j.logger.org.apache.usergrid.persistence.cassandra.EntityManagerFactoryImpl=WARN
+log4j.logger.org.apache.usergrid.persistence.cassandra.DaoUtils=WARN
+log4j.logger.org.apache.usergrid.persistence.cassandra.EntityManagerImpl=WARN
+log4j.logger.org.apache.usergrid.persistence.cassandra.ConnectionRefImpl=WARN
+log4j.logger.me.prettyprint.cassandra.hector.TimingLogger=WARN
+log4j.logger.org.apache.usergrid.rest.security.AllowAjaxFilter=WARN
+log4j.logger.me.prettyprint.hector.api.beans.AbstractComposite=ERROR
+#log4j.logger.org.apache.usergrid.locking.singlenode.SingleNodeLockManagerImpl=DEBUG,
 stdout
+
+log4j.logger.org.apache.usergrid.persistence.hector.CountingMutator=INFO
+
+#log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG, stdout
+

Reply via email to