protected ReplicaThread createRecoveryThread(RecoveryNetworkClient recoveryNetworkClient) {
    // Create ReplicaThread
    MockStoreKeyConverterFactory storeKeyConverterFactory =
        new MockStoreKeyConverterFactory(null, null)
            .setConversionMap(new HashMap<>())
            .setReturnInputIfAbsent(true);
    StoreKeyConverter storeKeyConverter = storeKeyConverterFactory.getStoreKeyConverter();
    RecoveryManager recoveryManager = mock(RecoveryManager.class);
    when(recoveryManager.getRecoveryTokenFilename(any())).thenCallRealMethod();
    ReplicationMetrics replicationMetrics = new ReplicationMetrics(mockClusterMap.getMetricRegistry(), Collections.emptyList());
    ReplicaThread recoveryThread =
        new RecoveryThread("recovery-thread", findTokenHelper, mockClusterMap, new AtomicInteger(0),
            cloudServiceDataNode, recoveryNetworkClient, new ReplicationConfig(verifiableProperties),
            replicationMetrics, null,
            storeKeyConverter, null,
            mockClusterMap.getMetricRegistry(), false, cloudServiceDataNode.getDatacenterName(),
            new ResponseHandler(mockClusterMap), new SystemTime(), null, null,
            null, recoveryManager);
    // Add remote-replica-info to replica-thread
    recoveryThread.addRemoteReplicaInfo(remoteStore);
    return recoveryThread;
  }
Returns a replica thread that replicates from Azurite to local-store
@param recoveryNetworkClient
@return
ambry-cloud/src/test/java/com/github/ambry/cloud/RecoveryNetworkClientTest.java