You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by le...@apache.org on 2023/11/10 07:06:39 UTC
(flink) 02/08: [FLINK-33023][table-planner][JUnit5 Migration] Module: flink-table-planner/api (TableTestBase)
This is an automated email from the ASF dual-hosted git repository.
leonard pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git
commit bf6afc3d52eeb0ec31d483a7cb9e746570116fb3
Author: Jiabao Sun <ji...@xtransfer.cn>
AuthorDate: Tue Sep 12 14:46:35 2023 +0800
[FLINK-33023][table-planner][JUnit5 Migration] Module: flink-table-planner/api (TableTestBase)
---
.../validation/MatchRecognizeValidationTest.java | 188 +++++++++++----------
.../apache/flink/table/api/batch/ExplainTest.scala | 32 ++--
.../flink/table/api/stream/ExplainTest.scala | 32 ++--
.../sql/validation/OverWindowValidationTest.scala | 13 +-
4 files changed, 135 insertions(+), 130 deletions(-)
diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/api/batch/sql/validation/MatchRecognizeValidationTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/api/batch/sql/validation/MatchRecognizeValidationTest.java
index cb40481db8d..c0ca9fbf975 100644
--- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/api/batch/sql/validation/MatchRecognizeValidationTest.java
+++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/api/batch/sql/validation/MatchRecognizeValidationTest.java
@@ -26,40 +26,40 @@ import org.apache.flink.table.planner.plan.utils.JavaUserDefinedAggFunctions.Wei
import org.apache.flink.table.planner.runtime.utils.JavaUserDefinedScalarFunctions.PythonScalarFunction;
import org.apache.flink.table.planner.utils.TableTestBase;
import org.apache.flink.table.planner.utils.TableTestUtil;
+import org.apache.flink.testutils.junit.extensions.parameterized.Parameter;
+import org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension;
+import org.apache.flink.testutils.junit.extensions.parameterized.Parameters;
import org.apache.calcite.sql.SqlMatchRecognize;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestTemplate;
+import org.junit.jupiter.api.extension.ExtendWith;
import java.util.Arrays;
import java.util.Collection;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+
/** Validation test for {@link SqlMatchRecognize}. */
-@RunWith(Parameterized.class)
-public class MatchRecognizeValidationTest extends TableTestBase {
+@ExtendWith(ParameterizedTestExtension.class)
+class MatchRecognizeValidationTest extends TableTestBase {
private static final String STREAM = "stream";
private static final String BATCH = "batch";
- @Parameterized.Parameter public String mode;
+ @Parameter private String mode;
- @Parameterized.Parameters(name = "mode = {0}")
- public static Collection<String> parameters() {
+ @Parameters(name = "mode = {0}")
+ private static Collection<String> parameters() {
return Arrays.asList(STREAM, BATCH);
}
- @Rule public ExpectedException expectedException = ExpectedException.none();
-
private TableTestUtil util;
private TableEnvironment tEnv;
- @Before
- public void setup() {
+ @BeforeEach
+ void setup() {
util =
STREAM.equals(mode)
? streamTestUtil(TableConfig.getDefault())
@@ -86,32 +86,31 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ ")");
}
- @After
- public void after() {
+ @AfterEach
+ void after() {
util.getTableEnv().executeSql("DROP TABLE Ticker");
util.getTableEnv().executeSql("DROP TABLE MyTable");
}
/** Function 'MATCH_ROWTIME()' can only be used in MATCH_RECOGNIZE. */
- @Test(expected = ValidationException.class)
- public void testMatchRowTimeInSelect() {
+ @TestTemplate
+ void testMatchRowTimeInSelect() {
String sql = "SELECT MATCH_ROWTIME() FROM MyTable";
- util.verifyExplain(sql);
+ assertThatExceptionOfType(ValidationException.class)
+ .isThrownBy(() -> util.verifyExplain(sql));
}
/** Function 'MATCH_PROCTIME()' can only be used in MATCH_RECOGNIZE. */
- @Test(expected = ValidationException.class)
- public void testMatchProcTimeInSelect() {
+ @TestTemplate
+ void testMatchProcTimeInSelect() {
String sql = "SELECT MATCH_PROCTIME() FROM MyTable";
- util.verifyExplain(sql);
+ assertThatExceptionOfType(ValidationException.class)
+ .isThrownBy(() -> util.verifyExplain(sql));
}
- @Test
- public void testSortProcessingTimeDesc() {
+ @TestTemplate
+ void testSortProcessingTimeDesc() {
if (STREAM.equals(mode)) {
- expectedException.expect(TableException.class);
- expectedException.expectMessage(
- "Primary sort order of a streaming table must be ascending on time.");
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -123,16 +122,16 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining(
+ "Primary sort order of a streaming table must be ascending on time.");
}
}
- @Test
- public void testSortProcessingTimeSecondaryField() {
+ @TestTemplate
+ void testSortProcessingTimeSecondaryField() {
if (STREAM.equals(mode)) {
- expectedException.expect(TableException.class);
- expectedException.expectMessage(
- "You must specify either rowtime or proctime for order by as the first one.");
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -144,16 +143,16 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining(
+ "You must specify either rowtime or proctime for order by as the first one.");
}
}
- @Test
- public void testSortNoOrder() {
+ @TestTemplate
+ void testSortNoOrder() {
if (STREAM.equals(mode)) {
- expectedException.expect(TableException.class);
- expectedException.expectMessage(
- "You must specify either rowtime or proctime for order by.");
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -164,16 +163,16 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining(
+ "You must specify either rowtime or proctime for order by.");
}
}
- @Test
- public void testUpdatesInUpstreamOperatorNotSupported() {
+ @TestTemplate
+ void testUpdatesInUpstreamOperatorNotSupported() {
if (STREAM.equals(mode)) {
- expectedException.expect(TableException.class);
- expectedException.expectMessage(
- "Match Recognize doesn't support consuming update changes which is produced by node GroupAggregate(");
String sqlQuery =
"SELECT *\n"
+ "FROM (SELECT DISTINCT * FROM Ticker)\n"
@@ -186,14 +185,15 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining(
+ "Match Recognize doesn't support consuming update changes which is produced by node GroupAggregate(");
}
}
- @Test
- public void testAggregatesOnMultiplePatternVariablesNotSupported() {
- expectedException.expect(ValidationException.class);
- expectedException.expectMessage("SQL validation failed.");
+ @TestTemplate
+ void testAggregatesOnMultiplePatternVariablesNotSupported() {
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -205,13 +205,13 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(ValidationException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining("SQL validation failed.");
}
- @Test
- public void testAggregatesOnMultiplePatternVariablesNotSupportedInUDAGs() {
- expectedException.expect(ValidationException.class);
- expectedException.expectMessage("Aggregation must be applied to a single pattern variable");
+ @TestTemplate
+ void testAggregatesOnMultiplePatternVariablesNotSupportedInUDAGs() {
util.addTemporarySystemFunction("weightedAvg", new WeightedAvg());
String sqlQuery =
"SELECT *\n"
@@ -224,13 +224,13 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(ValidationException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining("Aggregation must be applied to a single pattern variable");
}
- @Test
- public void testValidatingAmbiguousColumns() {
- expectedException.expect(ValidationException.class);
- expectedException.expectMessage("Columns ambiguously defined: {symbol, price}");
+ @TestTemplate
+ void testValidatingAmbiguousColumns() {
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -244,7 +244,9 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(ValidationException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining("Columns ambiguously defined: {symbol, price}");
}
// ***************************************************************************************
@@ -253,11 +255,8 @@ public class MatchRecognizeValidationTest extends TableTestBase {
// ***************************************************************************************
/** Python Function can not be used in MATCH_RECOGNIZE for now. */
- @Test
- public void testMatchPythonFunction() {
- expectedException.expect(TableException.class);
- expectedException.expectMessage(
- "Python Function can not be used in MATCH_RECOGNIZE for now.");
+ @TestTemplate
+ void testMatchPythonFunction() {
util.addTemporarySystemFunction("pyFunc", new PythonScalarFunction("pyFunc"));
String sql =
"SELECT T.aa as ta\n"
@@ -272,13 +271,14 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " A AS a = 1,\n"
+ " B AS b = 'b'\n"
+ ") AS T";
- util.verifyExplain(sql);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sql))
+ .withMessageContaining(
+ "Python Function can not be used in MATCH_RECOGNIZE for now.");
}
- @Test
- public void testAllRowsPerMatch() {
- expectedException.expect(TableException.class);
- expectedException.expectMessage("All rows per match mode is not supported yet.");
+ @TestTemplate
+ void testAllRowsPerMatch() {
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -291,15 +291,13 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining("All rows per match mode is not supported yet.");
}
- @Test
- public void testGreedyQuantifierAtTheEndIsNotSupported() {
- expectedException.expect(TableException.class);
- expectedException.expectMessage(
- "Greedy quantifiers are not allowed as the last element of a "
- + "Pattern yet. Finish your pattern with either a simple variable or reluctant quantifier.");
+ @TestTemplate
+ void testGreedyQuantifierAtTheEndIsNotSupported() {
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -311,15 +309,15 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining(
+ "Greedy quantifiers are not allowed as the last element of a "
+ + "Pattern yet. Finish your pattern with either a simple variable or reluctant quantifier.");
}
- @Test
- public void testPatternsProducingEmptyMatchesAreNotSupported() {
- expectedException.expect(TableException.class);
- expectedException.expectMessage(
- "Patterns that can produce empty matches are not supported. "
- + "There must be at least one non-optional state.");
+ @TestTemplate
+ void testPatternsProducingEmptyMatchesAreNotSupported() {
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -331,13 +329,15 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(TableException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining(
+ "Patterns that can produce empty matches are not supported. "
+ + "There must be at least one non-optional state.");
}
- @Test
- public void testDistinctAggregationsNotSupported() {
- expectedException.expect(ValidationException.class);
- expectedException.expectMessage("SQL validation failed.");
+ @TestTemplate
+ void testDistinctAggregationsNotSupported() {
String sqlQuery =
"SELECT *\n"
+ "FROM Ticker\n"
@@ -349,6 +349,8 @@ public class MatchRecognizeValidationTest extends TableTestBase {
+ " DEFINE\n"
+ " A AS A.symbol = 'a'\n"
+ ") AS T";
- tEnv.executeSql(sqlQuery);
+ assertThatExceptionOfType(ValidationException.class)
+ .isThrownBy(() -> tEnv.executeSql(sqlQuery))
+ .withMessageContaining("SQL validation failed.");
}
}
diff --git a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/batch/ExplainTest.scala b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/batch/ExplainTest.scala
index e6ed0bce82f..715bee95477 100644
--- a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/batch/ExplainTest.scala
+++ b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/batch/ExplainTest.scala
@@ -23,12 +23,12 @@ import org.apache.flink.table.api.config.ExecutionConfigOptions
import org.apache.flink.table.api.internal.TableEnvironmentInternal
import org.apache.flink.table.planner.utils.TableTestBase
import org.apache.flink.table.types.logical.{BigIntType, IntType, VarCharType}
+import org.apache.flink.testutils.junit.extensions.parameterized.{ParameterizedTestExtension, Parameters}
-import org.junit.{Before, Test}
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
+import org.junit.jupiter.api.{BeforeEach, TestTemplate}
+import org.junit.jupiter.api.extension.ExtendWith
-@RunWith(classOf[Parameterized])
+@ExtendWith(Array(classOf[ParameterizedTestExtension]))
class ExplainTest(extended: Boolean) extends TableTestBase {
private val extraDetails = if (extended) {
@@ -46,33 +46,33 @@ class ExplainTest(extended: Boolean) extends TableTestBase {
val LONG = new BigIntType()
val INT = new IntType()
- @Before
+ @BeforeEach
def before(): Unit = {
util.tableEnv.getConfig
.set(ExecutionConfigOptions.TABLE_EXEC_RESOURCE_DEFAULT_PARALLELISM, Int.box(4))
}
- @Test
+ @TestTemplate
def testExplainWithTableSourceScan(): Unit = {
util.verifyExplain("SELECT * FROM MyTable", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithDataStreamScan(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithFilter(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1 WHERE mod(a, 2) = 0", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithAgg(): Unit = {
util.verifyExplain("SELECT COUNT(*) FROM MyTable1 GROUP BY a", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithJoin(): Unit = {
// TODO support other join operators when them are supported
util.tableEnv.getConfig
@@ -80,24 +80,24 @@ class ExplainTest(extended: Boolean) extends TableTestBase {
util.verifyExplain("SELECT a, b, c, e, f FROM MyTable1, MyTable2 WHERE a = d", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithUnion(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1 UNION ALL SELECT * FROM MyTable2", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithSort(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1 ORDER BY a LIMIT 5", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithSingleSink(): Unit = {
val table = util.tableEnv.sqlQuery("SELECT * FROM MyTable1 WHERE a > 10")
val sink = util.createCollectTableSink(Array("a", "b", "c"), Array(INT, LONG, STRING))
util.verifyExplainInsert(table, sink, "sink", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithMultiSinks(): Unit = {
val stmtSet = util.tableEnv.createStatementSet()
val table = util.tableEnv.sqlQuery("SELECT a, COUNT(*) AS cnt FROM MyTable1 GROUP BY a")
@@ -116,7 +116,7 @@ class ExplainTest(extended: Boolean) extends TableTestBase {
util.verifyExplain(stmtSet, extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainMultipleInput(): Unit = {
util.tableEnv.getConfig
.set(ExecutionConfigOptions.TABLE_EXEC_DISABLED_OPERATORS, "NestedLoopJoin,SortMergeJoin")
@@ -133,7 +133,7 @@ class ExplainTest(extended: Boolean) extends TableTestBase {
}
object ExplainTest {
- @Parameterized.Parameters(name = "extended={0}")
+ @Parameters(name = "extended={0}")
def parameters(): java.util.Collection[Boolean] = {
java.util.Arrays.asList(true, false)
}
diff --git a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/ExplainTest.scala b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/ExplainTest.scala
index 39d2326e332..8fce44b2dac 100644
--- a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/ExplainTest.scala
+++ b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/ExplainTest.scala
@@ -23,15 +23,15 @@ import org.apache.flink.table.api.config.ExecutionConfigOptions
import org.apache.flink.table.api.internal.TableEnvironmentInternal
import org.apache.flink.table.planner.utils.TableTestBase
import org.apache.flink.table.types.logical.{BigIntType, IntType, VarCharType}
+import org.apache.flink.testutils.junit.extensions.parameterized.{ParameterizedTestExtension, Parameters}
-import org.junit.{Before, Test}
-import org.junit.runner.RunWith
-import org.junit.runners.Parameterized
+import org.junit.jupiter.api.{BeforeEach, TestTemplate}
+import org.junit.jupiter.api.extension.ExtendWith
import java.sql.Timestamp
import java.time.Duration
-@RunWith(classOf[Parameterized])
+@ExtendWith(Array(classOf[ParameterizedTestExtension]))
class ExplainTest(extended: Boolean) extends TableTestBase {
private val extraDetails = if (extended) {
@@ -49,55 +49,55 @@ class ExplainTest(extended: Boolean) extends TableTestBase {
val LONG = new BigIntType()
val INT = new IntType()
- @Before
+ @BeforeEach
def before(): Unit = {
util.tableEnv.getConfig
.set(ExecutionConfigOptions.TABLE_EXEC_RESOURCE_DEFAULT_PARALLELISM, Int.box(4))
}
- @Test
+ @TestTemplate
def testExplainTableSourceScan(): Unit = {
util.verifyExplain("SELECT * FROM MyTable", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainDataStreamScan(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithFilter(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1 WHERE mod(a, 2) = 0", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithAgg(): Unit = {
util.verifyExplain("SELECT COUNT(*) FROM MyTable1 GROUP BY a", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithJoin(): Unit = {
util.verifyExplain("SELECT a, b, c, e, f FROM MyTable1, MyTable2 WHERE a = d", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithUnion(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1 UNION ALL SELECT * FROM MyTable2", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithSort(): Unit = {
util.verifyExplain("SELECT * FROM MyTable1 ORDER BY a LIMIT 5", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithSingleSink(): Unit = {
val table = util.tableEnv.sqlQuery("SELECT * FROM MyTable1 WHERE a > 10")
val appendSink = util.createAppendTableSink(Array("a", "b", "c"), Array(INT, LONG, STRING))
util.verifyExplainInsert(table, appendSink, "appendSink", extraDetails: _*)
}
- @Test
+ @TestTemplate
def testExplainWithMultiSinks(): Unit = {
val stmtSet = util.tableEnv.createStatementSet()
val table = util.tableEnv.sqlQuery("SELECT a, COUNT(*) AS cnt FROM MyTable1 GROUP BY a")
@@ -120,7 +120,7 @@ class ExplainTest(extended: Boolean) extends TableTestBase {
util.verifyExplain(stmtSet, extraDetails: _*)
}
- @Test
+ @TestTemplate
def testMiniBatchIntervalInfer(): Unit = {
val stmtSet = util.tableEnv.createStatementSet()
// Test emit latency propagate among RelNodeBlocks
@@ -176,7 +176,7 @@ class ExplainTest(extended: Boolean) extends TableTestBase {
}
object ExplainTest {
- @Parameterized.Parameters(name = "extended={0}")
+ @Parameters(name = "extended={0}")
def parameters(): java.util.Collection[Boolean] = {
java.util.Arrays.asList(true, false)
}
diff --git a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/sql/validation/OverWindowValidationTest.scala b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/sql/validation/OverWindowValidationTest.scala
index 60a7e247891..e171ab8c56b 100644
--- a/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/sql/validation/OverWindowValidationTest.scala
+++ b/flink-table/flink-table-planner/src/test/scala/org/apache/flink/table/api/stream/sql/validation/OverWindowValidationTest.scala
@@ -24,7 +24,8 @@ import org.apache.flink.table.planner.runtime.utils.JavaUserDefinedAggFunctions.
import org.apache.flink.table.planner.utils.TableTestBase
import org.apache.flink.types.Row
-import org.junit.Test
+import org.assertj.core.api.Assertions.assertThatExceptionOfType
+import org.junit.jupiter.api.Test
class OverWindowValidationTest extends TableTestBase {
@@ -32,7 +33,7 @@ class OverWindowValidationTest extends TableTestBase {
streamUtil.addDataStream[(Int, String, Long)]("T1", 'a, 'b, 'c, 'proctime.proctime)
/** All aggregates must be computed on the same window. */
- @Test(expected = classOf[TableException])
+ @Test
def testMultiWindow(): Unit = {
val sqlQuery = "SELECT " +
@@ -41,16 +42,18 @@ class OverWindowValidationTest extends TableTestBase {
"sum(a) OVER (PARTITION BY b ORDER BY proctime RANGE UNBOUNDED preceding) " +
"from T1"
- streamUtil.tableEnv.sqlQuery(sqlQuery).toAppendStream[Row]
+ assertThatExceptionOfType(classOf[TableException])
+ .isThrownBy(() => streamUtil.tableEnv.sqlQuery(sqlQuery).toAppendStream[Row])
}
/** OVER clause is necessary for [[OverAgg0]] window function. */
- @Test(expected = classOf[ValidationException])
+ @Test
def testInvalidOverAggregation(): Unit = {
streamUtil.addFunction("overAgg", new OverAgg0)
val sqlQuery = "SELECT overAgg(c, a) FROM MyTable"
- streamUtil.tableEnv.sqlQuery(sqlQuery)
+ assertThatExceptionOfType(classOf[ValidationException])
+ .isThrownBy(() => streamUtil.tableEnv.sqlQuery(sqlQuery))
}
}