@Test(groups = "unit", dataProvider = "readPrimaryArgProvider")
public void readPrimary(EndpointMock endpointMock,
                        EndpointMock.EndpointMockVerificationBuilder verification,
                        StoreResponseValidator storeResponseValidator) {

    ISessionContainer sessionContainer = Mockito.mock(ISessionContainer.class);
    GatewayServiceConfigurationReader serviceConfigurator = Mockito.mock(GatewayServiceConfigurationReader.class);
    IAuthorizationTokenProvider authTokenProvider = Mockito.mock(IAuthorizationTokenProvider.class);
    QuorumReader quorumReader = new QuorumReader(configs, endpointMock.transportClientWrapper.transportClient,
                                                 endpointMock.addressSelectorWrapper.addressSelector,
                                                 new StoreReader(endpointMock.transportClientWrapper.transportClient,
                                                                 endpointMock.addressSelectorWrapper.addressSelector,
                                                                 sessionContainer),
                                                 serviceConfigurator,
                                                 authTokenProvider);
    RxDocumentServiceRequest request = RxDocumentServiceRequest.createFromName(
            OperationType.Read, "/dbs/db/colls/col/docs/docId", ResourceType.Document);
    request.requestContext = new DocumentServiceRequestContext();
    request.requestContext.timeoutHelper = Mockito.mock(TimeoutHelper.class);
    request.requestContext.resolvedPartitionKeyRange = Mockito.mock(PartitionKeyRange.class);
    request.requestContext.requestChargeTracker = new RequestChargeTracker();
    int replicaCountToRead = 1;
    ReadMode readMode = ReadMode.Strong;
    Single<StoreResponse> storeResponseSingle = quorumReader.readStrongAsync(request, replicaCountToRead, readMode);
    validateSuccess(storeResponseSingle, storeResponseValidator);
    endpointMock.validate(verification);
}