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 2015/02/11 00:49:54 UTC

incubator-usergrid git commit: tests passing in core persistence

Repository: incubator-usergrid
Updated Branches:
  refs/heads/USERGRID-365 8f106608c -> 3d9376771


tests passing in core persistence


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

Branch: refs/heads/USERGRID-365
Commit: 3d9376771cb6019b225330cdda489765cbeed3ef
Parents: 8f10660
Author: Shawn Feldman <sf...@apache.org>
Authored: Tue Feb 10 16:49:36 2015 -0700
Committer: Shawn Feldman <sf...@apache.org>
Committed: Tue Feb 10 16:49:36 2015 -0700

----------------------------------------------------------------------
 .../EntityCollectionManagerFactoryImpl.java     | 17 +++--
 .../impl/MvccEntityDataMigrationImpl.java       | 10 +--
 .../EntityCollectionManagerFactoryTest.java     |  2 +-
 .../collection/guice/TestCollectionModule.java  |  4 ++
 .../data/DataMigrationManagerImpl.java          | 68 +++++++++++---------
 .../core/guice/TestCommonModule.java            |  5 ++
 .../persistence/core/guice/TestModule.java      |  8 ++-
 .../data/DataMigrationManagerImplTest.java      | 45 ++++++++-----
 .../rx/AllEntitiesInSystemTestObservable.java   | 34 ++++++++++
 .../persistence/graph/guice/GraphModule.java    |  6 +-
 .../graph/impl/GraphManagerImpl.java            |  2 +-
 .../impl/EdgeDataMigrationImpl.java             |  9 +--
 .../EdgeMetadataSerializationProxyImpl.java     | 13 +---
 .../impl/GraphManagerFactoryImpl.java           |  8 ++-
 .../impl/TargetIdObservableImpl.java            |  2 +
 .../graph/guice/TestGraphModule.java            |  5 ++
 .../map/impl/MapManagerFactoryImpl.java         |  8 ++-
 .../persistence/map/guice/TestMapModule.java    |  5 +-
 .../persistence/index/guice/IndexModule.java    |  1 -
 .../index/impl/EntityIndexFactoryImpl.java      |  2 +
 .../index/impl/EsEntityIndexImpl.java           | 32 ++++-----
 .../index/guice/TestIndexModule.java            |  4 ++
 .../queue/guice/TestQueueModule.java            |  5 +-
 23 files changed, 199 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
index 27bd4f9..2fd49a0 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/impl/EntityCollectionManagerFactoryImpl.java
@@ -19,9 +19,13 @@
  */
 package org.apache.usergrid.persistence.collection.impl;
 
+import com.google.common.base.Preconditions;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
+import com.google.inject.Inject;
+import com.google.inject.ProvisionException;
+import com.google.inject.Singleton;
 import com.google.inject.assistedinject.Assisted;
 import com.netflix.astyanax.Keyspace;
 import org.apache.usergrid.persistence.collection.*;
@@ -41,8 +45,9 @@ import org.apache.usergrid.persistence.core.task.TaskExecutor;
 import java.util.concurrent.ExecutionException;
 
 /**
- * Classy class class.
+ * returns Entity Collection Managers built to manage caching
  */
+@Singleton
 public class EntityCollectionManagerFactoryImpl implements EntityCollectionManagerFactory {
 
 
@@ -63,7 +68,6 @@ public class EntityCollectionManagerFactoryImpl implements EntityCollectionManag
     private final EntityVersionCreatedFactory entityVersionCreatedFactory;
     private final EntityDeletedFactory entityDeletedFactory;
     private final TaskExecutor taskExecutor;
-    private final CollectionScope collectionScope;
     private LoadingCache<CollectionScope, EntityCollectionManager> ecmCache =
         CacheBuilder.newBuilder().maximumSize( 1000 )
             .build( new CacheLoader<CollectionScope, EntityCollectionManager>() {
@@ -72,12 +76,13 @@ public class EntityCollectionManagerFactoryImpl implements EntityCollectionManag
                         writeStart,
                         writeUpdate,
                         writeVerifyUnique,
-                        writeOptimisticVerify,writeCommit,rollback,markStart,markCommit,entitySerializationStrategy,uniqueValueSerializationStrategy,mvccLogEntrySerializationStrategy,keyspace,config,entityVersionCleanupFactory,entityVersionCreatedFactory,entityDeletedFactory,taskExecutor,collectionScope);
+                        writeOptimisticVerify,writeCommit,rollback,markStart,markCommit,entitySerializationStrategy,uniqueValueSerializationStrategy,mvccLogEntrySerializationStrategy,keyspace,config,entityVersionCleanupFactory,entityVersionCreatedFactory,entityDeletedFactory,taskExecutor,scope);
                 }
             } );
 
 
 
+    @Inject
     public EntityCollectionManagerFactoryImpl( @Write final WriteStart writeStart,
                                                @WriteUpdate final WriteStart              writeUpdate,
                                                final WriteUniqueVerify writeVerifyUnique,
@@ -94,8 +99,8 @@ public class EntityCollectionManagerFactoryImpl implements EntityCollectionManag
                                                final EntityVersionCleanupFactory entityVersionCleanupFactory,
                                                final EntityVersionCreatedFactory          entityVersionCreatedFactory,
                                                final EntityDeletedFactory                 entityDeletedFactory,
-                                               @CollectionTaskExecutor final TaskExecutor taskExecutor,
-                                               @Assisted final CollectionScope            collectionScope){
+                                               @CollectionTaskExecutor final TaskExecutor taskExecutor
+                                               ){
 
         this.writeStart = writeStart;
         this.writeUpdate = writeUpdate;
@@ -114,10 +119,10 @@ public class EntityCollectionManagerFactoryImpl implements EntityCollectionManag
         this.entityVersionCreatedFactory = entityVersionCreatedFactory;
         this.entityDeletedFactory = entityDeletedFactory;
         this.taskExecutor = taskExecutor;
-        this.collectionScope = collectionScope;
     }
     @Override
     public EntityCollectionManager createCollectionManager(CollectionScope collectionScope) {
+        Preconditions.checkNotNull(collectionScope);
         try{
             return ecmCache.get(collectionScope);
         }catch (ExecutionException ee){

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntityDataMigrationImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntityDataMigrationImpl.java b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntityDataMigrationImpl.java
index 35da1bb..287c469 100644
--- a/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntityDataMigrationImpl.java
+++ b/stack/corepersistence/collection/src/main/java/org/apache/usergrid/persistence/collection/serialization/impl/MvccEntityDataMigrationImpl.java
@@ -19,6 +19,7 @@
  */
 package org.apache.usergrid.persistence.collection.serialization.impl;
 
+import com.google.inject.Inject;
 import com.netflix.astyanax.Keyspace;
 import com.netflix.astyanax.MutationBatch;
 import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
@@ -47,12 +48,13 @@ import java.util.concurrent.atomic.AtomicLong;
 public class MvccEntityDataMigrationImpl implements DataMigration {
 
     private final Keyspace keyspace;
-    private final MvccEntityMigrationStrategy serializationStrategy;
+    private final MvccEntityMigrationStrategy entityMigrationStrategy;
 
+    @Inject
     public MvccEntityDataMigrationImpl(Keyspace keyspace, MvccEntityMigrationStrategy serializationStrategy){
 
         this.keyspace = keyspace;
-        this.serializationStrategy = serializationStrategy;
+        this.entityMigrationStrategy = serializationStrategy;
     }
 
     @Override
@@ -79,7 +81,7 @@ public class MvccEntityDataMigrationImpl implements DataMigration {
                     }
 
                     CollectionScope currentScope = (CollectionScope) applicationScope;
-                    MigrationStrategy.MigrationRelationship<MvccEntitySerializationStrategy> migration = serializationStrategy.getMigration();
+                    MigrationStrategy.MigrationRelationship<MvccEntitySerializationStrategy> migration = entityMigrationStrategy.getMigration();
                     //for each element in the history in the previous version,
                     // copy it to the CF in v2
                     Iterator<MvccEntity> allVersions = migration.from()
@@ -125,6 +127,6 @@ public class MvccEntityDataMigrationImpl implements DataMigration {
 
     @Override
     public int getVersion() {
-        return 0;
+        return entityMigrationStrategy.getVersion();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
index 0d44e98..fe984a2 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/EntityCollectionManagerFactoryTest.java
@@ -47,7 +47,7 @@ public class EntityCollectionManagerFactoryTest {
     }
 
 
-    @Test(expected = ProvisionException.class)
+    @Test(expected = NullPointerException.class)
     public void nullInput() {
         entityCollectionManagerFactory.createCollectionManager( null );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/guice/TestCollectionModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/guice/TestCollectionModule.java b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/guice/TestCollectionModule.java
index dd3c013..3f0c740 100644
--- a/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/guice/TestCollectionModule.java
+++ b/stack/corepersistence/collection/src/test/java/org/apache/usergrid/persistence/collection/guice/TestCollectionModule.java
@@ -23,6 +23,8 @@ package org.apache.usergrid.persistence.collection.guice;
 import org.apache.usergrid.persistence.core.guice.CommonModule;
 import org.apache.usergrid.persistence.core.guice.MaxMigrationModule;
 import org.apache.usergrid.persistence.core.guice.TestModule;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemTestObservable;
 
 
 public class TestCollectionModule extends TestModule {
@@ -32,6 +34,8 @@ public class TestCollectionModule extends TestModule {
         /**
          * Runtime modules
          */
+        bind(AllEntitiesInSystemObservable.class).to(AllEntitiesInSystemTestObservable.class);
+
         install( new CommonModule() );
         install( new CollectionModule() );
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
index 5b8920e..8a84d9f 100644
--- a/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
+++ b/stack/corepersistence/common/src/main/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImpl.java
@@ -66,6 +66,7 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
                     return migrationInfoSerialization.getVersion();
                 }
             } );
+    private final Set<DataMigration> migrations;
 
 
     @Inject
@@ -82,40 +83,15 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
         this.migrationInfoSerialization = migrationInfoSerialization;
         this.allEntitiesInSystemObservable = allEntitiesInSystemObservable;
 
-        for ( DataMigration migration : migrations ) {
-
-            Preconditions.checkNotNull( migration,
-                    "A migration instance in the set of migrations was null.  This is not allowed" );
-
-            final int version = migration.getVersion();
-
-            final DataMigration existing = migrationTreeMap.get( version );
-
-            if ( existing != null ) {
-
-                final Class<? extends DataMigration> existingClass = existing.getClass();
-
-                final Class<? extends DataMigration> currentClass = migration.getClass();
-
-
-                throw new DataMigrationException( String.format(
-                        "Data migrations must be unique.  Both classes %s and %s have version %d",
-                        existingClass, currentClass, version ) );
-            }
-
-            migrationTreeMap.put( version, migration );
-        }
+        this.migrations = migrations;
     }
 
 
     @Override
     public void migrate() throws MigrationException {
 
-        if ( migrationTreeMap.isEmpty() ) {
-            LOG.warn( "No migrations found to run, exiting" );
+        if (!populateTreeMap())
             return;
-        }
-
 
         final int currentVersion = migrationInfoSerialization.getVersion();
 
@@ -146,7 +122,7 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
 
                             //perform this migration, if it fails, short circuit
                             try {
-                                migration.migrate(applicationEntityGroup, observer).toBlocking().last();
+                                migration.migrate(applicationEntityGroup, observer).toBlocking().lastOrDefault(null);
                             } catch (Throwable throwable) {
                                 observer.failed(migrationVersion, "Exception thrown during migration", throwable);
                                 LOG.error("Unable to migrate to version {}.", migrationVersion, throwable);
@@ -169,10 +145,44 @@ public class DataMigrationManagerImpl implements DataMigrationManager {
                         return ;
                     }
                 }).toBlocking().lastOrDefault(null);
-        ;
         migrationInfoSerialization.setStatusCode( StatusCode.COMPLETE.status );
     }
 
+    private boolean populateTreeMap() {
+        if ( migrationTreeMap.isEmpty() ) {
+            for ( DataMigration migration : migrations ) {
+
+                Preconditions.checkNotNull(migration,
+                    "A migration instance in the set of migrations was null.  This is not allowed");
+
+                final int version = migration.getVersion();
+
+                final DataMigration existing = migrationTreeMap.get( version );
+
+                if ( existing != null ) {
+
+                    final Class<? extends DataMigration> existingClass = existing.getClass();
+
+                    final Class<? extends DataMigration> currentClass = migration.getClass();
+
+
+                    throw new DataMigrationException( String.format(
+                        "Data migrations must be unique.  Both classes %s and %s have version %d",
+                        existingClass, currentClass, version ) );
+                }
+
+                migrationTreeMap.put( version, migration );
+            }
+
+        }
+        if(migrationTreeMap.isEmpty()) {
+            LOG.warn("No migrations found to run, exiting");
+            return false;
+        }
+
+        return true;
+    }
+
 
     @Override
     public boolean isRunning() {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestCommonModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestCommonModule.java b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestCommonModule.java
index 04f1d47..f23d85d 100644
--- a/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestCommonModule.java
+++ b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestCommonModule.java
@@ -22,6 +22,9 @@
 package org.apache.usergrid.persistence.core.guice;
 
 
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemTestObservable;
+
 /**
  * Module for testing common frameworks
  */
@@ -29,6 +32,8 @@ public class TestCommonModule extends TestModule {
 
     @Override
     protected void configure() {
+        bind(AllEntitiesInSystemObservable.class).to(AllEntitiesInSystemTestObservable.class);
         install(new CommonModule());
     }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestModule.java b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestModule.java
index 9b175da..98b057b 100644
--- a/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestModule.java
+++ b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/guice/TestModule.java
@@ -24,6 +24,9 @@ import java.io.IOException;
 
 import com.google.inject.AbstractModule;
 import com.netflix.config.ConfigurationManager;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
+import org.apache.usergrid.persistence.core.scope.ApplicationEntityGroup;
+import rx.Observable;
 
 
 public abstract class TestModule extends AbstractModule {
@@ -34,11 +37,10 @@ public abstract class TestModule extends AbstractModule {
        * bootstrap more than once per JVM
        * --------------------------------------------------------------------
        */
-
         try {
             //load up the properties
-            ConfigurationManager.getDeploymentContext().setDeploymentEnvironment( "UNIT" );
-            ConfigurationManager.loadCascadedPropertiesFromResources( "usergrid" );
+            ConfigurationManager.getDeploymentContext().setDeploymentEnvironment("UNIT");
+            ConfigurationManager.loadCascadedPropertiesFromResources("usergrid");
 
         }
         catch ( IOException e ) {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImplTest.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImplTest.java b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImplTest.java
index 6067d75..bf8678f 100644
--- a/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImplTest.java
+++ b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/migration/data/DataMigrationManagerImplTest.java
@@ -22,17 +22,22 @@
 package org.apache.usergrid.persistence.core.migration.data;
 
 
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Observer;
 import java.util.Set;
 
 import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
 import org.apache.usergrid.persistence.core.scope.ApplicationEntityGroup;
+import org.apache.usergrid.persistence.core.scope.ApplicationScope;
+import org.apache.usergrid.persistence.model.entity.Id;
 import org.junit.Test;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
 import org.apache.usergrid.persistence.core.migration.schema.MigrationException;
 import rx.Observable;
+import rx.Subscriber;
 
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.doAnswer;
@@ -53,7 +58,14 @@ public class DataMigrationManagerImplTest {
         @Override
         public Observable<ApplicationEntityGroup> getAllEntitiesInSystem(int bufferSize) {
 
-            return null;
+            return Observable.create(new Observable.OnSubscribe<ApplicationEntityGroup>() {
+                @Override
+                public void call(Subscriber<? super ApplicationEntityGroup> subscriber) {
+                    ApplicationEntityGroup entityGroup = new ApplicationEntityGroup(mock(ApplicationScope.class),new ArrayList<Id>());
+                    subscriber.onNext(entityGroup);
+                    subscriber.onCompleted();
+                }
+            });
         }
     };
 
@@ -80,9 +92,11 @@ public class DataMigrationManagerImplTest {
 
         final DataMigration v1 = mock( DataMigration.class );
         when( v1.getVersion() ).thenReturn( 1 );
+        when( v1.migrate(any(ApplicationEntityGroup.class), any(DataMigration.ProgressObserver.class))).thenReturn(Observable.empty());
 
         final DataMigration v2 = mock( DataMigration.class );
         when( v2.getVersion() ).thenReturn( 2 );
+        when(v2.migrate(any(ApplicationEntityGroup.class),any(DataMigration.ProgressObserver.class))).thenReturn(Observable.empty());
 
 
         Set<DataMigration> migrations = new HashSet<>();
@@ -121,6 +135,7 @@ public class DataMigrationManagerImplTest {
 
         final DataMigration v1 = mock( DataMigration.class );
         when( v1.getVersion() ).thenReturn( 1 );
+        when( v1.migrate(any(ApplicationEntityGroup.class), any(DataMigration.ProgressObserver.class))).thenReturn(Observable.empty());
 
         //throw an exception
         doThrow( new RuntimeException( "Something bad happened" ) ).when( v1 ).migrate(any(ApplicationEntityGroup.class),
@@ -166,32 +181,32 @@ public class DataMigrationManagerImplTest {
     public void failStopsProgress() throws Throwable {
         final MigrationInfoSerialization serialization = mock( MigrationInfoSerialization.class );
 
-
         final DataMigration v1 = mock( DataMigration.class );
         when( v1.getVersion() ).thenReturn( 1 );
-
+        when( v1.migrate(any(ApplicationEntityGroup.class), any(DataMigration.ProgressObserver.class))).thenReturn(Observable.empty());
 
         final int returnedCode = 100;
 
         final String reason = "test reason";
 
         //mark as fail but don't
-        doAnswer( new Answer<Object>() {
-            @Override
-            public Object answer( final InvocationOnMock invocation ) throws Throwable {
-                final DataMigration.ProgressObserver progressObserver =
-                        ( DataMigration.ProgressObserver ) invocation.getArguments()[0];
-
-                progressObserver.failed( returnedCode, reason );
-                return null;
+        when(v1.migrate(any(ApplicationEntityGroup.class), any(DataMigration.ProgressObserver.class))).thenAnswer(
+            new Answer<Object>() {
+                @Override
+                public Object answer(final InvocationOnMock invocation) throws Throwable {
+                    final DataMigration.ProgressObserver progressObserver =
+                        (DataMigration.ProgressObserver) invocation.getArguments()[1];
+
+                    progressObserver.failed(returnedCode, reason);
+                    return null;
+                }
             }
-        } ).when( v1 ).migrate(any(ApplicationEntityGroup.class), any( DataMigration.ProgressObserver.class ) );
-
 
+        );
 
         final DataMigration v2 = mock( DataMigration.class );
         when( v2.getVersion() ).thenReturn( 2 );
-
+        when(v2.migrate(any(ApplicationEntityGroup.class), any(DataMigration.ProgressObserver.class))).thenReturn(Observable.empty());
 
         Set<DataMigration> migrations = new HashSet<>();
         migrations.add( v1 );
@@ -217,7 +232,7 @@ public class DataMigrationManagerImplTest {
         verify( serialization ).setStatusMessage( "Migration version 100.  Failed to migrate, reason is appended.  Error 'test reason'" );
 
         //verify we set an error
-        verify( serialization, times(1) ).setStatusCode( DataMigrationManagerImpl.StatusCode.ERROR.status );
+        verify( serialization, times(2) ).setStatusCode( DataMigrationManagerImpl.StatusCode.ERROR.status );
 
         //verify we never set version 1
         verify( serialization, never() ).setVersion( 1 );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/rx/AllEntitiesInSystemTestObservable.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/rx/AllEntitiesInSystemTestObservable.java b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/rx/AllEntitiesInSystemTestObservable.java
new file mode 100644
index 0000000..ead42a4
--- /dev/null
+++ b/stack/corepersistence/common/src/test/java/org/apache/usergrid/persistence/core/rx/AllEntitiesInSystemTestObservable.java
@@ -0,0 +1,34 @@
+/*
+ *
+ *  * 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.core.rx;
+
+import org.apache.usergrid.persistence.core.scope.ApplicationEntityGroup;
+import rx.Observable;
+
+/**
+ * Classy class class.
+ */
+public class AllEntitiesInSystemTestObservable implements AllEntitiesInSystemObservable{
+
+    @Override
+    public Observable<ApplicationEntityGroup> getAllEntitiesInSystem(int bufferSize) {
+        return Observable.empty();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
index cd90455..6626d84 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/guice/GraphModule.java
@@ -87,7 +87,7 @@ public class GraphModule extends AbstractModule {
 
         bind( GraphManagerFactory.class ).to(GraphManagerFactoryImpl.class);
 
-        bind(GraphManager.class).to(GraphManagerImpl.class );
+        //bind(GraphManager.class).to(GraphManagerImpl.class );
 
         bind(EdgesFromSourceObservable.class).to(EdgesFromSourceObservableImpl.class);
 
@@ -95,6 +95,10 @@ public class GraphModule extends AbstractModule {
 
         bind(EdgesToTargetObservable.class).to(EdgesToTargetObservableImpl.class);
 
+        bind(EdgeMetadataSerialization.class).to(EdgeMetadataSerializationProxyImpl.class);
+
+        bind(EdgeMigrationStrategy.class).to(EdgeMetadataSerializationProxyImpl.class);
+
         /**
          * bindings for shard allocations
          */

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
index df10816..8f78799 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/impl/GraphManagerImpl.java
@@ -96,7 +96,7 @@ public class GraphManagerImpl implements GraphManager {
                              final GraphFig graphFig,
                              final EdgeDeleteListener edgeDeleteListener,
                              final NodeDeleteListener nodeDeleteListener,
-                             @Assisted final ApplicationScope scope) {
+                             final ApplicationScope scope) {
 
 
         ValidationUtils.validateApplicationScope( scope );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeDataMigrationImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeDataMigrationImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeDataMigrationImpl.java
index a0bd2b5..cfece16 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeDataMigrationImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeDataMigrationImpl.java
@@ -19,11 +19,11 @@
  */
 package org.apache.usergrid.persistence.graph.serialization.impl;
 
+import com.google.inject.Inject;
 import com.netflix.astyanax.Keyspace;
 import com.netflix.astyanax.MutationBatch;
 import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
 import org.apache.usergrid.persistence.core.migration.data.DataMigration;
-import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager;
 import org.apache.usergrid.persistence.core.scope.ApplicationEntityGroup;
 import org.apache.usergrid.persistence.graph.Edge;
 import org.apache.usergrid.persistence.graph.GraphManager;
@@ -43,6 +43,7 @@ import java.util.concurrent.atomic.AtomicLong;
 /**
  * Classy class class.
  */
+
 public class EdgeDataMigrationImpl implements DataMigration {
 
     private static final Logger logger = LoggerFactory.getLogger(EdgeDataMigrationImpl.class);
@@ -52,8 +53,8 @@ public class EdgeDataMigrationImpl implements DataMigration {
     private final EdgesFromSourceObservable edgesFromSourceObservable;
     private final EdgeMigrationStrategy edgeMigrationStrategy;
 
-    public EdgeDataMigrationImpl(final DataMigrationManager dataMigrationManager,
-                                 final Keyspace keyspace,
+    @Inject
+    public EdgeDataMigrationImpl(final Keyspace keyspace,
                                  final GraphManagerFactory graphManagerFactory,
                                  final EdgesFromSourceObservable edgesFromSourceObservable,
                                  final EdgeMigrationStrategy edgeMigrationStrategy
@@ -135,6 +136,6 @@ public class EdgeDataMigrationImpl implements DataMigration {
 
     @Override
     public int getVersion() {
-        return 0;
+        return edgeMigrationStrategy.getVersion();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
index 664d959..9a13234 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/EdgeMetadataSerializationProxyImpl.java
@@ -62,8 +62,6 @@ public class EdgeMetadataSerializationProxyImpl implements EdgeMetadataSerializa
 
     private final DataMigrationManager dataMigrationManager;
     private final Keyspace keyspace;
-    private final GraphManagerFactory graphManagerFactory;
-    private final EdgesFromSourceObservable edgesFromSourceObservable;
     private final EdgeMetadataSerialization previous;
     private final EdgeMetadataSerialization current;
 
@@ -73,14 +71,10 @@ public class EdgeMetadataSerializationProxyImpl implements EdgeMetadataSerializa
      */
     @Inject
     public EdgeMetadataSerializationProxyImpl(final DataMigrationManager dataMigrationManager, final Keyspace keyspace,
-                                              final GraphManagerFactory graphManagerFactory,
-                                              final EdgesFromSourceObservable edgesFromSourceObservable,
                                               @V1Impl final EdgeMetadataSerialization previous,
                                               @V2Impl final EdgeMetadataSerialization current) {
         this.dataMigrationManager = dataMigrationManager;
         this.keyspace = keyspace;
-        this.graphManagerFactory = graphManagerFactory;
-        this.edgesFromSourceObservable = edgesFromSourceObservable;
         this.previous = previous;
         this.current = current;
     }
@@ -289,7 +283,7 @@ public class EdgeMetadataSerializationProxyImpl implements EdgeMetadataSerializa
      * Return true if we're on an old version
      */
     private boolean isOldVersion() {
-        return dataMigrationManager.getCurrentVersion() < MIGRATION_VERSION;
+        return dataMigrationManager.getCurrentVersion() < getVersion();
     }
 
     @Override
@@ -299,10 +293,7 @@ public class EdgeMetadataSerializationProxyImpl implements EdgeMetadataSerializa
 
     @Override
     public int getVersion() {
-        return EdgeMigrationStrategy.MIGRATION_VERSION;
+        return MIGRATION_VERSION;
     }
 
-
-
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/GraphManagerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/GraphManagerFactoryImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/GraphManagerFactoryImpl.java
index 7c04cee..732f0bf 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/GraphManagerFactoryImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/GraphManagerFactoryImpl.java
@@ -19,10 +19,12 @@
  */
 package org.apache.usergrid.persistence.graph.serialization.impl;
 
+import com.google.common.base.Preconditions;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.inject.Inject;
+import com.google.inject.Singleton;
 import com.google.inject.assistedinject.Assisted;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
 import org.apache.usergrid.persistence.graph.GraphFig;
@@ -38,8 +40,9 @@ import org.apache.usergrid.persistence.graph.serialization.NodeSerialization;
 import java.util.concurrent.ExecutionException;
 
 /**
- * Classy class class.
+ * Returns Graph Managers, built to manage the caching
  */
+@Singleton
 public class GraphManagerFactoryImpl implements GraphManagerFactory {
 
     private final EdgeMetadataSerialization edgeMetadataSerialization;
@@ -57,6 +60,7 @@ public class GraphManagerFactoryImpl implements GraphManagerFactory {
             }
         } );
 
+    @Inject
     public GraphManagerFactoryImpl(final EdgeMetadataSerialization edgeMetadataSerialization,
                                    final EdgeSerialization edgeSerialization,
                                    final NodeSerialization nodeSerialization,
@@ -74,6 +78,8 @@ public class GraphManagerFactoryImpl implements GraphManagerFactory {
 
     @Override
     public GraphManager createEdgeManager(ApplicationScope collectionScope) {
+        Preconditions.checkNotNull(collectionScope);
+
         try {
             return gmCache.get(collectionScope);
         }catch (ExecutionException ee){

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/TargetIdObservableImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/TargetIdObservableImpl.java b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/TargetIdObservableImpl.java
index bf0a03e..1cac592 100644
--- a/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/TargetIdObservableImpl.java
+++ b/stack/corepersistence/graph/src/main/java/org/apache/usergrid/persistence/graph/serialization/impl/TargetIdObservableImpl.java
@@ -20,6 +20,7 @@
 package org.apache.usergrid.persistence.graph.serialization.impl;
 
 
+import com.google.inject.Inject;
 import org.apache.usergrid.persistence.graph.Edge;
 import org.apache.usergrid.persistence.graph.GraphManager;
 import org.apache.usergrid.persistence.graph.serialization.EdgesFromSourceObservable;
@@ -38,6 +39,7 @@ public class TargetIdObservableImpl implements TargetIdObservable {
     private static final Logger logger = LoggerFactory.getLogger(TargetIdObservableImpl.class);
     private final EdgesFromSourceObservable edgesFromSourceObservable;
 
+    @Inject
     public TargetIdObservableImpl(final EdgesFromSourceObservable edgesFromSourceObservable){
         this.edgesFromSourceObservable = edgesFromSourceObservable;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/guice/TestGraphModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/guice/TestGraphModule.java b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/guice/TestGraphModule.java
index 20343bc..1921e98 100644
--- a/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/guice/TestGraphModule.java
+++ b/stack/corepersistence/graph/src/test/java/org/apache/usergrid/persistence/graph/guice/TestGraphModule.java
@@ -22,6 +22,8 @@ package org.apache.usergrid.persistence.graph.guice;
 import org.apache.usergrid.persistence.core.guice.CommonModule;
 import org.apache.usergrid.persistence.core.guice.MaxMigrationModule;
 import org.apache.usergrid.persistence.core.guice.TestModule;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemTestObservable;
 
 
 /**
@@ -34,6 +36,9 @@ public class TestGraphModule extends TestModule {
         /**
          * Runtime modules
          */
+
+        bind(AllEntitiesInSystemObservable.class).to(AllEntitiesInSystemTestObservable.class);
+
         install( new CommonModule());
         install( new GraphModule() );
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/map/src/main/java/org/apache/usergrid/persistence/map/impl/MapManagerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/map/src/main/java/org/apache/usergrid/persistence/map/impl/MapManagerFactoryImpl.java b/stack/corepersistence/map/src/main/java/org/apache/usergrid/persistence/map/impl/MapManagerFactoryImpl.java
index f5b9527..267525e 100644
--- a/stack/corepersistence/map/src/main/java/org/apache/usergrid/persistence/map/impl/MapManagerFactoryImpl.java
+++ b/stack/corepersistence/map/src/main/java/org/apache/usergrid/persistence/map/impl/MapManagerFactoryImpl.java
@@ -19,9 +19,12 @@
  */
 package org.apache.usergrid.persistence.map.impl;
 
+import com.google.common.base.Preconditions;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
 import com.netflix.astyanax.Execution;
 import org.apache.usergrid.persistence.map.MapManager;
 import org.apache.usergrid.persistence.map.MapManagerFactory;
@@ -30,8 +33,9 @@ import org.apache.usergrid.persistence.map.MapScope;
 import java.util.concurrent.ExecutionException;
 
 /**
- * Classy class class.
+ * Returns map managers, built to handle caching
  */
+@Singleton
 public class MapManagerFactoryImpl implements MapManagerFactory {
     private final MapSerialization mapSerialization;
     private LoadingCache<MapScope, MapManager> mmCache =
@@ -41,6 +45,7 @@ public class MapManagerFactoryImpl implements MapManagerFactory {
             }
         } );
 
+    @Inject
     public MapManagerFactoryImpl(final MapSerialization mapSerialization){
 
         this.mapSerialization = mapSerialization;
@@ -48,6 +53,7 @@ public class MapManagerFactoryImpl implements MapManagerFactory {
 
     @Override
     public MapManager createMapManager(MapScope scope) {
+        Preconditions.checkNotNull(scope);
         try{
             return mmCache.get(scope);
         }catch (ExecutionException ee){

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/map/src/test/java/org/apache/usergrid/persistence/map/guice/TestMapModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/map/src/test/java/org/apache/usergrid/persistence/map/guice/TestMapModule.java b/stack/corepersistence/map/src/test/java/org/apache/usergrid/persistence/map/guice/TestMapModule.java
index 2868f45..977a7c3 100644
--- a/stack/corepersistence/map/src/test/java/org/apache/usergrid/persistence/map/guice/TestMapModule.java
+++ b/stack/corepersistence/map/src/test/java/org/apache/usergrid/persistence/map/guice/TestMapModule.java
@@ -3,13 +3,16 @@ package org.apache.usergrid.persistence.map.guice;
 
 import org.apache.usergrid.persistence.core.guice.TestModule;
 import org.apache.usergrid.persistence.core.guice.CommonModule;
-
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemTestObservable;
 
 
 public class TestMapModule extends TestModule {
 
     @Override
     protected void configure() {
+        bind(AllEntitiesInSystemObservable.class).to(AllEntitiesInSystemTestObservable.class);
+
         install( new CommonModule());
         install( new MapModule() );
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/guice/IndexModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/guice/IndexModule.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/guice/IndexModule.java
index 45813e1..629874b 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/guice/IndexModule.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/guice/IndexModule.java
@@ -38,7 +38,6 @@ public class IndexModule extends AbstractModule {
         install (new GuicyFigModule( IndexFig.class ));
 
         bind(EntityIndexFactory.class).to(EntityIndexFactoryImpl.class);
-        bind(EntityIndex.class).to(EsEntityIndexImpl.class);
 
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityIndexFactoryImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityIndexFactoryImpl.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityIndexFactoryImpl.java
index e45c6c5..7378bfe 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityIndexFactoryImpl.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EntityIndexFactoryImpl.java
@@ -22,6 +22,7 @@ package org.apache.usergrid.persistence.index.impl;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
+import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
 import org.apache.usergrid.persistence.index.EntityIndex;
@@ -45,6 +46,7 @@ public class EntityIndexFactoryImpl implements EntityIndexFactory{
                 return new EsEntityIndexImpl(scope,config,provider,indexCache);
             }
         } );
+    @Inject
     public EntityIndexFactoryImpl(final IndexFig config, final EsProvider provider, final EsIndexCache indexCache){
         this.config = config;
         this.provider = provider;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
index 9e9cebf..af08f59 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
@@ -116,7 +116,7 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
 
 
     @Inject
-    public EsEntityIndexImpl( @Assisted final ApplicationScope appScope, final IndexFig config, final EsProvider provider, final EsIndexCache indexCache) {
+    public EsEntityIndexImpl(  final ApplicationScope appScope, final IndexFig config, final EsProvider provider, final EsIndexCache indexCache) {
         ValidationUtils.validateApplicationScope( appScope );
         this.applicationScope = appScope;
         this.esProvider = provider;
@@ -194,14 +194,14 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
             isAck = adminClient.indices().prepareAliases().addAlias(
                     indexName, alias.getReadAlias()).execute().actionGet().isAcknowledged();
             logger.info("Created new read Alias Name [{}] ACK=[{}]", alias.getReadAlias(), isAck);
-            
+
             // add write alias
             isAck = adminClient.indices().prepareAliases().addAlias(
                     indexName, alias.getWriteAlias()).execute().actionGet().isAcknowledged();
             logger.info("Created new write Alias Name [{}] ACK=[{}]", alias.getWriteAlias(), isAck);
-            
+
             aliasCache.invalidate(alias);
-            
+
         } catch (Exception e) {
             logger.warn("Failed to create alias ", e);
         }
@@ -235,7 +235,7 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
                      .setSource(DEFAULT_PAYLOAD).get();
 
                 logger.info( "Successfully created new document with docId {} "
-                     + "in index read {} write {} and type {}", 
+                     + "in index read {} write {} and type {}",
                         tempId, alias.getReadAlias(), alias.getWriteAlias(), VERIFY_TYPE );
 
                 // delete all types, this way if we miss one it will get cleaned up
@@ -255,7 +255,7 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
 
 
     /**
-     * Setup ElasticSearch type mappings as a template that applies to all new indexes. 
+     * Setup ElasticSearch type mappings as a template that applies to all new indexes.
      * Applies to all indexes that* start with our prefix.
      */
     private void createMappings() throws IOException {
@@ -277,13 +277,13 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
 
     @Override
     public EntityIndexBatch createBatch() {
-        return new EsEntityIndexBatchImpl( 
+        return new EsEntityIndexBatchImpl(
                 applicationScope, esProvider.getClient(), config, 1000, failureMonitor, this );
     }
 
 
     @Override
-    public CandidateResults search( final IndexScope indexScope, final SearchTypes searchTypes, 
+    public CandidateResults search( final IndexScope indexScope, final SearchTypes searchTypes,
             final Query query ) {
 
         final String context = IndexingUtils.createContextName(indexScope);
@@ -322,8 +322,8 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
                 }
 
                 // we do not know the type of the "order by" property and so we do not know what
-                // type prefix to use. So, here we add an order by clause for every possible type 
-                // that you can order by: string, number and boolean and we ask ElasticSearch 
+                // type prefix to use. So, here we add an order by clause for every possible type
+                // that you can order by: string, number and boolean and we ask ElasticSearch
                 // to ignore any fields that are not present.
 
                 final String stringFieldName = STRING_PREFIX + sp.getPropertyName();
@@ -435,7 +435,7 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
                 try {
                     String[] indexes = ArrayUtils.addAll( getIndexes(AliasType.Write), getIndexes(AliasType.Write) );
                     if ( indexes.length == 0 ) {
-                        logger.debug( "Not refreshing indexes, none found for app {}", 
+                        logger.debug( "Not refreshing indexes, none found for app {}",
                                 applicationScope.getApplication().getUuid() );
                         return true;
                     }
@@ -472,7 +472,7 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
         final String context = IndexingUtils.createContextName(scope);
         final SearchTypes searchTypes = SearchTypes.fromTypes( id.getType() );
 
-        final QueryBuilder queryBuilder = 
+        final QueryBuilder queryBuilder =
                 QueryBuilders.termQuery( IndexingUtils.ENTITY_CONTEXT_FIELDNAME, context );
 
         final SearchRequestBuilder srb = esProvider.getClient().prepareSearch( alias.getReadAlias() )
@@ -519,7 +519,7 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
     @Override
     public void deletePreviousVersions( final Id entityId, final UUID version ) {
 
-        String idString = IndexingUtils.idString( entityId ).toLowerCase(); 
+        String idString = IndexingUtils.idString( entityId ).toLowerCase();
 
         final FilteredQueryBuilder fqb = QueryBuilders.filteredQuery(
                 QueryBuilders.termQuery(ENTITYID_ID_FIELDNAME, idString),
@@ -541,7 +541,7 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
     /**
      * Validate the response doesn't contain errors, if it does, fail fast at the first error we encounter
      */
-    private void checkDeleteByQueryResponse( 
+    private void checkDeleteByQueryResponse(
             final QueryBuilder query, final DeleteByQueryResponse response ) {
 
         for ( IndexDeleteByQueryResponse indexDeleteByQueryResponse : response ) {
@@ -550,9 +550,9 @@ public class EsEntityIndexImpl implements AliasedEntityIndex {
             for ( ShardOperationFailedException failedException : failures ) {
                 throw new IndexException( String.format("Unable to delete by query %s. "
                         + "Failed with code %d and reason %s on shard %s in index %s",
-                    query.toString(), 
+                    query.toString(),
                     failedException.status().getStatus(),
-                    failedException.reason(), 
+                    failedException.reason(),
                     failedException.shardId(),
                     failedException.index() ) );
             }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/guice/TestIndexModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/guice/TestIndexModule.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/guice/TestIndexModule.java
index 4d68dda..1b500c1 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/guice/TestIndexModule.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/guice/TestIndexModule.java
@@ -22,12 +22,16 @@ package org.apache.usergrid.persistence.index.guice;
 import org.apache.usergrid.persistence.collection.guice.CollectionModule;
 import org.apache.usergrid.persistence.core.guice.TestModule;
 import org.apache.usergrid.persistence.core.guice.CommonModule;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemTestObservable;
 
 
 public class TestIndexModule extends TestModule {
 
     @Override
     protected void configure() {
+        bind(AllEntitiesInSystemObservable.class).to(AllEntitiesInSystemTestObservable.class);
+
         install( new CommonModule());
 
         // configure collections and our core astyanax framework

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3d937677/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/queue/guice/TestQueueModule.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/queue/guice/TestQueueModule.java b/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/queue/guice/TestQueueModule.java
index aedfe28..4a8d3d9 100644
--- a/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/queue/guice/TestQueueModule.java
+++ b/stack/corepersistence/queue/src/test/java/org/apache/usergrid/persistence/queue/guice/TestQueueModule.java
@@ -20,13 +20,16 @@ package org.apache.usergrid.persistence.queue.guice;
 
 import org.apache.usergrid.persistence.core.guice.TestModule;
 import org.apache.usergrid.persistence.core.guice.CommonModule;
-
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemObservable;
+import org.apache.usergrid.persistence.core.rx.AllEntitiesInSystemTestObservable;
 
 
 public class TestQueueModule extends TestModule {
 
     @Override
     protected void configure() {
+        bind(AllEntitiesInSystemObservable.class).to(AllEntitiesInSystemTestObservable.class);
+
         install( new CommonModule());
         install( new QueueModule() );
     }