Skip to content

Commit 8a52988

Browse files
harishbhakuniHarish Bhakuni
authored andcommitted
Parameterize ITs to run with concurrent search enabled (opensearch-project#9441)
* Parameterize ITs to run with concurrent search enabled Signed-off-by: Harish Bhakuni <hbhakuni@amazon.com> * Address PR Changes Signed-off-by: Harish Bhakuni <hbhakuni@amazon.com> * Address PR Comments Signed-off-by: Harish Bhakuni <hbhakuni@amazon.com> --------- Signed-off-by: Harish Bhakuni <hbhakuni@amazon.com> Co-authored-by: Harish Bhakuni <hbhakuni@amazon.com> Signed-off-by: Shivansh Arora <hishiv@amazon.com>
1 parent bab55b8 commit 8a52988

16 files changed

+375
-32
lines changed

server/src/internalClusterTest/java/org/opensearch/indices/IndicesRequestCacheIT.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232

3333
package org.opensearch.indices;
3434

35+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
36+
3537
import org.opensearch.action.admin.indices.alias.Alias;
3638
import org.opensearch.action.admin.indices.forcemerge.ForceMergeResponse;
3739
import org.opensearch.action.search.SearchResponse;
@@ -40,22 +42,25 @@
4042
import org.opensearch.cluster.metadata.IndexMetadata;
4143
import org.opensearch.common.settings.Settings;
4244
import org.opensearch.common.time.DateFormatter;
45+
import org.opensearch.common.util.FeatureFlags;
4346
import org.opensearch.index.cache.request.RequestCacheStats;
4447
import org.opensearch.index.query.QueryBuilders;
4548
import org.opensearch.search.aggregations.bucket.global.GlobalAggregationBuilder;
4649
import org.opensearch.search.aggregations.bucket.histogram.DateHistogramInterval;
4750
import org.opensearch.search.aggregations.bucket.histogram.Histogram;
4851
import org.opensearch.search.aggregations.bucket.histogram.Histogram.Bucket;
49-
import org.opensearch.test.OpenSearchIntegTestCase;
52+
import org.opensearch.test.ParameterizedOpenSearchIntegTestCase;
5053
import org.opensearch.test.hamcrest.OpenSearchAssertions;
5154

5255
import java.time.ZoneId;
5356
import java.time.ZoneOffset;
5457
import java.time.ZonedDateTime;
5558
import java.time.format.DateTimeFormatter;
5659
import java.util.Arrays;
60+
import java.util.Collection;
5761
import java.util.List;
5862

63+
import static org.opensearch.search.SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING;
5964
import static org.opensearch.search.aggregations.AggregationBuilders.dateHistogram;
6065
import static org.opensearch.search.aggregations.AggregationBuilders.dateRange;
6166
import static org.opensearch.search.aggregations.AggregationBuilders.filter;
@@ -64,7 +69,23 @@
6469
import static org.hamcrest.Matchers.equalTo;
6570
import static org.hamcrest.Matchers.greaterThan;
6671

67-
public class IndicesRequestCacheIT extends OpenSearchIntegTestCase {
72+
public class IndicesRequestCacheIT extends ParameterizedOpenSearchIntegTestCase {
73+
public IndicesRequestCacheIT(Settings settings) {
74+
super(settings);
75+
}
76+
77+
@ParametersFactory
78+
public static Collection<Object[]> parameters() {
79+
return Arrays.asList(
80+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), false).build() },
81+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), true).build() }
82+
);
83+
}
84+
85+
@Override
86+
protected Settings featureFlagSettings() {
87+
return Settings.builder().put(super.featureFlagSettings()).put(FeatureFlags.CONCURRENT_SEGMENT_SEARCH, "true").build();
88+
}
6889

6990
// One of the primary purposes of the query cache is to cache aggs results
7091
public void testCacheAggs() throws Exception {

server/src/internalClusterTest/java/org/opensearch/indices/stats/IndexStatsIT.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232

3333
package org.opensearch.indices.stats;
3434

35+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
36+
3537
import org.apache.lucene.tests.util.LuceneTestCase.SuppressCodecs;
3638
import org.opensearch.action.DocWriteResponse;
3739
import org.opensearch.action.admin.cluster.node.stats.NodesStatsResponse;
@@ -55,6 +57,7 @@
5557
import org.opensearch.common.io.stream.BytesStreamOutput;
5658
import org.opensearch.common.settings.Settings;
5759
import org.opensearch.common.unit.TimeValue;
60+
import org.opensearch.common.util.FeatureFlags;
5861
import org.opensearch.core.action.support.DefaultShardOperationFailedException;
5962
import org.opensearch.core.common.bytes.BytesReference;
6063
import org.opensearch.core.common.io.stream.StreamOutput;
@@ -80,9 +83,9 @@
8083
import org.opensearch.plugins.Plugin;
8184
import org.opensearch.search.sort.SortOrder;
8285
import org.opensearch.test.InternalSettingsPlugin;
83-
import org.opensearch.test.OpenSearchIntegTestCase;
8486
import org.opensearch.test.OpenSearchIntegTestCase.ClusterScope;
8587
import org.opensearch.test.OpenSearchIntegTestCase.Scope;
88+
import org.opensearch.test.ParameterizedOpenSearchIntegTestCase;
8689

8790
import java.io.IOException;
8891
import java.util.ArrayList;
@@ -105,6 +108,7 @@
105108

106109
import static org.opensearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF_REPLICAS;
107110
import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
111+
import static org.opensearch.search.SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING;
108112
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertAcked;
109113
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertAllSuccessful;
110114
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertSearchResponse;
@@ -118,7 +122,23 @@
118122

119123
@ClusterScope(scope = Scope.SUITE, numDataNodes = 2, numClientNodes = 0)
120124
@SuppressCodecs("*") // requires custom completion format
121-
public class IndexStatsIT extends OpenSearchIntegTestCase {
125+
public class IndexStatsIT extends ParameterizedOpenSearchIntegTestCase {
126+
public IndexStatsIT(Settings settings) {
127+
super(settings);
128+
}
129+
130+
@ParametersFactory
131+
public static Collection<Object[]> parameters() {
132+
return Arrays.asList(
133+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), false).build() },
134+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), true).build() }
135+
);
136+
}
137+
138+
@Override
139+
protected Settings featureFlagSettings() {
140+
return Settings.builder().put(super.featureFlagSettings()).put(FeatureFlags.CONCURRENT_SEGMENT_SEARCH, "true").build();
141+
}
122142

123143
@Override
124144
protected Collection<Class<? extends Plugin>> nodePlugins() {

server/src/internalClusterTest/java/org/opensearch/script/ScriptCacheIT.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@
88

99
package org.opensearch.script;
1010

11+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
12+
1113
import org.opensearch.OpenSearchException;
1214
import org.opensearch.common.settings.Settings;
15+
import org.opensearch.common.util.FeatureFlags;
1316
import org.opensearch.common.xcontent.XContentFactory;
1417
import org.opensearch.core.rest.RestStatus;
1518
import org.opensearch.index.MockEngineFactoryPlugin;
@@ -18,22 +21,40 @@
1821
import org.opensearch.plugins.Plugin;
1922
import org.opensearch.search.MockSearchService;
2023
import org.opensearch.test.MockHttpTransport;
21-
import org.opensearch.test.OpenSearchIntegTestCase;
24+
import org.opensearch.test.ParameterizedOpenSearchIntegTestCase;
2225
import org.opensearch.test.TestGeoShapeFieldMapperPlugin;
2326
import org.opensearch.test.store.MockFSIndexStore;
2427
import org.opensearch.test.transport.MockTransportService;
2528

2629
import java.util.ArrayList;
30+
import java.util.Arrays;
2731
import java.util.Collection;
2832
import java.util.Collections;
2933
import java.util.HashMap;
3034
import java.util.Map;
3135
import java.util.concurrent.ExecutionException;
3236
import java.util.function.Function;
3337

38+
import static org.opensearch.search.SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING;
3439
import static org.apache.logging.log4j.core.util.Throwables.getRootCause;
3540

36-
public class ScriptCacheIT extends OpenSearchIntegTestCase {
41+
public class ScriptCacheIT extends ParameterizedOpenSearchIntegTestCase {
42+
public ScriptCacheIT(Settings settings) {
43+
super(settings);
44+
}
45+
46+
@ParametersFactory
47+
public static Collection<Object[]> parameters() {
48+
return Arrays.asList(
49+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), false).build() },
50+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), true).build() }
51+
);
52+
}
53+
54+
@Override
55+
protected Settings featureFlagSettings() {
56+
return Settings.builder().put(super.featureFlagSettings()).put(FeatureFlags.CONCURRENT_SEGMENT_SEARCH, "true").build();
57+
}
3758

3859
protected Settings nodeSettings(int nodeOrdinal) {
3960
Settings.Builder builder = Settings.builder()

server/src/internalClusterTest/java/org/opensearch/search/StressSearchServiceReaperIT.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,23 +31,45 @@
3131

3232
package org.opensearch.search;
3333

34+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
35+
3436
import org.apache.lucene.tests.util.English;
3537
import org.opensearch.action.index.IndexRequestBuilder;
3638
import org.opensearch.action.search.SearchResponse;
3739
import org.opensearch.common.settings.Settings;
3840
import org.opensearch.common.unit.TimeValue;
39-
import org.opensearch.test.OpenSearchIntegTestCase;
41+
import org.opensearch.common.util.FeatureFlags;
4042
import org.opensearch.test.OpenSearchIntegTestCase.ClusterScope;
43+
import org.opensearch.test.ParameterizedOpenSearchIntegTestCase;
4144

45+
import java.util.Arrays;
46+
import java.util.Collection;
4247
import java.util.concurrent.ExecutionException;
4348

4449
import static org.opensearch.index.query.QueryBuilders.matchAllQuery;
50+
import static org.opensearch.search.SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING;
4551
import static org.opensearch.test.OpenSearchIntegTestCase.Scope.SUITE;
4652
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertHitCount;
4753
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertNoFailures;
4854

4955
@ClusterScope(scope = SUITE)
50-
public class StressSearchServiceReaperIT extends OpenSearchIntegTestCase {
56+
public class StressSearchServiceReaperIT extends ParameterizedOpenSearchIntegTestCase {
57+
public StressSearchServiceReaperIT(Settings settings) {
58+
super(settings);
59+
}
60+
61+
@ParametersFactory
62+
public static Collection<Object[]> parameters() {
63+
return Arrays.asList(
64+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), false).build() },
65+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), true).build() }
66+
);
67+
}
68+
69+
@Override
70+
protected Settings featureFlagSettings() {
71+
return Settings.builder().put(super.featureFlagSettings()).put(FeatureFlags.CONCURRENT_SEGMENT_SEARCH, "true").build();
72+
}
5173

5274
@Override
5375
protected Settings nodeSettings(int nodeOrdinal) {

server/src/internalClusterTest/java/org/opensearch/search/pit/PitMultiNodeIT.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
package org.opensearch.search.pit;
1010

11+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
12+
1113
import org.opensearch.action.LatchedActionListener;
1214
import org.opensearch.action.admin.cluster.state.ClusterStateRequest;
1315
import org.opensearch.action.admin.cluster.state.ClusterStateResponse;
@@ -30,17 +32,21 @@
3032
import org.opensearch.common.action.ActionFuture;
3133
import org.opensearch.common.settings.Settings;
3234
import org.opensearch.common.unit.TimeValue;
35+
import org.opensearch.common.util.FeatureFlags;
3336
import org.opensearch.core.action.ActionListener;
3437
import org.opensearch.search.builder.PointInTimeBuilder;
3538
import org.opensearch.test.InternalTestCluster;
3639
import org.opensearch.test.OpenSearchIntegTestCase;
40+
import org.opensearch.test.ParameterizedOpenSearchIntegTestCase;
3741
import org.opensearch.threadpool.TestThreadPool;
3842
import org.opensearch.threadpool.ThreadPool;
3943
import org.junit.After;
4044
import org.junit.Assert;
4145
import org.junit.Before;
4246

4347
import java.util.ArrayList;
48+
import java.util.Arrays;
49+
import java.util.Collection;
4450
import java.util.HashSet;
4551
import java.util.LinkedList;
4652
import java.util.List;
@@ -53,14 +59,31 @@
5359

5460
import static org.opensearch.action.search.PitTestsUtil.assertSegments;
5561
import static org.opensearch.action.support.WriteRequest.RefreshPolicy.IMMEDIATE;
62+
import static org.opensearch.search.SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING;
5663
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertAcked;
5764
import static org.hamcrest.Matchers.containsString;
5865

5966
/**
6067
* Multi node integration tests for PIT creation and search operation with PIT ID.
6168
*/
6269
@OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.SUITE, numDataNodes = 2)
63-
public class PitMultiNodeIT extends OpenSearchIntegTestCase {
70+
public class PitMultiNodeIT extends ParameterizedOpenSearchIntegTestCase {
71+
public PitMultiNodeIT(Settings settings) {
72+
super(settings);
73+
}
74+
75+
@ParametersFactory
76+
public static Collection<Object[]> parameters() {
77+
return Arrays.asList(
78+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), false).build() },
79+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), true).build() }
80+
);
81+
}
82+
83+
@Override
84+
protected Settings featureFlagSettings() {
85+
return Settings.builder().put(super.featureFlagSettings()).put(FeatureFlags.CONCURRENT_SEGMENT_SEARCH, "true").build();
86+
}
6487

6588
@Before
6689
public void setupIndex() throws ExecutionException, InterruptedException {

server/src/internalClusterTest/java/org/opensearch/search/scriptfilter/ScriptQuerySearchIT.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@
3232

3333
package org.opensearch.search.scriptfilter;
3434

35+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
36+
3537
import org.opensearch.OpenSearchException;
3638
import org.opensearch.action.admin.cluster.settings.ClusterUpdateSettingsRequest;
3739
import org.opensearch.action.search.SearchResponse;
3840
import org.opensearch.common.settings.Settings;
41+
import org.opensearch.common.util.FeatureFlags;
3942
import org.opensearch.common.xcontent.XContentFactory;
4043
import org.opensearch.core.xcontent.XContentBuilder;
4144
import org.opensearch.index.IndexModule;
@@ -47,6 +50,7 @@
4750
import org.opensearch.search.sort.SortOrder;
4851
import org.opensearch.test.InternalSettingsPlugin;
4952
import org.opensearch.test.OpenSearchIntegTestCase;
53+
import org.opensearch.test.ParameterizedOpenSearchIntegTestCase;
5054

5155
import java.io.IOException;
5256
import java.util.Arrays;
@@ -61,12 +65,29 @@
6165
import static java.util.Collections.emptyMap;
6266
import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
6367
import static org.opensearch.index.query.QueryBuilders.scriptQuery;
68+
import static org.opensearch.search.SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING;
6469
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertAcked;
6570
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertNoFailures;
6671
import static org.hamcrest.Matchers.equalTo;
6772

6873
@OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.SUITE)
69-
public class ScriptQuerySearchIT extends OpenSearchIntegTestCase {
74+
public class ScriptQuerySearchIT extends ParameterizedOpenSearchIntegTestCase {
75+
public ScriptQuerySearchIT(Settings settings) {
76+
super(settings);
77+
}
78+
79+
@ParametersFactory
80+
public static Collection<Object[]> parameters() {
81+
return Arrays.asList(
82+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), false).build() },
83+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), true).build() }
84+
);
85+
}
86+
87+
@Override
88+
protected Settings featureFlagSettings() {
89+
return Settings.builder().put(super.featureFlagSettings()).put(FeatureFlags.CONCURRENT_SEGMENT_SEARCH, "true").build();
90+
}
7091

7192
@Override
7293
protected Collection<Class<? extends Plugin>> nodePlugins() {

server/src/internalClusterTest/java/org/opensearch/search/scroll/DuelScrollIT.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,31 +32,52 @@
3232

3333
package org.opensearch.search.scroll;
3434

35+
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
3536
import com.carrotsearch.randomizedtesting.generators.RandomPicks;
3637

3738
import org.opensearch.action.index.IndexRequestBuilder;
3839
import org.opensearch.action.search.SearchResponse;
3940
import org.opensearch.action.search.SearchType;
4041
import org.opensearch.cluster.metadata.IndexMetadata;
4142
import org.opensearch.common.settings.Settings;
43+
import org.opensearch.common.util.FeatureFlags;
4244
import org.opensearch.index.query.QueryBuilders;
4345
import org.opensearch.search.SearchHit;
4446
import org.opensearch.search.SearchHits;
4547
import org.opensearch.search.sort.SortBuilder;
4648
import org.opensearch.search.sort.SortBuilders;
4749
import org.opensearch.search.sort.SortOrder;
48-
import org.opensearch.test.OpenSearchIntegTestCase;
50+
import org.opensearch.test.ParameterizedOpenSearchIntegTestCase;
4951

5052
import java.util.Arrays;
53+
import java.util.Collection;
5154
import java.util.HashSet;
5255
import java.util.Set;
5356

5457
import static org.opensearch.common.xcontent.XContentFactory.jsonBuilder;
58+
import static org.opensearch.search.SearchService.CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING;
5559
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertAcked;
5660
import static org.opensearch.test.hamcrest.OpenSearchAssertions.assertNoFailures;
5761
import static org.hamcrest.Matchers.equalTo;
5862

59-
public class DuelScrollIT extends OpenSearchIntegTestCase {
63+
public class DuelScrollIT extends ParameterizedOpenSearchIntegTestCase {
64+
public DuelScrollIT(Settings settings) {
65+
super(settings);
66+
}
67+
68+
@ParametersFactory
69+
public static Collection<Object[]> parameters() {
70+
return Arrays.asList(
71+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), false).build() },
72+
new Object[] { Settings.builder().put(CLUSTER_CONCURRENT_SEGMENT_SEARCH_SETTING.getKey(), true).build() }
73+
);
74+
}
75+
76+
@Override
77+
protected Settings featureFlagSettings() {
78+
return Settings.builder().put(super.featureFlagSettings()).put(FeatureFlags.CONCURRENT_SEGMENT_SEARCH, "true").build();
79+
}
80+
6081
public void testDuelQueryThenFetch() throws Exception {
6182
TestContext context = create(SearchType.DFS_QUERY_THEN_FETCH, SearchType.QUERY_THEN_FETCH);
6283

0 commit comments

Comments
 (0)