Skip to content

Commit 0382146

Browse files
committed
Add more ITs and handle some failure cases
Signed-off-by: Gaurav Bafna <[email protected]>
1 parent 3dc55e4 commit 0382146

File tree

5 files changed

+588
-61
lines changed

5 files changed

+588
-61
lines changed

server/src/internalClusterTest/java/org/opensearch/remotestore/RemoteRestoreSnapshotIT.java

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,11 @@
4646
import org.opensearch.repositories.RepositoryData;
4747
import org.opensearch.repositories.blobstore.BlobStoreRepository;
4848
import org.opensearch.repositories.fs.FsRepository;
49-
import org.opensearch.snapshots.AbstractSnapshotIntegTestCase;
5049
import org.opensearch.snapshots.SnapshotInfo;
5150
import org.opensearch.snapshots.SnapshotRestoreException;
5251
import org.opensearch.snapshots.SnapshotState;
5352
import org.opensearch.test.InternalTestCluster;
5453
import org.opensearch.test.OpenSearchIntegTestCase;
55-
import org.junit.After;
56-
import org.junit.Before;
5754

5855
import java.io.IOException;
5956
import java.nio.file.Files;
@@ -83,48 +80,7 @@
8380
import static org.hamcrest.Matchers.lessThanOrEqualTo;
8481

8582
@OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.TEST, numDataNodes = 0)
86-
public class RemoteRestoreSnapshotIT extends AbstractSnapshotIntegTestCase {
87-
private static final String BASE_REMOTE_REPO = "test-rs-repo" + TEST_REMOTE_STORE_REPO_SUFFIX;
88-
private Path remoteRepoPath;
89-
90-
@Before
91-
public void setup() {
92-
remoteRepoPath = randomRepoPath().toAbsolutePath();
93-
}
94-
95-
@After
96-
public void teardown() {
97-
clusterAdmin().prepareCleanupRepository(BASE_REMOTE_REPO).get();
98-
}
99-
100-
@Override
101-
protected Settings nodeSettings(int nodeOrdinal) {
102-
return Settings.builder()
103-
.put(super.nodeSettings(nodeOrdinal))
104-
.put(remoteStoreClusterSettings(BASE_REMOTE_REPO, remoteRepoPath))
105-
.build();
106-
}
107-
108-
private Settings.Builder getIndexSettings(int numOfShards, int numOfReplicas) {
109-
Settings.Builder settingsBuilder = Settings.builder()
110-
.put(super.indexSettings())
111-
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, numOfShards)
112-
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, numOfReplicas)
113-
.put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), "300s");
114-
return settingsBuilder;
115-
}
116-
117-
private void indexDocuments(Client client, String indexName, int numOfDocs) {
118-
indexDocuments(client, indexName, 0, numOfDocs);
119-
}
120-
121-
private void indexDocuments(Client client, String indexName, int fromId, int toId) {
122-
for (int i = fromId; i < toId; i++) {
123-
String id = Integer.toString(i);
124-
client.prepareIndex(indexName).setId(id).setSource("text", "sometext").get();
125-
}
126-
client.admin().indices().prepareFlush(indexName).get();
127-
}
83+
public class RemoteRestoreSnapshotIT extends RemoteSnapshotIT {
12884

12985
private void assertDocsPresentInIndex(Client client, String indexName, int numOfDocs) {
13086
for (int i = 0; i < numOfDocs; i++) {
@@ -1388,11 +1344,4 @@ public void testConcurrentV1SnapshotAndV2RepoSettingUpdate() throws Exception {
13881344
createV1SnapshotThread.join();
13891345
}
13901346

1391-
private Settings pinnedTimestampSettings() {
1392-
Settings settings = Settings.builder()
1393-
.put(RemoteStoreSettings.CLUSTER_REMOTE_STORE_PINNED_TIMESTAMP_ENABLED.getKey(), true)
1394-
.build();
1395-
return settings;
1396-
}
1397-
13981347
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.remotestore;
10+
11+
import org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesRequest;
12+
import org.opensearch.action.admin.cluster.repositories.get.GetRepositoriesResponse;
13+
import org.opensearch.client.Client;
14+
import org.opensearch.cluster.metadata.IndexMetadata;
15+
import org.opensearch.cluster.metadata.RepositoryMetadata;
16+
import org.opensearch.common.settings.Settings;
17+
import org.opensearch.index.IndexSettings;
18+
import org.opensearch.indices.RemoteStoreSettings;
19+
import org.opensearch.repositories.fs.ReloadableFsRepository;
20+
import org.opensearch.snapshots.AbstractSnapshotIntegTestCase;
21+
import org.junit.After;
22+
import org.junit.Before;
23+
24+
import java.nio.file.Path;
25+
import java.util.concurrent.ExecutionException;
26+
27+
import static org.opensearch.repositories.fs.ReloadableFsRepository.REPOSITORIES_FAILRATE_SETTING;
28+
29+
public abstract class RemoteSnapshotIT extends AbstractSnapshotIntegTestCase {
30+
protected static final String BASE_REMOTE_REPO = "test-rs-repo" + TEST_REMOTE_STORE_REPO_SUFFIX;
31+
protected Path remoteRepoPath;
32+
33+
@Before
34+
public void setup() {
35+
remoteRepoPath = randomRepoPath().toAbsolutePath();
36+
}
37+
38+
@After
39+
public void teardown() {
40+
clusterAdmin().prepareCleanupRepository(BASE_REMOTE_REPO).get();
41+
}
42+
43+
@Override
44+
protected Settings nodeSettings(int nodeOrdinal) {
45+
return Settings.builder()
46+
.put(super.nodeSettings(nodeOrdinal))
47+
.put(remoteStoreClusterSettings(BASE_REMOTE_REPO, remoteRepoPath))
48+
.build();
49+
}
50+
51+
protected Settings pinnedTimestampSettings() {
52+
Settings settings = Settings.builder()
53+
.put(RemoteStoreSettings.CLUSTER_REMOTE_STORE_PINNED_TIMESTAMP_ENABLED.getKey(), true)
54+
.build();
55+
return settings;
56+
}
57+
58+
protected Settings.Builder getIndexSettings(int numOfShards, int numOfReplicas) {
59+
Settings.Builder settingsBuilder = Settings.builder()
60+
.put(super.indexSettings())
61+
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, numOfShards)
62+
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, numOfReplicas)
63+
.put(IndexSettings.INDEX_REFRESH_INTERVAL_SETTING.getKey(), "300s");
64+
return settingsBuilder;
65+
}
66+
67+
protected void indexDocuments(Client client, String indexName, int numOfDocs) {
68+
indexDocuments(client, indexName, 0, numOfDocs);
69+
}
70+
71+
void indexDocuments(Client client, String indexName, int fromId, int toId) {
72+
for (int i = fromId; i < toId; i++) {
73+
String id = Integer.toString(i);
74+
client.prepareIndex(indexName).setId(id).setSource("text", "sometext").get();
75+
}
76+
client.admin().indices().prepareFlush(indexName).get();
77+
}
78+
79+
protected void setFailRate(String repoName, int value) throws ExecutionException, InterruptedException {
80+
GetRepositoriesRequest gr = new GetRepositoriesRequest(new String[] { repoName });
81+
GetRepositoriesResponse res = client().admin().cluster().getRepositories(gr).get();
82+
RepositoryMetadata rmd = res.repositories().get(0);
83+
Settings.Builder settings = Settings.builder()
84+
.put("location", rmd.settings().get("location"))
85+
.put(REPOSITORIES_FAILRATE_SETTING.getKey(), value);
86+
createRepository(repoName, ReloadableFsRepository.TYPE, settings);
87+
}
88+
89+
}

0 commit comments

Comments
 (0)