+ public AbstractDataStore setupAbstractDataStore(final Class<? extends AbstractDataStore> implementation,
+ final String typeName, final String moduleShardsConfig,
+ final boolean waitUntilLeader, final String... shardNames)
+ throws Exception {
+ return setupAbstractDataStore(implementation, typeName, moduleShardsConfig, waitUntilLeader,
+ SchemaContextHelper.full(), shardNames);
+ }
+
+ public AbstractDataStore setupAbstractDataStore(final Class<? extends AbstractDataStore> implementation,
+ final String typeName, final String moduleShardsConfig,
+ final boolean waitUntilLeader,
+ final SchemaContext schemaContext,
+ final String... shardNames) throws Exception {
+ return setupAbstractDataStore(implementation, typeName, moduleShardsConfig, "modules.conf", waitUntilLeader,
+ schemaContext, shardNames);
+ }
+
+ private AbstractDataStore setupAbstractDataStore(final Class<? extends AbstractDataStore> implementation,
+ final String typeName, final String moduleShardsConfig,
+ final String modulesConfig, final boolean waitUntilLeader,
+ final SchemaContext schemaContext, final String... shardNames)
+ throws Exception {
+ final ClusterWrapper cluster = new ClusterWrapperImpl(getSystem());
+ final Configuration config = new ConfigurationImpl(moduleShardsConfig, modulesConfig);
+
+ datastoreContextBuilder.dataStoreName(typeName);
+
+ final DatastoreContext datastoreContext = datastoreContextBuilder.build();
+ final DatastoreContextFactory mockContextFactory = Mockito.mock(DatastoreContextFactory.class);
+ Mockito.doReturn(datastoreContext).when(mockContextFactory).getBaseDatastoreContext();
+ Mockito.doReturn(datastoreContext).when(mockContextFactory).getShardDatastoreContext(Mockito.anyString());
+
+ final Constructor constructor = implementation.getDeclaredConstructor(
+ ActorSystem.class, ClusterWrapper.class, Configuration.class,
+ DatastoreContextFactory.class, DatastoreSnapshot.class);
+
+ final AbstractDataStore dataStore = (AbstractDataStore) constructor.newInstance(
+ getSystem(), cluster, config, mockContextFactory, restoreFromSnapshot);