This is an automated email from the ASF dual-hosted git repository.
ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new a4920be IGNITE-15799 Fix WorkDirectoryExtension for test classes with
no tests (#407)
a4920be is described below
commit a4920beae831249d1a189d6b651c8890c00696fc
Author: Alexander Polovtcev <[email protected]>
AuthorDate: Fri Oct 22 12:47:02 2021 +0300
IGNITE-15799 Fix WorkDirectoryExtension for test classes with no tests
(#407)
---
.../testframework/WorkDirectoryExtension.java | 36 +++++++++++++++----
.../testframework/WorkDirectoryExtensionTest.java | 27 ++++++++++++++
.../calcite/AbstractBasicIntegrationTest.java | 42 ++++++++--------------
.../ignite/internal/calcite/ITAggregatesTest.java | 6 ++--
.../ignite/internal/calcite/ITDataTypesTest.java | 3 +-
.../ignite/internal/calcite/ITFunctionsTest.java | 2 +-
.../ignite/internal/calcite/ITMetadataTest.java | 6 ++--
.../internal/calcite/ITMixedQueriesTest.java | 8 +++--
.../internal/calcite/ITOrToUnionRuleTest.java | 6 ++--
.../calcite/ITProjectScanMergeRuleTest.java | 6 ++--
.../internal/calcite/ITSecondaryIndexTest.java | 6 ++--
.../ignite/internal/calcite/ITSetOpTest.java | 8 +++--
.../internal/calcite/ITSortAggregateTest.java | 6 ++--
13 files changed, 107 insertions(+), 55 deletions(-)
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtension.java
b/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtension.java
index 67acd9f..0441fe0 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtension.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtension.java
@@ -97,11 +97,15 @@ public class WorkDirectoryExtension
@Override public void afterAll(ExtensionContext context) throws Exception {
removeWorkDir(context);
+ Path testClassDir = getTestClassDir(context);
+
+ // remove the folder for the current test class, if empty
+ if (isEmpty(testClassDir))
+ IgniteUtils.deleteIfExists(testClassDir);
+
// remove the base folder, if empty
- try (Stream<Path> list = Files.list(BASE_PATH)) {
- if (list.findAny().isEmpty())
- IgniteUtils.deleteIfExists(BASE_PATH);
- }
+ if (isEmpty(BASE_PATH))
+ IgniteUtils.deleteIfExists(BASE_PATH);
}
/**
@@ -158,13 +162,11 @@ public class WorkDirectoryExtension
if (existingDir != null)
return existingDir;
- String testClassDir = context.getRequiredTestClass().getSimpleName();
-
String testMethodDir = context.getTestMethod()
.map(Method::getName)
.orElse(STATIC_FOLDER_NAME);
- Path workDir = BASE_PATH.resolve(testClassDir).resolve(testMethodDir +
'_' + System.currentTimeMillis());
+ Path workDir = getTestClassDir(context).resolve(testMethodDir + '_' +
System.currentTimeMillis());
Files.createDirectories(workDir);
@@ -174,6 +176,13 @@ public class WorkDirectoryExtension
}
/**
+ * Returns a path to the working directory of the test class (identified
by the JUnit context).
+ */
+ private static Path getTestClassDir(ExtensionContext context) {
+ return
BASE_PATH.resolve(context.getRequiredTestClass().getSimpleName());
+ }
+
+ /**
* Removes a previously created work directory.
*/
private static void removeWorkDir(ExtensionContext context) {
@@ -218,4 +227,17 @@ public class WorkDirectoryExtension
private static boolean shouldRemoveDir() {
return !IgniteSystemProperties.getBoolean(KEEP_WORK_DIR_PROPERTY);
}
+
+ /**
+ * Returns {@code true} if the given directory is empty or {@code false}
if the given directory contains files or
+ * does not exist.
+ */
+ private static boolean isEmpty(Path dir) throws IOException {
+ if (!Files.exists(dir))
+ return false;
+
+ try (Stream<Path> list = Files.list(dir)) {
+ return list.findAny().isEmpty();
+ }
+ }
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtensionTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtensionTest.java
index 911627a..e525c29 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtensionTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/testframework/WorkDirectoryExtensionTest.java
@@ -25,6 +25,7 @@ import java.util.Set;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -271,6 +272,32 @@ public class WorkDirectoryExtensionTest {
}
/**
+ * Test class for the {@link #testEmptyClass()} test.
+ */
+ @ExtendWith(WorkDirectoryExtension.class)
+ static class TestEmptyClass {
+ /** */
+ @WorkDirectory
+ private Path workDir;
+
+ /** */
+ @Disabled
+ @Test
+ void test() {}
+ }
+
+ /**
+ * Tests {@code WorkDirectoryExtension} lifecycle works correctly on a
test class with all test methods being
+ * disabled.
+ *
+ * @see <a
href="https://issues.apache.org/jira/browse/IGNITE-15799">IGNITE-15799</a>
+ */
+ @Test
+ void testEmptyClass() {
+ assertExecutesSuccessfully(TestEmptyClass.class);
+ }
+
+ /**
* Executes the given test class on the test engine.
*/
private static EngineExecutionResults execute(Class<?> testClass) {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/AbstractBasicIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/AbstractBasicIntegrationTest.java
index d8957d3..5a2be6d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/AbstractBasicIntegrationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/AbstractBasicIntegrationTest.java
@@ -23,7 +23,6 @@ import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
import org.apache.ignite.internal.ITUtils;
@@ -42,7 +41,7 @@ import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -101,39 +100,30 @@ public class AbstractBasicIntegrationTest {
/** Work directory */
@WorkDirectory
- private Path workDir;
-
- @BeforeEach
- protected void bootstrap() {
- if (!CLUSTER_NODES.isEmpty())
- return;
+ private static Path WORK_DIR;
+ /** */
+ @BeforeAll
+ static void startNodes() {
NODES_BOOTSTRAP_CFG.forEach((nodeName, configStr) ->
- CLUSTER_NODES.add(IgnitionManager.start(nodeName, configStr,
workDir.resolve(nodeName)))
+ CLUSTER_NODES.add(IgnitionManager.start(nodeName, configStr,
WORK_DIR.resolve(nodeName)))
);
-
- initTestData();
}
/** */
@AfterAll
- static void tearDown() throws Exception {
- if (CLUSTER_NODES.isEmpty())
- return;
-
- if (LOG.isInfoEnabled())
- LOG.info("Start tearDown()");
+ static void stopNodes() throws Exception {
+ LOG.info("Start tearDown()");
IgniteUtils.closeAll(ITUtils.reverse(CLUSTER_NODES));
CLUSTER_NODES.clear();
- if (LOG.isInfoEnabled())
- LOG.info("End tearDown()");
+ LOG.info("End tearDown()");
}
/** */
- protected QueryChecker assertQuery(String qry) {
+ protected static QueryChecker assertQuery(String qry) {
return new QueryChecker(qry) {
@Override protected QueryProcessor getEngine() {
return ((IgniteImpl)CLUSTER_NODES.get(0)).queryEngine();
@@ -142,7 +132,7 @@ public class AbstractBasicIntegrationTest {
}
/** */
- protected Table createAndPopulateTable() {
+ protected static Table createAndPopulateTable() {
TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC",
"PERSON").columns(
SchemaBuilders.column("ID", ColumnType.INT32).asNonNull().build(),
SchemaBuilders.column("NAME",
ColumnType.string()).asNullable().build(),
@@ -168,7 +158,8 @@ public class AbstractBasicIntegrationTest {
return tbl;
}
- protected void insertData(Table table, String[] columnNames, Object[]...
tuples) {
+ /** */
+ protected static void insertData(Table table, String[] columnNames,
Object[]... tuples) {
RecordView<Tuple> view = table.recordView();
int batchSize = 128;
@@ -201,13 +192,10 @@ public class AbstractBasicIntegrationTest {
}
}
- protected List<List<?>> sql(String sql, Object... args) {
+ /** */
+ protected static List<List<?>> sql(String sql, Object... args) {
return getAllFromCursor(
((IgniteImpl)CLUSTER_NODES.get(0)).queryEngine().query("PUBLIC",
sql, args).get(0)
);
}
-
- protected void initTestData() {
-
- }
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITAggregatesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITAggregatesTest.java
index 933d134..bdf114f 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITAggregatesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITAggregatesTest.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.calcite;
import java.util.List;
import org.apache.ignite.lang.IgniteException;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -30,8 +31,9 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
/** */
@Disabled("https://issues.apache.org/jira/browse/IGNITE-15655")
public class ITAggregatesTest extends AbstractBasicIntegrationTest {
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
createAndPopulateTable();
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITDataTypesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITDataTypesTest.java
index 86d42d5..ba7c835 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITDataTypesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITDataTypesTest.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.calcite;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
-
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -29,9 +28,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Test SQL data types.
*/
+@Disabled("https://issues.apache.org/jira/browse/IGNITE-15107")
public class ITDataTypesTest extends AbstractBasicIntegrationTest {
/** */
- @Disabled("https://issues.apache.org/jira/browse/IGNITE-15107")
@Test
public void testUnicodeStrings() {
sql("CREATE TABLE string_table(key int primary key, val varchar)");
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITFunctionsTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITFunctionsTest.java
index f43ca9c..6ee4fc0 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITFunctionsTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITFunctionsTest.java
@@ -64,7 +64,7 @@ public class ITFunctionsTest extends
AbstractBasicIntegrationTest {
}
/** */
- private <T> void checkDateTimeQuery(String sql, LongFunction<T> func) {
+ private static <T> void checkDateTimeQuery(String sql, LongFunction<T>
func) {
while (true) {
long tsBeg = System.currentTimeMillis();
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMetadataTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMetadataTest.java
index 34b447e..37c5922 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMetadataTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMetadataTest.java
@@ -22,6 +22,7 @@ import
org.apache.ignite.internal.schema.configuration.SchemaConfigurationConver
import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -31,8 +32,9 @@ import static java.util.stream.Stream.generate;
/** */
@Disabled("https://issues.apache.org/jira/browse/IGNITE-15655")
public class ITMetadataTest extends AbstractBasicIntegrationTest {
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
createAndPopulateTable();
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMixedQueriesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMixedQueriesTest.java
index 4722277..ce2e237 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMixedQueriesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITMixedQueriesTest.java
@@ -25,6 +25,7 @@ import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -35,8 +36,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
/** */
@Disabled("https://issues.apache.org/jira/browse/IGNITE-15655")
public class ITMixedQueriesTest extends AbstractBasicIntegrationTest {
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
Table emp1 = createTable("EMP1");
Table emp2 = createTable("EMP2");
@@ -301,7 +303,7 @@ public class ITMixedQueriesTest extends
AbstractBasicIntegrationTest {
.check();
}
- private Table createTable(String tableName) {
+ private static Table createTable(String tableName) {
TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC",
tableName)
.columns(
SchemaBuilders.column("ID",
ColumnType.INT32).asNonNull().build(),
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITOrToUnionRuleTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITOrToUnionRuleTest.java
index 80d5648..17be05d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITOrToUnionRuleTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITOrToUnionRuleTest.java
@@ -22,6 +22,7 @@ import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -59,8 +60,9 @@ public class ITOrToUnionRuleTest extends
AbstractBasicIntegrationTest {
/** */
public static final String IDX_CAT_ID = "IDX_CAT_ID";
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC",
"PRODUCTS").columns(
SchemaBuilders.column("ID", ColumnType.INT32).asNonNull().build(),
SchemaBuilders.column("CATEGORY",
ColumnType.string()).asNullable().build(),
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITProjectScanMergeRuleTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITProjectScanMergeRuleTest.java
index 96aab11..2d5686d 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITProjectScanMergeRuleTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITProjectScanMergeRuleTest.java
@@ -23,6 +23,7 @@ import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -45,8 +46,9 @@ public class ITProjectScanMergeRuleTest extends
AbstractBasicIntegrationTest {
/** */
public static final String IDX_CAT_ID = "IDX_CAT_ID";
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC",
"PRODUCTS").columns(
SchemaBuilders.column("ID", ColumnType.INT32).asNonNull().build(),
SchemaBuilders.column("CATEGORY",
ColumnType.string()).asNullable().build(),
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSecondaryIndexTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSecondaryIndexTest.java
index 7c9f8bc..b35ed55 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSecondaryIndexTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSecondaryIndexTest.java
@@ -21,6 +21,7 @@ import org.apache.ignite.schema.SchemaBuilders;
import org.apache.ignite.schema.definition.ColumnType;
import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.Table;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -50,8 +51,9 @@ public class ITSecondaryIndexTest extends
AbstractBasicIntegrationTest {
/** */
private static final String NAME_DEPID_CITY_IDX = "NAME_DEPID_CITY_IDX";
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
{
TableDefinition schema = SchemaBuilders.tableBuilder("PUBLIC",
"DEVELOPER")
.columns(
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSetOpTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSetOpTest.java
index 45d27f0..79a3041 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSetOpTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSetOpTest.java
@@ -28,6 +28,7 @@ import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -38,8 +39,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
*/
@Disabled("https://issues.apache.org/jira/browse/IGNITE-15655")
public class ITSetOpTest extends AbstractBasicIntegrationTest {
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
Table emp1 = createTable("EMP1");
Table emp2 = createTable("EMP2");
@@ -259,7 +261,7 @@ public class ITSetOpTest extends
AbstractBasicIntegrationTest {
assertEquals(3, rows.size());
}
- private Table createTable(String tableName) {
+ private static Table createTable(String tableName) {
TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC",
tableName)
.columns(
SchemaBuilders.column("ID",
ColumnType.INT32).asNonNull().build(),
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSortAggregateTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSortAggregateTest.java
index c895093..5a179d4 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSortAggregateTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/calcite/ITSortAggregateTest.java
@@ -26,6 +26,7 @@ import org.apache.ignite.schema.definition.TableDefinition;
import org.apache.ignite.table.RecordView;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
+import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -39,8 +40,9 @@ public class ITSortAggregateTest extends
AbstractBasicIntegrationTest {
/** */
public static final int ROWS = 103;
- /** {@inheritDoc} */
- @Override protected void initTestData() {
+ /** */
+ @BeforeAll
+ static void initTestData() {
TableDefinition schTbl1 = SchemaBuilders.tableBuilder("PUBLIC", "TEST")
.columns(
SchemaBuilders.column("ID",
ColumnType.INT32).asNonNull().build(),