Skip to content

Commit f511aa8

Browse files
yuancuishaoxy
andcommitted
Migrate standalone integration tests to remote tests (opensearch-project#3778)
* Use PPL_SPEC in standalone ITs Additionally: - Migrate CalcitePPLBasicIT to remote ITs - Delete CalcitePPLBasicPushdownIT since the remote ITs enable pushdown by default Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Migrate array, aggregation, appendcol, and datetime ITs to remote Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Migrate case, datetime, condition, cryptographic function ITs Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Fix return types in CalcitePPLTpchIT Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * migrate calcite IT and delete related pushdown IT Signed-off-by: Xinyu Hao <haoxinyu@amazon.com> * Temporarily move datetime ITs back to standalone mode Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * WIP: trying to enbale no-pushdown tests Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * add pushdown IT button Signed-off-by: Xinyu Hao <haoxinyu@amazon.com> * Fix remote ITs Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Enable no pushdown tests Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Change pushdown settings only when necessary (fixing CalciteSettingsIT) Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Fix sum null tests with and without pushdown Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Update pushdown with transient flag Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Ignore IP comparison and explain ITs in CalciteNoPushdownIT Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Delete CalcitePushdownIT since all tests are run with pushdown enabled by default Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Restore pushdown config after CalciteNoPushdownIT class Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Move expected explain strings to files to circurmvent issues related to comparison involves windows new lines Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Throw narrower exceptions where it uses loadFromFile Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Replace window line enddings with unix line enddings for remote tests' responses Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Revert "Replace window line enddings with unix line enddings for remote tests' responses" This reverts commit 812fd0d. Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Use explainQueryToString for explain ITs Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Use executeWithReplace for explain command variants Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Migrate CalcitePPLTpchIT to remote test Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> * Replace windows carriages with spaces when sanitizing queries to explain Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> --------- Signed-off-by: Yuanchun Shen <yuanchu@amazon.com> Signed-off-by: Xinyu Hao <haoxinyu@amazon.com> Co-authored-by: Xinyu Hao <haoxinyu@amazon.com> (cherry picked from commit 918c153)
1 parent d20d439 commit f511aa8

75 files changed

Lines changed: 3057 additions & 2957 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/*
2+
* Copyright OpenSearch Contributors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.opensearch.sql.calcite.pushdown;
7+
8+
import org.junit.AfterClass;
9+
import org.junit.BeforeClass;
10+
import org.junit.runner.RunWith;
11+
import org.junit.runners.Suite;
12+
import org.opensearch.sql.calcite.remote.*;
13+
import org.opensearch.sql.calcite.tpch.CalcitePPLTpchIT;
14+
import org.opensearch.sql.ppl.PPLIntegTestCase;
15+
16+
/**
17+
* This test suite runs all remote Calcite integration tests without pushdown enabled.
18+
*
19+
* <p>Individual tests in this suite will be executed independently with pushdown enabled.
20+
*/
21+
@RunWith(Suite.class)
22+
@Suite.SuiteClasses({
23+
CalciteArrayFunctionIT.class,
24+
CalciteConvertTZFunctionIT.class,
25+
CalciteCsvFormatIT.class,
26+
CalciteDataTypeIT.class,
27+
CalciteDateTimeComparisonIT.class,
28+
CalciteDateTimeFunctionIT.class,
29+
CalciteDateTimeImplementationIT.class,
30+
CalciteDedupCommandIT.class,
31+
CalciteDescribeCommandIT.class,
32+
CalciteExpandCommandIT.class,
33+
// TODO: Add expected plans for CalciteExplainIT without pushdown
34+
// CalciteExplainIT.class,
35+
CalciteFieldsCommandIT.class,
36+
CalciteFillNullCommandIT.class,
37+
CalciteFlattenCommandIT.class,
38+
CalciteFlattenDocValueIT.class,
39+
CalciteGeoIpFunctionsIT.class,
40+
CalciteGeoPointFormatsIT.class,
41+
CalciteHeadCommandIT.class,
42+
CalciteInformationSchemaCommandIT.class,
43+
// TODO: Enable after implementing comparison for IP addresses with Calcite
44+
// https://github.com/opensearch-project/sql/issues/3776
45+
// CalciteIPComparisonIT.class,
46+
CalciteIPFunctionsIT.class,
47+
CalciteJsonFunctionsIT.class,
48+
CalciteLegacyAPICompatibilityIT.class,
49+
CalciteLikeQueryIT.class,
50+
CalciteMatchBoolPrefixIT.class,
51+
CalciteMatchIT.class,
52+
CalciteMatchPhraseIT.class,
53+
CalciteMathematicalFunctionIT.class,
54+
CalciteNewAddedCommandsIT.class,
55+
CalciteNowLikeFunctionIT.class,
56+
CalciteObjectFieldOperateIT.class,
57+
CalciteOperatorIT.class,
58+
CalciteParseCommandIT.class,
59+
CalcitePPLAggregationIT.class,
60+
CalcitePPLAppendcolIT.class,
61+
CalcitePPLBasicIT.class,
62+
CalcitePPLBuiltinDatetimeFunctionInvalidIT.class,
63+
CalcitePPLBuiltinFunctionIT.class,
64+
CalcitePPLBuiltinFunctionsNullIT.class,
65+
CalcitePPLCaseFunctionIT.class,
66+
CalcitePPLCastFunctionIT.class,
67+
CalcitePPLConditionBuiltinFunctionIT.class,
68+
CalcitePPLCryptographicFunctionIT.class,
69+
CalcitePPLDedupIT.class,
70+
CalcitePPLEventstatsIT.class,
71+
CalcitePPLExistsSubqueryIT.class,
72+
CalcitePPLExplainIT.class,
73+
CalcitePPLFillnullIT.class,
74+
CalcitePPLGrokIT.class,
75+
CalcitePPLInSubqueryIT.class,
76+
CalcitePPLIPFunctionIT.class,
77+
CalcitePPLJoinIT.class,
78+
CalcitePPLJsonBuiltinFunctionIT.class,
79+
CalcitePPLLookupIT.class,
80+
CalcitePPLParseIT.class,
81+
CalcitePPLPatternsIT.class,
82+
CalcitePPLPluginIT.class,
83+
CalcitePPLRenameIT.class,
84+
CalcitePPLScalarSubqueryIT.class,
85+
CalcitePPLSortIT.class,
86+
CalcitePPLStringBuiltinFunctionIT.class,
87+
CalcitePPLTrendlineIT.class,
88+
CalcitePrometheusDataSourceCommandsIT.class,
89+
CalciteQueryAnalysisIT.class,
90+
CalciteQueryStringIT.class,
91+
CalciteRareCommandIT.class,
92+
CalciteRelevanceFunctionIT.class,
93+
CalciteRenameCommandIT.class,
94+
CalciteResourceMonitorIT.class,
95+
CalciteSearchCommandIT.class,
96+
CalciteSettingsIT.class,
97+
CalciteShowDataSourcesCommandIT.class,
98+
CalciteSimpleQueryStringIT.class,
99+
CalciteSortCommandIT.class,
100+
CalciteStatsCommandIT.class,
101+
CalciteSystemFunctionIT.class,
102+
CalciteTextFunctionIT.class,
103+
CalciteTopCommandIT.class,
104+
CalciteTrendlineCommandIT.class,
105+
CalciteVisualizationFormatIT.class,
106+
CalciteWhereCommandIT.class,
107+
CalcitePPLTpchIT.class
108+
})
109+
public class CalciteNoPushdownIT {
110+
private static boolean wasPushdownEnabled;
111+
112+
@BeforeClass
113+
public static void disablePushdown() {
114+
wasPushdownEnabled = PPLIntegTestCase.GlobalPushdownConfig.enabled;
115+
PPLIntegTestCase.GlobalPushdownConfig.enabled = false;
116+
}
117+
118+
@AfterClass
119+
public static void restorePushdown() {
120+
PPLIntegTestCase.GlobalPushdownConfig.enabled = wasPushdownEnabled;
121+
}
122+
}

integ-test/src/test/java/org/opensearch/sql/calcite/standalone/CalciteArrayFunctionIT.java renamed to integ-test/src/test/java/org/opensearch/sql/calcite/remote/CalciteArrayFunctionIT.java

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
package org.opensearch.sql.calcite.standalone;
6+
package org.opensearch.sql.calcite.remote;
77

88
import static org.opensearch.sql.legacy.TestsConstants.TEST_INDEX_BANK;
99
import static org.opensearch.sql.util.MatcherUtils.*;
@@ -12,16 +12,20 @@
1212
import java.util.List;
1313
import org.json.JSONObject;
1414
import org.junit.jupiter.api.Test;
15+
import org.opensearch.client.ResponseException;
16+
import org.opensearch.sql.ppl.PPLIntegTestCase;
1517

16-
public class CalciteArrayFunctionIT extends CalcitePPLIntegTestCase {
18+
public class CalciteArrayFunctionIT extends PPLIntegTestCase {
1719
@Override
18-
public void init() throws IOException {
20+
public void init() throws Exception {
1921
super.init();
22+
enableCalcite();
23+
disallowCalciteFallback();
2024
loadIndex(Index.BANK);
2125
}
2226

2327
@Test
24-
public void testArray() {
28+
public void testArray() throws IOException {
2529
JSONObject actual =
2630
executeQuery(
2731
String.format(
@@ -34,7 +38,7 @@ public void testArray() {
3438
}
3539

3640
@Test
37-
public void testArrayWithString() {
41+
public void testArrayWithString() throws IOException {
3842
JSONObject actual =
3943
executeQuery(
4044
String.format(
@@ -48,37 +52,39 @@ public void testArrayWithString() {
4852

4953
@Test
5054
public void testArrayWithMix() {
51-
RuntimeException e =
55+
Class<? extends Exception> expectedException =
56+
isStandaloneTest() ? RuntimeException.class : ResponseException.class;
57+
Exception e =
5258
assertThrows(
53-
RuntimeException.class,
59+
expectedException,
5460
() ->
5561
executeQuery(
5662
String.format(
5763
"source=%s | eval array = array(1, true) | head 1 | fields array",
5864
TEST_INDEX_BANK)));
5965

60-
assertEquals(
61-
e.getMessage(),
66+
verifyErrorMessageContains(
67+
e,
6268
"Cannot resolve function: ARRAY, arguments: [INTEGER,BOOLEAN], caused by: fail to create"
6369
+ " array with fixed type: inferred array element type");
6470
}
6571

6672
@Test
67-
public void testArrayLength() {
73+
public void testArrayLength() throws IOException {
6874
JSONObject actual =
6975
executeQuery(
7076
String.format(
7177
"source=%s | eval array = array(1, -1.5, 2, 1.0) | eval length ="
7278
+ " array_length(array) | head 1 | fields length",
7379
TEST_INDEX_BANK));
7480

75-
verifySchema(actual, schema("length", "integer"));
81+
verifySchema(actual, schema("length", "int"));
7682

7783
verifyDataRows(actual, rows(4));
7884
}
7985

8086
@Test
81-
public void testForAll() {
87+
public void testForAll() throws IOException {
8288
JSONObject actual =
8389
executeQuery(
8490
String.format(
@@ -92,7 +98,7 @@ public void testForAll() {
9298
}
9399

94100
@Test
95-
public void testExists() {
101+
public void testExists() throws IOException {
96102
JSONObject actual =
97103
executeQuery(
98104
String.format(
@@ -106,7 +112,7 @@ public void testExists() {
106112
}
107113

108114
@Test
109-
public void testFilter() {
115+
public void testFilter() throws IOException {
110116
JSONObject actual =
111117
executeQuery(
112118
String.format(
@@ -120,7 +126,7 @@ public void testFilter() {
120126
}
121127

122128
@Test
123-
public void testTransform() {
129+
public void testTransform() throws IOException {
124130
JSONObject actual =
125131
executeQuery(
126132
String.format(
@@ -134,7 +140,7 @@ public void testTransform() {
134140
}
135141

136142
@Test
137-
public void testTransformForTwoInput() {
143+
public void testTransformForTwoInput() throws IOException {
138144
JSONObject actual =
139145
executeQuery(
140146
String.format(
@@ -148,7 +154,7 @@ public void testTransformForTwoInput() {
148154
}
149155

150156
@Test
151-
public void testTransformForWithDouble() {
157+
public void testTransformForWithDouble() throws IOException {
152158
JSONObject actual =
153159
executeQuery(
154160
String.format(
@@ -162,7 +168,7 @@ public void testTransformForWithDouble() {
162168
}
163169

164170
@Test
165-
public void testTransformForWithUDF() {
171+
public void testTransformForWithUDF() throws IOException {
166172
JSONObject actual =
167173
executeQuery(
168174
String.format(
@@ -178,7 +184,7 @@ public void testTransformForWithUDF() {
178184
}
179185

180186
@Test
181-
public void testReduce() {
187+
public void testReduce() throws IOException {
182188
JSONObject actual =
183189
executeQuery(
184190
String.format(
@@ -189,16 +195,13 @@ public void testReduce() {
189195
TEST_INDEX_BANK));
190196

191197
verifySchema(
192-
actual,
193-
schema("result", "integer"),
194-
schema("result2", "integer"),
195-
schema("result3", "double"));
198+
actual, schema("result", "int"), schema("result2", "int"), schema("result3", "double"));
196199

197200
verifyDataRows(actual, rows(6, 16, 60));
198201
}
199202

200203
@Test
201-
public void testReduce2() {
204+
public void testReduce2() throws IOException {
202205
JSONObject actual =
203206
executeQuery(
204207
String.format(
@@ -212,7 +215,7 @@ public void testReduce2() {
212215
}
213216

214217
@Test
215-
public void testReduce3() {
218+
public void testReduce3() throws IOException {
216219
JSONObject actual =
217220
executeQuery(
218221
String.format(
@@ -227,7 +230,7 @@ public void testReduce3() {
227230
}
228231

229232
@Test
230-
public void testReduceWithUDF() {
233+
public void testReduceWithUDF() throws IOException {
231234
JSONObject actual =
232235
executeQuery(
233236
String.format(

0 commit comments

Comments
 (0)