You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2014/10/10 17:50:19 UTC

[12/43] Changes to repair to only bring us up to the current version only. This is what we need in practice.

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f7d406e3/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/LoadTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/LoadTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/LoadTest.java
index 3643bd1..ab0e2f4 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/LoadTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/mvcc/stage/load/LoadTest.java
@@ -17,6 +17,7 @@ import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
 import org.apache.usergrid.persistence.collection.mvcc.stage.AbstractIdStageTest;
 import org.apache.usergrid.persistence.collection.mvcc.stage.CollectionIoEvent;
 import org.apache.usergrid.persistence.collection.mvcc.stage.TestEntityGenerator;
+import org.apache.usergrid.persistence.collection.serialization.SerializationFig;
 import org.apache.usergrid.persistence.collection.service.UUIDService;
 import org.apache.usergrid.persistence.model.entity.Entity;
 import org.apache.usergrid.persistence.model.entity.Id;
@@ -46,6 +47,8 @@ public class LoadTest  extends AbstractIdStageTest {
         final CollectionScope collection = mock(CollectionScope.class);
         final UUIDService uuidService = mock(UUIDService.class);
         final MvccEntitySerializationStrategy serializationStrategy = mock(MvccEntitySerializationStrategy.class);
+        final SerializationFig serializationFig = mock(SerializationFig.class);
+        when(serializationFig.getBufferSize()).thenReturn( 10 );
 
 
         final UUID loadVersion = UUIDGenerator.newTimeUUID();
@@ -69,7 +72,7 @@ public class LoadTest  extends AbstractIdStageTest {
 
 
 
-        Load load = new Load( uuidService, serializationStrategy );
+        Load load = new Load( uuidService, serializationStrategy, serializationFig );
         Entity loaded = load.call( entityIoEvent );
 
 
@@ -87,6 +90,9 @@ public class LoadTest  extends AbstractIdStageTest {
         final CollectionScope collection = mock(CollectionScope.class);
         final UUIDService uuidService = mock(UUIDService.class);
         final MvccEntitySerializationStrategy serializationStrategy = mock(MvccEntitySerializationStrategy.class);
+        final SerializationFig serializationFig = mock(SerializationFig.class);
+             when(serializationFig.getBufferSize()).thenReturn( 10 );
+
 
 
         final UUID loadVersion = UUIDGenerator.newTimeUUID();
@@ -128,7 +134,7 @@ public class LoadTest  extends AbstractIdStageTest {
 
         when(serializationStrategy.write( same(collection), writtenEntityArg.capture() )).thenReturn( batch );
 
-        Load load = new Load( uuidService, serializationStrategy );
+        Load load = new Load( uuidService, serializationStrategy, serializationFig );
         Entity loaded = load.call( entityIoEvent );
 
         assertNotNull( loaded.getField( "derp" ) );
@@ -162,6 +168,9 @@ public class LoadTest  extends AbstractIdStageTest {
         final CollectionScope collection = mock(CollectionScope.class);
         final UUIDService uuidService = mock(UUIDService.class);
         final MvccEntitySerializationStrategy serializationStrategy = mock(MvccEntitySerializationStrategy.class);
+        final SerializationFig serializationFig = mock(SerializationFig.class);
+             when(serializationFig.getBufferSize()).thenReturn( 10 );
+
         final ChangeLogGenerator changeLogGenerator = new ChangeLogGeneratorImpl();
 
 
@@ -206,7 +215,7 @@ public class LoadTest  extends AbstractIdStageTest {
 
         when(serializationStrategy.write( same(collection), writtenEntityArg.capture() )).thenReturn( batch );
 
-        Load load = new Load( uuidService, serializationStrategy );
+        Load load = new Load( uuidService, serializationStrategy, serializationFig );
         Entity loaded = load.call( entityIoEvent );
 
         assertNotNull( loaded.getField( "derple" ) );
@@ -236,6 +245,9 @@ public class LoadTest  extends AbstractIdStageTest {
         final CollectionScope collection = mock(CollectionScope.class);
         final UUIDService uuidService = mock(UUIDService.class);
         final MvccEntitySerializationStrategy serializationStrategy = mock(MvccEntitySerializationStrategy.class);
+        final SerializationFig serializationFig = mock(SerializationFig.class);
+             when(serializationFig.getBufferSize()).thenReturn( 10 );
+
 
         final UUID loadVersion = UUIDGenerator.newTimeUUID();
 
@@ -284,7 +296,7 @@ public class LoadTest  extends AbstractIdStageTest {
 
         when(serializationStrategy.write( same(collection), writtenEntityArg.capture() )).thenReturn( batch );
 
-        Load load = new Load( uuidService, serializationStrategy );
+        Load load = new Load( uuidService, serializationStrategy, serializationFig );
         Entity loaded = load.call( entityIoEvent );
 
         assertNotNull( loaded.getField( "derp" ) );
@@ -317,6 +329,9 @@ public class LoadTest  extends AbstractIdStageTest {
         final CollectionScope collection = mock(CollectionScope.class);
         final UUIDService uuidService = mock(UUIDService.class);
         final MvccEntitySerializationStrategy serializationStrategy = mock(MvccEntitySerializationStrategy.class);
+        final SerializationFig serializationFig = mock(SerializationFig.class);
+             when(serializationFig.getBufferSize()).thenReturn( 10 );
+
 
 
         final UUID loadVersion = UUIDGenerator.newTimeUUID();
@@ -334,7 +349,7 @@ public class LoadTest  extends AbstractIdStageTest {
         //mock up returning a list of MvccEntities
         when(serializationStrategy.load( collection, entityId, loadVersion, 1 )).thenReturn( results);
 
-        Load load = new Load( uuidService, serializationStrategy );
+        Load load = new Load( uuidService, serializationStrategy, serializationFig );
         Entity loaded = load.call( entityIoEvent );
 
         assertNull( "No entity was loaded", loaded );
@@ -347,6 +362,9 @@ public class LoadTest  extends AbstractIdStageTest {
     @Override
     protected void validateStage( final CollectionIoEvent<Id> event ) {
         final UUIDService uuidService = mock(UUIDService.class);
+        final SerializationFig serializationFig = mock(SerializationFig.class);
+             when(serializationFig.getBufferSize()).thenReturn( 10 );
+
 
         /**
          * Mock up wrong UUID type
@@ -356,6 +374,6 @@ public class LoadTest  extends AbstractIdStageTest {
 
         final MvccEntitySerializationStrategy serializationStrategy = mock(MvccEntitySerializationStrategy.class);
 
-        new Load(uuidService, serializationStrategy).call( event );
+        new Load(uuidService, serializationStrategy, serializationFig).call( event );
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f7d406e3/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/EntityRepairImplTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/EntityRepairImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/EntityRepairImplTest.java
new file mode 100644
index 0000000..f4a75d4
--- /dev/null
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/EntityRepairImplTest.java
@@ -0,0 +1,136 @@
+/*
+ *
+ *  * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  *  contributor license agreements.  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 additional information regarding
+ *  * copyright in this work, please see the NOTICE file in the top level
+ *  * directory of this distribution.
+ *
+ */
+
+package org.apache.usergrid.persistence.collection.serialization;
+
+
+import java.util.Arrays;
+import java.util.UUID;
+
+import org.junit.Test;
+
+import org.apache.usergrid.persistence.collection.CollectionScope;
+import org.apache.usergrid.persistence.collection.impl.CollectionScopeImpl;
+import org.apache.usergrid.persistence.collection.mvcc.MvccEntitySerializationStrategy;
+import org.apache.usergrid.persistence.collection.mvcc.entity.MvccEntity;
+import org.apache.usergrid.persistence.collection.mvcc.entity.impl.MvccEntityImpl;
+import org.apache.usergrid.persistence.collection.serialization.impl.EntityRepairImpl;
+import org.apache.usergrid.persistence.model.entity.Entity;
+import org.apache.usergrid.persistence.model.entity.Id;
+import org.apache.usergrid.persistence.model.entity.SimpleId;
+import org.apache.usergrid.persistence.model.field.StringField;
+import org.apache.usergrid.persistence.model.util.UUIDGenerator;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+
+/**
+ * Tests the entity repair task
+ */
+public class EntityRepairImplTest {
+
+
+    /**
+     * Tests changing from a full version to 2 updates, ensures we have a proper output
+     */
+    @Test
+    public void testSimpleRolling() {
+
+        final SerializationFig serializationFig = mock( SerializationFig.class );
+
+        when( serializationFig.getBufferSize() ).thenReturn( 10 );
+
+
+        final Id simpleId = new SimpleId( "entity" );
+
+        final Entity v1Entity = new Entity( simpleId );
+
+
+        v1Entity.setField( new StringField( "field1", "value1" ) );
+        v1Entity.setField( new StringField( "field2", "value2" ) );
+
+
+        final MvccEntityImpl v1 =
+                new MvccEntityImpl( simpleId, UUIDGenerator.newTimeUUID(), MvccEntity.Status.COMPLETE, v1Entity );
+
+
+        final Entity v2Entity = new Entity( simpleId );
+        v2Entity.setField( new StringField( "field1", "value1.1" ) );
+
+        final MvccEntityImpl v2 =
+                new MvccEntityImpl( simpleId, UUIDGenerator.newTimeUUID(), MvccEntity.Status.PARTIAL, v2Entity );
+
+
+        final Entity v3Entity = new Entity( simpleId );
+        v3Entity.setField( new StringField( "field2", "value1.2" ) );
+
+        final MvccEntityImpl v3 =
+                new MvccEntityImpl( simpleId, UUIDGenerator.newTimeUUID(), MvccEntity.Status.PARTIAL, v3Entity );
+
+
+        final MvccEntitySerializationStrategy mvccEntitySerializationStrategy =
+                mock( MvccEntitySerializationStrategy.class );
+
+
+        final Id applicationId = new SimpleId( "application" );
+
+        final CollectionScope scope = new CollectionScopeImpl( applicationId, applicationId, "users" );
+
+        //mock up returning
+        when( mvccEntitySerializationStrategy
+                .load( scope, simpleId, v3.getVersion(), serializationFig.getBufferSize() ) )
+                .thenReturn( Arrays.<MvccEntity>asList( v3, v2, v1 ).iterator() );
+
+
+        EntityRepairImpl entityRepair = new EntityRepairImpl( mvccEntitySerializationStrategy, serializationFig );
+
+        final MvccEntity returned = entityRepair.maybeRepair( scope, v3 );
+
+        final UUID version = returned.getVersion();
+
+        assertEquals( "Versions should match", v3.getVersion(), version );
+
+
+
+        final Id entityId = returned.getId();
+
+        assertEquals( "Entity Id's match", simpleId, entityId );
+
+
+
+        final Entity finalVersion = returned.getEntity().get();
+
+        final Object expectedField1Value = v2.getEntity().get().getField( "field1" ).getValue();
+
+        final Object returnedField1Value = finalVersion.getField( "field1" ).getValue();
+
+        assertEquals( "Same field value", expectedField1Value, returnedField1Value );
+
+
+
+        final Object expectedField2Value = v3.getEntity().get().getField( "field2" ).getValue();
+
+        final Object returnedField2Value = finalVersion.getField( "field2" ).getValue();
+
+        assertEquals( "Same field value", expectedField2Value, returnedField2Value );
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f7d406e3/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
index 6780115..ba5ebce 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntitySerializationStrategyImplTest.java
@@ -649,7 +649,7 @@ public class MvccEntitySerializationStrategyImplTest {
     public void loadParamEntityId() throws ConnectionException {
 
         serializationStrategy
-                .load( new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), null, UUIDGenerator.newTimeUUID() );
+                .load( new CollectionScopeImpl(new SimpleId( "organization" ), new SimpleId( "test" ), "test" ), (Id)null, UUIDGenerator.newTimeUUID() );
     }