|
13 | 13 | import org.opensearch.action.admin.cluster.snapshots.create.CreateSnapshotResponse;
|
14 | 14 | import org.opensearch.action.admin.cluster.snapshots.restore.RestoreSnapshotResponse;
|
15 | 15 | import org.opensearch.action.admin.indices.delete.DeleteIndexRequest;
|
| 16 | +import org.opensearch.action.admin.indices.recovery.RecoveryResponse; |
16 | 17 | import org.opensearch.action.delete.DeleteResponse;
|
17 | 18 | import org.opensearch.action.support.PlainActionFuture;
|
18 | 19 | import org.opensearch.client.Client;
|
19 | 20 | import org.opensearch.client.Requests;
|
20 | 21 | import org.opensearch.cluster.ClusterState;
|
21 | 22 | import org.opensearch.cluster.metadata.IndexMetadata;
|
| 23 | +import org.opensearch.cluster.routing.RecoverySource; |
22 | 24 | import org.opensearch.common.Nullable;
|
23 | 25 | import org.opensearch.common.blobstore.BlobPath;
|
24 | 26 | import org.opensearch.common.io.PathUtils;
|
|
34 | 36 | import org.opensearch.index.shard.IndexShard;
|
35 | 37 | import org.opensearch.indices.IndicesService;
|
36 | 38 | import org.opensearch.indices.RemoteStoreSettings;
|
| 39 | +import org.opensearch.indices.recovery.RecoveryState; |
37 | 40 | import org.opensearch.indices.replication.common.ReplicationType;
|
38 | 41 | import org.opensearch.repositories.RepositoriesService;
|
39 | 42 | import org.opensearch.repositories.Repository;
|
|
73 | 76 | import static org.hamcrest.Matchers.equalTo;
|
74 | 77 | import static org.hamcrest.Matchers.greaterThan;
|
75 | 78 | import static org.hamcrest.Matchers.greaterThanOrEqualTo;
|
| 79 | +import static org.hamcrest.Matchers.lessThanOrEqualTo; |
76 | 80 |
|
77 | 81 | @OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.TEST, numDataNodes = 0)
|
78 | 82 | public class RemoteRestoreSnapshotIT extends AbstractSnapshotIntegTestCase {
|
@@ -589,6 +593,37 @@ public void testRestoreShallowSnapshotRepository() throws ExecutionException, In
|
589 | 593 | ensureGreen(restoredIndexName1);
|
590 | 594 | assertDocsPresentInIndex(client, restoredIndexName1, numDocsInIndex1);
|
591 | 595 |
|
| 596 | + // ensure recovery details are non-zero |
| 597 | + RecoveryResponse recoveryResponse = client().admin().indices().prepareRecoveries(restoredIndexName1).execute().actionGet(); |
| 598 | + assertEquals(1, recoveryResponse.getTotalShards()); |
| 599 | + assertEquals(1, recoveryResponse.getSuccessfulShards()); |
| 600 | + assertEquals(0, recoveryResponse.getFailedShards()); |
| 601 | + assertEquals(1, recoveryResponse.shardRecoveryStates().size()); |
| 602 | + assertTrue(recoveryResponse.shardRecoveryStates().containsKey(restoredIndexName1)); |
| 603 | + assertEquals(1, recoveryResponse.shardRecoveryStates().get(restoredIndexName1).size()); |
| 604 | + |
| 605 | + RecoveryState recoveryState = recoveryResponse.shardRecoveryStates().get(restoredIndexName1).get(0); |
| 606 | + assertEquals(RecoveryState.Stage.DONE, recoveryState.getStage()); |
| 607 | + assertEquals(0, recoveryState.getShardId().getId()); |
| 608 | + assertTrue(recoveryState.getPrimary()); |
| 609 | + assertEquals(RecoverySource.Type.SNAPSHOT, recoveryState.getRecoverySource().getType()); |
| 610 | + assertThat(recoveryState.getIndex().time(), greaterThanOrEqualTo(0L)); |
| 611 | + |
| 612 | + // ensure populated file details |
| 613 | + assertTrue(recoveryState.getIndex().totalFileCount() > 0); |
| 614 | + assertTrue(recoveryState.getIndex().totalRecoverFiles() > 0); |
| 615 | + assertTrue(recoveryState.getIndex().recoveredFileCount() > 0); |
| 616 | + assertThat(recoveryState.getIndex().recoveredFilesPercent(), greaterThanOrEqualTo(0.0f)); |
| 617 | + assertThat(recoveryState.getIndex().recoveredFilesPercent(), lessThanOrEqualTo(100.0f)); |
| 618 | + assertFalse(recoveryState.getIndex().fileDetails().isEmpty()); |
| 619 | + |
| 620 | + // ensure populated bytes details |
| 621 | + assertTrue(recoveryState.getIndex().recoveredBytes() > 0L); |
| 622 | + assertTrue(recoveryState.getIndex().totalBytes() > 0L); |
| 623 | + assertTrue(recoveryState.getIndex().totalRecoverBytes() > 0L); |
| 624 | + assertThat(recoveryState.getIndex().recoveredBytesPercent(), greaterThanOrEqualTo(0.0f)); |
| 625 | + assertThat(recoveryState.getIndex().recoveredBytesPercent(), lessThanOrEqualTo(100.0f)); |
| 626 | + |
592 | 627 | // indexing some new docs and validating
|
593 | 628 | indexDocuments(client, restoredIndexName1, numDocsInIndex1, numDocsInIndex1 + 2);
|
594 | 629 | ensureGreen(restoredIndexName1);
|
|
0 commit comments