Skip to content

Commit 7dc84b5

Browse files
authored
Handle exceptions gracefully when delete non-existent resources during integ test resource clean up (#1154)
* Handle exceptions gracefully when delete non-existent resources during integ test resource clean up Signed-off-by: Weijia Zhao <zweijia@amazon.com> * Clean up test resource dynamically after each test case Signed-off-by: Weijia Zhao <zweijia@amazon.com> * Code clean up Signed-off-by: Weijia Zhao <zweijia@amazon.com> * Fixing failing bwc tests Signed-off-by: Weijia Zhao <zweijia@amazon.com> * Revert bwc test resource cleanup logic Signed-off-by: Weijia Zhao <zweijia@amazon.com> --------- Signed-off-by: Weijia Zhao <zweijia@amazon.com>
1 parent e8ed3a4 commit 7dc84b5

26 files changed

+3761
-4146
lines changed

qa/restart-upgrade/src/test/java/org/opensearch/neuralsearch/bwc/restart/AbstractRestartUpgradeRestTestCase.java

+10
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,16 @@ protected final Settings restClientSettings() {
5353
.build();
5454
}
5555

56+
@Override
57+
protected boolean shouldCleanUpResources() {
58+
// All NEW CLUSTER tests depend on resources created in OLD CLUSTER test cases
59+
// Before NEW CLUSTER tests run, all OLD CLUSTER test cases will be run first
60+
// We only want to clean up resources in NEW CLUSTER tests, also we don't want to clean up after each test case finishes
61+
// this is because the cleanup method will pull every resource and delete, which will impact other tests
62+
// Overriding the method in base class so that resources won't be accidentally clean up
63+
return false;
64+
}
65+
5666
protected static final boolean isRunningAgainstOldCluster() {
5767
return Boolean.parseBoolean(System.getProperty(RESTART_UPGRADE_OLD_CLUSTER));
5868
}

qa/rolling-upgrade/src/test/java/org/opensearch/neuralsearch/bwc/rolling/AbstractRollingUpgradeTestCase.java

+10
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ protected final Settings restClientSettings() {
5656
.build();
5757
}
5858

59+
@Override
60+
protected boolean shouldCleanUpResources() {
61+
// All UPGRADE tests depend on resources created in OLD and MIXED test cases
62+
// Before UPGRADE tests run, all OLD and MIXED test cases will be run first
63+
// We only want to clean up resources in upgrade tests, also we don't want to clean up after each test case finishes
64+
// this is because the cleanup method will pull every resource and delete, which will impact other tests
65+
// Overriding the method in base class so that resources won't be accidentally clean up
66+
return false;
67+
}
68+
5969
protected enum ClusterType {
6070
OLD,
6171
MIXED,

src/test/java/org/opensearch/neuralsearch/processor/NeuralQueryEnricherProcessorIT.java

+47-63
Original file line numberDiff line numberDiff line change
@@ -48,84 +48,68 @@ public void setUp() throws Exception {
4848
@SneakyThrows
4949
public void testNeuralQueryEnricherProcessor_whenNoModelIdPassed_thenSuccess() {
5050
String modelId = null;
51-
try {
52-
initializeIndexIfNotExist(index);
53-
modelId = prepareModel();
54-
createSearchRequestProcessor(modelId, search_pipeline);
55-
createPipelineProcessor(modelId, ingest_pipeline, ProcessorType.TEXT_EMBEDDING);
56-
updateIndexSettings(index, Settings.builder().put("index.search.default_pipeline", search_pipeline));
57-
NeuralQueryBuilder neuralQueryBuilder = NeuralQueryBuilder.builder()
58-
.fieldName(TEST_KNN_VECTOR_FIELD_NAME_1)
59-
.queryText("Hello World")
60-
.k(1)
61-
.build();
62-
Map<String, Object> response = search(index, neuralQueryBuilder, 2);
63-
assertFalse(response.isEmpty());
64-
} finally {
65-
wipeOfTestResources(index, ingest_pipeline, modelId, search_pipeline);
66-
}
51+
initializeIndexIfNotExist(index);
52+
modelId = prepareModel();
53+
createSearchRequestProcessor(modelId, search_pipeline);
54+
createPipelineProcessor(modelId, ingest_pipeline, ProcessorType.TEXT_EMBEDDING);
55+
updateIndexSettings(index, Settings.builder().put("index.search.default_pipeline", search_pipeline));
56+
NeuralQueryBuilder neuralQueryBuilder = NeuralQueryBuilder.builder()
57+
.fieldName(TEST_KNN_VECTOR_FIELD_NAME_1)
58+
.queryText("Hello World")
59+
.k(1)
60+
.build();
61+
Map<String, Object> response = search(index, neuralQueryBuilder, 2);
62+
assertFalse(response.isEmpty());
6763
}
6864

6965
@SneakyThrows
7066
public void testNeuralQueryEnricherProcessor_whenNoModelIdPassedInNeuralSparseQuery_thenSuccess() {
7167
String modelId = null;
72-
try {
73-
initializeIndexIfNotExist(sparseIndex);
74-
modelId = prepareSparseEncodingModel();
75-
createSearchRequestProcessor(modelId, search_pipeline);
76-
createPipelineProcessor(modelId, ingest_pipeline, ProcessorType.SPARSE_ENCODING);
77-
updateIndexSettings(sparseIndex, Settings.builder().put("index.search.default_pipeline", search_pipeline));
78-
NeuralSparseQueryBuilder neuralSparseQueryBuilder = new NeuralSparseQueryBuilder();
79-
neuralSparseQueryBuilder.fieldName(TEST_RANK_FEATURES_FIELD_NAME_1);
80-
neuralSparseQueryBuilder.queryText("hello");
81-
Map<String, Object> response = search(sparseIndex, neuralSparseQueryBuilder, 2);
82-
assertFalse(response.isEmpty());
83-
} finally {
84-
wipeOfTestResources(sparseIndex, ingest_pipeline, modelId, search_pipeline);
85-
}
68+
initializeIndexIfNotExist(sparseIndex);
69+
modelId = prepareSparseEncodingModel();
70+
createSearchRequestProcessor(modelId, search_pipeline);
71+
createPipelineProcessor(modelId, ingest_pipeline, ProcessorType.SPARSE_ENCODING);
72+
updateIndexSettings(sparseIndex, Settings.builder().put("index.search.default_pipeline", search_pipeline));
73+
NeuralSparseQueryBuilder neuralSparseQueryBuilder = new NeuralSparseQueryBuilder();
74+
neuralSparseQueryBuilder.fieldName(TEST_RANK_FEATURES_FIELD_NAME_1);
75+
neuralSparseQueryBuilder.queryText("hello");
76+
Map<String, Object> response = search(sparseIndex, neuralSparseQueryBuilder, 2);
77+
assertFalse(response.isEmpty());
8678
}
8779

8880
@SneakyThrows
8981
public void testNeuralQueryEnricherProcessor_whenGetEmptyQueryBody_thenSuccess() {
90-
try {
91-
initializeIndexIfNotExist(index);
92-
createSearchRequestProcessor(null, search_pipeline);
93-
createPipelineProcessor(null, ingest_pipeline, ProcessorType.TEXT_EMBEDDING);
94-
updateIndexSettings(index, Settings.builder().put("index.search.default_pipeline", search_pipeline));
95-
Request request = new Request("POST", "/" + index + "/_search");
96-
Response response = client().performRequest(request);
97-
assertEquals(request.getEndpoint() + ": failed", RestStatus.OK, RestStatus.fromCode(response.getStatusLine().getStatusCode()));
98-
String responseBody = EntityUtils.toString(response.getEntity());
99-
Map<String, Object> responseInMap = XContentHelper.convertToMap(XContentType.JSON.xContent(), responseBody, false);
100-
assertFalse(responseInMap.isEmpty());
101-
assertEquals(3, ((Map) responseInMap.get("hits")).size());
102-
} finally {
103-
wipeOfTestResources(index, ingest_pipeline, null, search_pipeline);
104-
}
82+
initializeIndexIfNotExist(index);
83+
createSearchRequestProcessor(null, search_pipeline);
84+
createPipelineProcessor(null, ingest_pipeline, ProcessorType.TEXT_EMBEDDING);
85+
updateIndexSettings(index, Settings.builder().put("index.search.default_pipeline", search_pipeline));
86+
Request request = new Request("POST", "/" + index + "/_search");
87+
Response response = client().performRequest(request);
88+
assertEquals(request.getEndpoint() + ": failed", RestStatus.OK, RestStatus.fromCode(response.getStatusLine().getStatusCode()));
89+
String responseBody = EntityUtils.toString(response.getEntity());
90+
Map<String, Object> responseInMap = XContentHelper.convertToMap(XContentType.JSON.xContent(), responseBody, false);
91+
assertFalse(responseInMap.isEmpty());
92+
assertEquals(3, ((Map) responseInMap.get("hits")).size());
10593
}
10694

10795
@SneakyThrows
10896
public void testNeuralQueryEnricherProcessor_whenHybridQueryBuilderAndNoModelIdPassed_thenSuccess() {
10997
String modelId = null;
110-
try {
111-
initializeIndexIfNotExist(index);
112-
modelId = prepareModel();
113-
createSearchRequestProcessor(modelId, search_pipeline);
114-
createPipelineProcessor(modelId, ingest_pipeline, ProcessorType.TEXT_EMBEDDING);
115-
updateIndexSettings(index, Settings.builder().put("index.search.default_pipeline", search_pipeline));
116-
NeuralQueryBuilder neuralQueryBuilder = NeuralQueryBuilder.builder()
117-
.fieldName(TEST_KNN_VECTOR_FIELD_NAME_1)
118-
.queryText("Hello World")
119-
.k(1)
120-
.build();
121-
HybridQueryBuilder hybridQueryBuilder = new HybridQueryBuilder();
122-
hybridQueryBuilder.add(neuralQueryBuilder);
123-
Map<String, Object> response = search(index, hybridQueryBuilder, 2);
98+
initializeIndexIfNotExist(index);
99+
modelId = prepareModel();
100+
createSearchRequestProcessor(modelId, search_pipeline);
101+
createPipelineProcessor(modelId, ingest_pipeline, ProcessorType.TEXT_EMBEDDING);
102+
updateIndexSettings(index, Settings.builder().put("index.search.default_pipeline", search_pipeline));
103+
NeuralQueryBuilder neuralQueryBuilder = NeuralQueryBuilder.builder()
104+
.fieldName(TEST_KNN_VECTOR_FIELD_NAME_1)
105+
.queryText("Hello World")
106+
.k(1)
107+
.build();
108+
HybridQueryBuilder hybridQueryBuilder = new HybridQueryBuilder();
109+
hybridQueryBuilder.add(neuralQueryBuilder);
110+
Map<String, Object> response = search(index, hybridQueryBuilder, 2);
124111

125-
assertFalse(response.isEmpty());
126-
} finally {
127-
wipeOfTestResources(index, ingest_pipeline, modelId, search_pipeline);
128-
}
112+
assertFalse(response.isEmpty());
129113
}
130114

131115
@SneakyThrows

0 commit comments

Comments
 (0)