@Test
  public void testBlobBasedHydrationInCompleteToBlobBasedHydration() {
    // Arrange
    clearInvocations(fileCopyManagerListener);
    clearInvocations(storageManagerListener);

    final BootstrapController.BootstrapControllerImpl bootstrapControllerImpl =
        getBootstrapControllerImpl(ServerReplicationMode.BLOB_BASED);

    TestReplica testReplica = mock(TestReplica.class);
    PartitionId partitionId = mock(PartitionId.class);
    when(testReplica.getPartitionId())
        .thenReturn(partitionId);
    when(storeManager.getReplica(partitionName1))
        .thenReturn(testReplica);
    when(storeManager.isFileExists(partitionId, storeConfig.storeBootstrapInProgressFile))
        .thenReturn(true);

    // Act
    bootstrapControllerImpl.onPartitionBecomeBootstrapFromOffline(partitionName1);

    // Assert
    verify(fileCopyManagerListener, never())
        .onPartitionBecomeBootstrapFromOffline(partitionName1);
    verify(storageManagerListener, times(1))
        .onPartitionBecomeBootstrapFromOffline(partitionName1);

    assert bootstrapControllerImpl.replicationProtocolTransitionType.size() == 1;
    assert bootstrapControllerImpl.replicationProtocolTransitionType.contains(
        ReplicationProtocolTransitionType.BLOB_BASED_HYDRATION_INCOMPLETE_TO_BLOB_BASED_HYDRATION);
  }
Test for {@link BootstrapController.BootstrapControllerImpl#onPartitionBecomeBootstrapFromOffline(String)}
when :-
1. The server replication mode is {@link ServerReplicationMode#BLOB_BASED}
2. Replica is not null
3. Bootstrap_in_progress file exists
Bootstrap Controller is expected to instantiate storageManagerListener
ReplicationProtocolTransitionType is {@link ReplicationProtocolTransitionType#BLOB_BASED_HYDRATION_INCOMPLETE_TO_BLOB_BASED_HYDRATION}
ambry-store/src/test/java/com/github/ambry/store/BootstrapControllerTest.java