@Test
public void testOnCreateShard() {

    LOG.info("testOnCreateShard starting");
    final TestKit kit = new TestKit(getSystem());
    datastoreContextBuilder.shardInitializationTimeout(1, TimeUnit.MINUTES).persistent(true);
    ActorRef shardManager = actorFactory
            .createActor(newShardMgrProps(new ConfigurationImpl(new EmptyModuleShardConfigProvider()))
                .withDispatcher(Dispatchers.DefaultDispatcherId()));
    EffectiveModelContext schemaContext = TEST_SCHEMA_CONTEXT;
    shardManager.tell(new UpdateSchemaContext(schemaContext), ActorRef.noSender());
    DatastoreContext datastoreContext = DatastoreContext.newBuilder().shardElectionTimeoutFactor(100)
            .persistent(false).build();
    Shard.Builder shardBuilder = Shard.builder();
    ModuleShardConfiguration config = new ModuleShardConfiguration(URI.create("foo-ns"), "foo-module",
        "foo", null, members("member-1", "member-5", "member-6"));
    shardManager.tell(new CreateShard(config, shardBuilder, datastoreContext), kit.getRef());
    kit.expectMsgClass(Duration.ofSeconds(5), Success.class);
    shardManager.tell(new FindLocalShard("foo", true), kit.getRef());
    kit.expectMsgClass(Duration.ofSeconds(5), LocalShardFound.class);
    assertFalse("isRecoveryApplicable", shardBuilder.getDatastoreContext().isPersistent());
    assertTrue("Epxected ShardPeerAddressResolver", shardBuilder.getDatastoreContext().getShardRaftConfig()
        .getPeerAddressResolver() instanceof ShardPeerAddressResolver);
    assertEquals("peerMembers", Sets.newHashSet(
        ShardIdentifier.create("foo", MemberName.forName("member-5"), shardMrgIDSuffix).toString(),
        ShardIdentifier.create("foo", MemberName.forName("member-6"), shardMrgIDSuffix).toString()),
        shardBuilder.getPeerAddresses().keySet());
    assertEquals("ShardIdentifier", ShardIdentifier.create("foo", MEMBER_1, shardMrgIDSuffix),
        shardBuilder.getId());
    assertSame("schemaContext", schemaContext, shardBuilder.getSchemaContext());
    // Send CreateShard with same name - should return Success with
    // a message.
    shardManager.tell(new CreateShard(config, shardBuilder, null), kit.getRef());
    Success success = kit.expectMsgClass(Duration.ofSeconds(5), Success.class);
    assertNotNull("Success status is null", success.status());
    LOG.info("testOnCreateShard ending");
}