### Question:
RangeStoreServiceImpl implements RangeStoreService, AutoCloseable { @Override public CompletableFuture<Void> start() { List<CompletableFuture<Void>> futures = Lists.newArrayList( startRootRangeStore(), startMetaRangeStore(scId)); return FutureUtils.collect(futures).thenApply(ignored -> null); } RangeStoreServiceImpl(long scId,
                          StorageContainerPlacementPolicy rangePlacementPolicy,
                          OrderedScheduler scheduler,
                          MVCCStoreFactory storeFactory,
                          StorageServerClientManager clientManager);   RangeStoreServiceImpl(long scId,
                          OrderedScheduler scheduler,
                          MVCCStoreFactory storeFactory,
                          RootRangeStoreFactory rrStoreFactory,
                          MetaRangeStoreFactory mrStoreFactory,
                          TableStoreFactory tableStoreFactory); long getId(); @Override CompletableFuture<Void> start(); @Override CompletableFuture<Void> stop(); @Override void close(); @Override CompletableFuture<CreateNamespaceResponse> createNamespace(CreateNamespaceRequest request); @Override CompletableFuture<DeleteNamespaceResponse> deleteNamespace(DeleteNamespaceRequest request); @Override CompletableFuture<GetNamespaceResponse> getNamespace(GetNamespaceRequest request); @Override CompletableFuture<CreateStreamResponse> createStream(CreateStreamRequest request); @Override CompletableFuture<DeleteStreamResponse> deleteStream(DeleteStreamRequest request); @Override CompletableFuture<GetStreamResponse> getStream(GetStreamRequest request); @Override CompletableFuture<GetActiveRangesResponse> getActiveRanges(GetActiveRangesRequest request); @Override CompletableFuture<RangeResponse> range(RangeRequest request); @Override CompletableFuture<PutResponse> put(PutRequest request); @Override CompletableFuture<DeleteRangeResponse> delete(DeleteRangeRequest request); @Override CompletableFuture<TxnResponse> txn(TxnRequest request); @Override CompletableFuture<IncrementResponse> incr(IncrementRequest request);  }### Answer:
@Test public void testStart() throws Exception { mockStorageContainer(SCID); FutureUtils.result(container.start()); verify(mvccStoreFactory, times(0)) .openStore(eq(ROOT_STORAGE_CONTAINER_ID), eq(ROOT_STREAM_ID), eq(ROOT_RANGE_ID)); verify(rrStoreFactory, times(0)) .createStore(eq(rrMvccStore)); verify(mvccStoreFactory, times(1)) .openStore(eq(SCID), eq(CONTAINER_META_STREAM_ID), eq(CONTAINER_META_RANGE_ID)); verify(mrStoreFactory, times(1)) .createStore(eq(mrMvccStore)); }
@Test public void testStartRootContainer() throws Exception { mockStorageContainer(ROOT_STORAGE_CONTAINER_ID); RangeStoreServiceImpl container = new RangeStoreServiceImpl( ROOT_STORAGE_CONTAINER_ID, scheduler, mvccStoreFactory, rrStoreFactory, mrStoreFactory, tableStoreFactory); FutureUtils.result(container.start()); verify(mvccStoreFactory, times(1)) .openStore(eq(ROOT_STORAGE_CONTAINER_ID), eq(ROOT_STREAM_ID), eq(ROOT_RANGE_ID)); verify(rrStoreFactory, times(1)) .createStore(eq(rrMvccStore)); verify(mvccStoreFactory, times(1)) .openStore(eq(ROOT_STORAGE_CONTAINER_ID), eq(CONTAINER_META_STREAM_ID), eq(CONTAINER_META_RANGE_ID)); verify(mrStoreFactory, times(1)) .createStore(eq(mrMvccStore)); }