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 2015/11/17 23:05:12 UTC

[17/39] usergrid git commit: Created test for exact issue. Will try repair on that

Created test for exact issue. Will try repair on that


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

Branch: refs/heads/1.x
Commit: 267ea394021f027306e7821e8ef3f938f2bd44a0
Parents: 99af194
Author: George Reyes <gr...@apache.org>
Authored: Fri Nov 6 07:37:11 2015 -0800
Committer: George Reyes <gr...@apache.org>
Committed: Fri Nov 6 07:37:11 2015 -0800

----------------------------------------------------------------------
 .../usergrid/tools/UniqueIndexCleanup.java      |   5 +-
 .../usergrid/tools/UniqueIndexCleanupTest.java  | 166 ++++++++++++++-----
 2 files changed, 132 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/267ea394/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueIndexCleanup.java
----------------------------------------------------------------------
diff --git a/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueIndexCleanup.java b/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueIndexCleanup.java
index 541cc7b..6e20379 100644
--- a/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueIndexCleanup.java
+++ b/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueIndexCleanup.java
@@ -137,7 +137,8 @@ public class UniqueIndexCleanup extends ToolBase {
         Keyspace ko = cass.getUsergridApplicationKeyspace();
         Mutator<ByteBuffer> m = createMutator( ko, be );
 
-        if ( line.hasOption( ENTITY_UNIQUE_PROPERTY_NAME ) || line.hasOption( ENTITY_UNIQUE_PROPERTY_VALUE ) ) {
+        if (line.hasOption( APPLICATION_ARG ) || line.hasOption( COLLECTION_ARG ) ||
+        line.hasOption( ENTITY_UNIQUE_PROPERTY_NAME ) || line.hasOption( ENTITY_UNIQUE_PROPERTY_VALUE ) ) {
             deleteInvalidValuesForUniqueProperty(m ,line );
         }
         else {
@@ -239,7 +240,7 @@ public class UniqueIndexCleanup extends ToolBase {
                         false );
 
         if ( cols.size() == 0 ) {
-            System.out.println("Zero entities were found for this unique value. Its possible it doesn't exist.");
+            System.out.println("Zero entities were found for this unique value. Its possible it doesn't exist or you typed in in wrong :p.");
         }
 
         entityUUIDDelete( m, applicationId, collectionName, uniqueValueKey, uniqueValue, cols );

http://git-wip-us.apache.org/repos/asf/usergrid/blob/267ea394/stack/tools/src/test/java/org/apache/usergrid/tools/UniqueIndexCleanupTest.java
----------------------------------------------------------------------
diff --git a/stack/tools/src/test/java/org/apache/usergrid/tools/UniqueIndexCleanupTest.java b/stack/tools/src/test/java/org/apache/usergrid/tools/UniqueIndexCleanupTest.java
index 194793c..ddf7e88 100644
--- a/stack/tools/src/test/java/org/apache/usergrid/tools/UniqueIndexCleanupTest.java
+++ b/stack/tools/src/test/java/org/apache/usergrid/tools/UniqueIndexCleanupTest.java
@@ -19,8 +19,17 @@ package org.apache.usergrid.tools;
 
 import java.io.File;
 import java.io.FileFilter;
-
-import org.junit.ClassRule;
+import java.nio.ByteBuffer;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import org.junit.*;
+import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -29,58 +38,141 @@ import org.apache.commons.lang.RandomStringUtils;
 import org.apache.usergrid.ServiceITSetup;
 import org.apache.usergrid.ServiceITSetupImpl;
 import org.apache.usergrid.ServiceITSuite;
-
-import static org.junit.Assert.assertTrue;
+import org.apache.usergrid.management.ApplicationInfo;
+import org.apache.usergrid.management.ManagementService;
+import org.apache.usergrid.management.OrganizationOwnerInfo;
+import org.apache.usergrid.persistence.Entity;
+import org.apache.usergrid.persistence.EntityManager;
+import org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils;
+import org.apache.usergrid.persistence.cassandra.CassandraService;
+
+import me.prettyprint.hector.api.Keyspace;
+import me.prettyprint.hector.api.beans.HColumn;
+import me.prettyprint.hector.api.mutation.MutationResult;
+import me.prettyprint.hector.api.mutation.Mutator;
+
+import static me.prettyprint.hector.api.factory.HFactory.createMutator;
+import static org.apache.usergrid.persistence.cassandra.ApplicationCF.ENTITY_UNIQUE;
+import static org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils.addDeleteToMutator;
+import static org.apache.usergrid.persistence.cassandra.CassandraPersistenceUtils.key;
+import static org.apache.usergrid.persistence.cassandra.Serializers.be;
+import static org.apache.usergrid.persistence.cassandra.Serializers.ue;
+import static org.apache.usergrid.utils.UUIDUtils.getTimestampInMicros;
+import static org.apache.usergrid.utils.UUIDUtils.newTimeUUID;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
 
 /**
  * Created by ApigeeCorporation on 11/2/15.
  */
 public class UniqueIndexCleanupTest {
-        static final Logger logger = LoggerFactory.getLogger( ExportAppTest.class );
+    static final Logger logger = LoggerFactory.getLogger( ExportAppTest.class );
 
-        int NUM_COLLECTIONS = 10;
-        int NUM_ENTITIES = 50;
-        int NUM_CONNECTIONS = 3;
+    int NUM_COLLECTIONS = 10;
+    int NUM_ENTITIES = 50;
+    int NUM_CONNECTIONS = 3;
 
-        @ClassRule
-        public static ServiceITSetup setup = new ServiceITSetupImpl( ServiceITSuite.cassandraResource );
+    @ClassRule
+    public static ServiceITSetup setup = new ServiceITSetupImpl( ServiceITSuite.cassandraResource );
 
-        @org.junit.Test
-        public void testBasicOperation() throws Exception {
 
-            String rand = RandomStringUtils.randomAlphanumeric( 10 );
+    @org.junit.Test
+    public void testBasicOperation() throws Exception {
 
-            // create app with some data
+        String rand = RandomStringUtils.randomAlphanumeric( 10 );
 
-            String orgName = "org_" + rand;
-            String appName = "app_" + rand;
-//
-//            ExportDataCreator creator = new ExportDataCreator();
-//            creator.startTool( new String[] {
-//                    "-organization", orgName,
-//                    "-application", appName,
-//                    "-host", "localhost:9160" //+ ServiceITSuite.cassandraResource.getRpcPort()
-//            }, false);
+        // create app with some data
 
-            long start = System.currentTimeMillis();
+        String orgName = "org_" + rand;
+        String appName = "app_" + rand;
+        //
+        //            ExportDataCreator creator = new ExportDataCreator();
+        //            creator.startTool( new String[] {
+        //                    "-organization", orgName,
+        //                    "-application", appName,
+        //                    "-host", "localhost:9160" //+ ServiceITSuite.cassandraResource.getRpcPort()
+        //            }, false);
 
+        long start = System.currentTimeMillis();
 
-            UniqueIndexCleanup uniqueIndexCleanup = new UniqueIndexCleanup();
-            uniqueIndexCleanup.startTool( new String[]{
-                    "-host", "localhost:9160"
-            }, false );
 
-            System.out.println("completed");
-        }
+        UniqueIndexCleanup uniqueIndexCleanup = new UniqueIndexCleanup();
+        uniqueIndexCleanup.startTool( new String[] {
+                "-host", "localhost:9160"
+        }, false );
+
+        System.out.println( "completed" );
+    }
+
+    @Test
+    public void testRepairOfSingleEntity() throws Exception{
+        String rand = RandomStringUtils.randomAlphanumeric( 10 );
+
+        String orgName = "org_" + rand;
+        String appName = "app_" +rand;
+        String username = "username_" + rand;
+        String email = username+"@derp.com";
+        String password = username;
+
+        String collectionName = "users";
+
+
+        OrganizationOwnerInfo organizationOwnerInfo = setup.getMgmtSvc().createOwnerAndOrganization( orgName,username,username,email,password );
+
+        ApplicationInfo applicationInfo = setup.getMgmtSvc().createApplication( organizationOwnerInfo.getOrganization().getUuid(),appName );
+
+        EntityManager entityManager = setup.getEmf().getEntityManager( applicationInfo.getId() );
+
+        Map<String,Object> userInfo = new HashMap<String, Object>(  );
+        userInfo.put( "username",username );
+
+        Entity entityToBeCorrupted = entityManager.create( collectionName,userInfo );
+
+        Object key = CassandraPersistenceUtils.key( applicationInfo.getId(), collectionName, "username", username );
+        CassandraService cass = setup.getCassSvc();
 
-        private static int getFileCount(File exportDir, final String ext ) {
-            return exportDir.listFiles( new FileFilter() {
-                @Override
-                public boolean accept(File pathname) {
-                    return pathname.getAbsolutePath().endsWith("." + ext);
-                }
-            } ).length;
+        List<HColumn<ByteBuffer, ByteBuffer>> cols =
+                cass.getColumns( cass.getApplicationKeyspace( applicationInfo.getId() ), ENTITY_UNIQUE, key, null, null,
+                        2, false );
+
+        Set<UUID> results = new HashSet<UUID>( cols.size() );
+
+        for ( HColumn<ByteBuffer, ByteBuffer> col : cols ) {
+            results.add( ue.fromByteBuffer( col.getName() ) );
         }
+
+        UUID uuid = results.iterator().next();
+
+        UUID timestampUuid = newTimeUUID();
+        long timestamp = getTimestampInMicros( timestampUuid );
+
+        //Keyspace ko = cass.getUsergridApplicationKeyspace();
+        Keyspace ko = cass.getApplicationKeyspace( applicationInfo.getId() );
+        Mutator<ByteBuffer> m = createMutator( ko, be );
+
+        key = key( applicationInfo.getId(), collectionName, "username", username );
+        //addDeleteToMutator( m, ENTITY_UNIQUE, key, uuid, timestamp );
+        addDeleteToMutator( m, ENTITY_UNIQUE, key, timestamp, uuid );
+
+
+        MutationResult mutationResult= m.execute();
+
+
+        assertNull( entityManager.getAlias( applicationInfo.getId(),collectionName,username));
+
+        //here you need to add a delete to the mutator then recheck it and see if the entity is the same as millicoms.
+
+
+    }
+
+    private static int getFileCount( File exportDir, final String ext ) {
+        return exportDir.listFiles( new FileFilter() {
+            @Override
+            public boolean accept( File pathname ) {
+                return pathname.getAbsolutePath().endsWith( "." + ext );
+            }
+        } ).length;
+    }
 }