You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/03/28 17:21:05 UTC

[12/50] [abbrv] git commit: Fixed multiple orbs being exported bug. Added test proving issue.

Fixed multiple orbs being exported bug.
Added test proving issue.


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/9baec839
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/9baec839
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/9baec839

Branch: refs/heads/asyncqueue
Commit: 9baec8397933ec6fadcfd39247a8c723778f9ff0
Parents: 63fb1ca
Author: grey <gr...@apigee.com>
Authored: Wed Mar 19 09:31:31 2014 -0700
Committer: grey <gr...@apigee.com>
Committed: Wed Mar 19 09:31:31 2014 -0700

----------------------------------------------------------------------
 .../management/export/ExportServiceImpl.java    | 57 ++-----------
 .../cassandra/ManagementServiceIT.java          | 84 +++++++++++++++++++-
 2 files changed, 90 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9baec839/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
index bab5660..0a11660 100644
--- a/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
+++ b/stack/services/src/main/java/org/apache/usergrid/management/export/ExportServiceImpl.java
@@ -22,7 +22,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -39,7 +38,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.apache.usergrid.batch.JobExecution;
 import org.apache.usergrid.batch.service.SchedulerService;
 import org.apache.usergrid.management.ManagementService;
-import org.apache.usergrid.management.OrganizationInfo;
 import org.apache.usergrid.persistence.ConnectionRef;
 import org.apache.usergrid.persistence.Entity;
 import org.apache.usergrid.persistence.EntityManager;
@@ -190,20 +188,13 @@ public class ExportServiceImpl implements ExportService {
 
         if ( config.get("collectionName") == null) {
             //exports all the applications for a given organization.
-            Map<UUID, String> organizations = getOrgs();
-            if(organizations == null){
-                logger.error( "No organizations could be found" );
+
+            if(config.get( "organizationId" ) == null){
+                logger.error( "No organization could be found" );
                 return;
             }
-            for ( Map.Entry<UUID, String> organization : organizations.entrySet() ) {
-                try {
-                    exportApplicationsForOrg( organization, config, jobExecution );
-                }catch ( Exception e ) {
-                    export.setState( Export.State.FAILED );
-                    em.update( export );
-                    return;
-                }
-            }
+           exportApplicationsForOrg( ( UUID ) config.get( "organizationId" ), config, jobExecution );
+
         }
         else {
             try {
@@ -222,36 +213,6 @@ public class ExportServiceImpl implements ExportService {
     }
 
 
-    /**
-     * Loops through all the organizations and returns a Map with the corresponding information
-     * @param
-     * @return Map<UUID, String>
-     * @throws Exception
-     */
-    private Map<UUID, String> getOrgs() throws Exception {
-        // Loop through the organizations
-        UUID orgId = null;
-
-        Map<UUID, String> organizationNames = null;
-
-        if ( orgId == null ) {
-            organizationNames = managementService.getOrganizations();
-        }
-
-        else {//this case isn't used yet, but might be in the future.
-            OrganizationInfo info = managementService.getOrganizationByUuid( orgId );
-
-            if ( info == null ) {
-                logger.error( "Organization info is null!" );
-                return null;
-            }
-
-            organizationNames = new HashMap<UUID, String>();
-            organizationNames.put( orgId, info.getName() );
-        }
-
-        return organizationNames;
-    }
 
     public SchedulerService getSch() {
         return sch;
@@ -285,12 +246,12 @@ public class ExportServiceImpl implements ExportService {
 
     /**
      * Exports all applications for the given organization.
-     * @param organization
+     * @param organizationUUID
      * @param config
      * @param jobExecution
      * @throws Exception
      */
-    private void exportApplicationsForOrg( Map.Entry<UUID, String> organization, final Map<String,Object> config,
+    private void exportApplicationsForOrg( UUID organizationUUID, final Map<String,Object> config,
                                            final JobExecution jobExecution ) throws Exception {
 
         //retrieves export entity
@@ -301,10 +262,8 @@ public class ExportServiceImpl implements ExportService {
         //sets up a output stream for s3 backup.
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
-        logger.info( "" + organization );
-
         // Loop through the applications per organization
-        BiMap<UUID, String> applications = managementService.getApplicationsForOrganization( organization.getKey() );
+        BiMap<UUID, String> applications = managementService.getApplicationsForOrganization( organizationUUID );
         for ( Map.Entry<UUID, String> application : applications.entrySet() ) {
 
             logger.info( application.getValue() + " : " + application.getKey() );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9baec839/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
index 9757546..59ce4ad 100644
--- a/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/management/cassandra/ManagementServiceIT.java
@@ -43,6 +43,7 @@ import org.apache.usergrid.cassandra.CassandraResource;
 import org.apache.usergrid.cassandra.ClearShiroSubject;
 import org.apache.usergrid.cassandra.Concurrent;
 import org.apache.usergrid.count.SimpleBatcher;
+import org.apache.usergrid.management.ApplicationInfo;
 import org.apache.usergrid.management.OrganizationInfo;
 import org.apache.usergrid.management.UserInfo;
 import org.apache.usergrid.management.export.ExportJob;
@@ -1271,6 +1272,85 @@ public class ManagementServiceIT {
     }
 
     @Test
+    public void testExportOneOrganization() throws Exception {
+
+        //File f = new File( "exportOneOrganization.json" );
+        int entitiesToCreate = 10000;
+        File f = null;
+
+        try {
+            f = new File( "exportOneOrganization.json" );
+            f.delete();
+        }
+        catch ( Exception e ) {
+            //consumed because this checks to see if the file exists. If it doesn't, don't do anything and carry on.
+        }
+
+        EntityManager em = setup.getEmf().getEntityManager( applicationId);
+        em.createApplicationCollection( "baconators" );
+        //intialize user object to be posted
+        Map<String, Object> userProperties = null;
+        Entity[] entity;
+        entity = new Entity[entitiesToCreate];
+        //creates entities
+        for ( int i = 0; i < entitiesToCreate; i++ ) {
+            userProperties = new LinkedHashMap<String, Object>();
+            userProperties.put( "username", "billybob" + i );
+            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+            entity[i] = em.create( "baconators", userProperties );
+        }
+
+        S3Export s3Export = new MockS3ExportImpl();
+        s3Export.setFilename( "exportOneOrganization.json" );
+        ExportService exportService = setup.getExportService();
+        HashMap<String, Object> payload = payloadBuilder();
+
+        payload.put( "organizationId",organization.getUuid() );
+        payload.put( "applicationId",applicationId);
+        payload.put( "collectionName","baconators");
+
+        //creates 100s of organizations with some entities in each one to make sure we don't actually apply it
+        for(int i = 0; i < 100; i++) {
+            OrganizationInfo orgMade =setup.getMgmtSvc().createOrganization( "superboss"+i,adminUser,true );
+            ApplicationInfo appMade = setup.getMgmtSvc().createApplication( orgMade.getUuid(), "superapp"+i);
+
+            EntityManager customMaker = setup.getEmf().getEntityManager( appMade.getId() );
+            customMaker.createApplicationCollection( "superappCol"+i );
+            //intialize user object to be posted
+            Map<String, Object> entityLevelProperties = null;
+            Entity[] entNotCopied;
+            entNotCopied = new Entity[entitiesToCreate];
+            //creates entities
+            for ( int index = 0; index < 10; index++ ) {
+                entityLevelProperties = new LinkedHashMap<String, Object>();
+                entityLevelProperties.put( "username", "bobso" + i );
+                entityLevelProperties.put( "email", "derp" + i + "@anuff.com" );
+                entNotCopied[i] = customMaker.create( "superappCol", entityLevelProperties );
+            }
+        }
+
+        UUID exportUUID = exportService.schedule( payload );
+        exportService.setS3Export( s3Export );
+
+        JobData jobData = new JobData();
+        jobData.setProperty( "jobName", "exportJob" );
+        jobData.setProperty( "exportInfo", payload );
+        jobData.setProperty( "exportId", exportUUID );
+
+        JobExecution jobExecution = mock( JobExecution.class );
+        when( jobExecution.getJobData() ).thenReturn( jobData );
+
+        exportService.doExport( jobExecution );
+
+        JSONParser parser = new JSONParser();
+
+        org.json.simple.JSONArray a = ( org.json.simple.JSONArray ) parser.parse( new FileReader( f ) );
+
+        assertEquals( entitiesToCreate , a.size() );
+        f.delete();
+    }
+
+    @Test
     public void testExportDoJob() throws Exception {
 
         HashMap<String, Object> payload = payloadBuilder();
@@ -1392,6 +1472,7 @@ public class ManagementServiceIT {
         ExportService exportService = setup.getExportService();
         HashMap<String, Object> payload = payloadBuilder();
 
+        payload.put("organizationId",organization.getUuid());
         payload.put("applicationId",applicationId);
 
         EntityManager em = setup.getEmf().getEntityManager( applicationId );
@@ -1403,7 +1484,7 @@ public class ManagementServiceIT {
         for ( int i = 0; i < 100; i++ ) {
             userProperties = new LinkedHashMap<String, Object>();
             userProperties.put( "username", "billybob" + i );
-            userProperties.put( "email", "test" + i + "@anuff.com" );//String.format( "test%i@anuff.com", i ) );
+            userProperties.put( "email", "test" + i + "@anuff.com" );
 
             entity[i] = em.create( "user", userProperties );
         }
@@ -1423,7 +1504,6 @@ public class ManagementServiceIT {
         exportService.doExport( jobExecution );
     }
 
-
     /*Creates fake payload for testing purposes.*/
     public HashMap<String, Object> payloadBuilder() {
         HashMap<String, Object> payload = new HashMap<String, Object>();