@Before
  public void before() throws ReflectiveOperationException, CloudStorageException, IOException, StoreException {
    // Assume Azurite is up and running
    assumeTrue(azuriteUtils.connectToAzurite());
    // Create local store
    localStore =
        new BlobStore(mockPartitionId.getReplicaIds().get(0), new StoreConfig(verifiableProperties),
            Utils.newScheduler(1, false), Utils.newScheduler(1, false), null, new DiskIOScheduler(null),
            StoreTestUtils.DEFAULT_DISK_SPACE_ALLOCATOR, new StoreMetrics(mockClusterMap.getMetricRegistry()),
            new StoreMetrics("UnderCompaction", mockClusterMap.getMetricRegistry()), null, null, null,
            Collections.singletonList(mock(ReplicaStatusDelegate.class)), new MockTime(),
            new InMemAccountService(false, false), null, Utils.newScheduler(1, false));
    localStore.start();
    // Create remote-replica info
    remoteStore =
        new RemoteReplicaInfo(cloudReplica, mockPartitionId.getReplicaIds().get(0), localStore, new RecoveryToken(),
            Long.MAX_VALUE, SystemTime.getInstance(), new Port(cloudServiceDataNode.getPort(), PortType.PLAINTEXT));
    // Clear the partition
    AzureCloudDestinationSync azuriteClient = azuriteUtils.getAzuriteClient(
        properties, mockClusterMap.getMetricRegistry(),    null, null);
    azuriteUtils.clearContainer(mockPartitionId, azuriteClient, verifiableProperties);
    // Add NUM_BLOBS of size BLOB_SIZE
    azureBlobs = new HashMap<>();
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    IntStream.range(0, NUM_BLOBS).forEach(i -> {
      BlobId blobId = CloudTestUtil.getUniqueId(testContainer.getParentAccountId(), testContainer.getId(),
          false, mockPartitionId);
      // FIXME: We are not uploading CRC irl !!!
      azureBlobs.put(blobId.getID(), new MessageInfo(blobId,
          BLOB_SIZE, false, false, false, Utils.Infinite_Time, null,
          testContainer.getParentAccountId(), testContainer.getId(),
          Utils.getTimeInMsToTheNearestSec(System.currentTimeMillis()), (short) 0));
      try {
        outputStream.write(BLOB_DATA.getBytes());
      } catch (IOException e) {
        throw new RuntimeException(e);
      }
    });
    // Upload blobs
    List<MessageInfo> blobIds = new ArrayList<>(azureBlobs.values());
    InputStream blobData = new ByteBufferInputStream(ByteBuffer.wrap(outputStream.toByteArray()));
    MessageFormatWriteSet messageWriteSet = new MessageFormatWriteSet(
        new MessageSievingInputStream(blobData, blobIds, Collections.emptyList(), new MetricRegistry()),
        blobIds, false);
    azuriteClient.uploadBlobs(messageWriteSet);
  }
Before the test:
1. Deletes all blobs in test container in Azurite and uploads new ones,
2. Creates a local-store to download blobs from Azurite
@throws ReflectiveOperationException
@throws CloudStorageException
@throws IOException
ambry-cloud/src/test/java/com/github/ambry/cloud/RecoveryNetworkClientTest.java