You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2026/10/21 03:44:28 UTC
(iotdb) branch master updated: [Test] Speed up schema, pipe and subscription integration tests (#18943)
This is an automated email from the ASF dual-hosted git repository.
jt2594838 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 9ffa89327f8 [Test] Speed up schema, pipe and subscription integration tests (#18943)
9ffa89327f8 is described below
commit 9ffa89327f806ac22a7344fe9b844164072a3dc2
Author: Caideyipi <87...@users.noreply.github.com>
AuthorDate: Wed Oct 21 11:44:22 2026 +0800
[Test] Speed up schema, pipe and subscription integration tests (#18943)
---
.../db/it/schema/IoTDBAlterTimeSeriesTypeIT.java | 91 +++++++++++-----------
.../org/apache/iotdb/db/it/utils/TestUtils.java | 14 ++--
.../manual/enhanced/IoTDBPipeClusterIT.java | 5 +-
.../auto/enhanced/IoTDBPipeClusterIT.java | 5 +-
.../it/schema/IoTDBAlterColumnTypeIT.java | 55 ++++++-------
.../session/it/IoTDBSessionSchemaTemplateIT.java | 26 +++++--
.../it/IoTDBSubscriptionITConstant.java | 3 +-
7 files changed, 109 insertions(+), 90 deletions(-)
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java
index 969ab28fd7a..8737df331d9 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/schema/IoTDBAlterTimeSeriesTypeIT.java
@@ -375,12 +375,14 @@ public class IoTDBAlterTimeSeriesTypeIT {
Collections.singletonList("s1"),
Collections.singletonList(from),
Collections.singletonList(ColumnCategory.FIELD));
+ // Batch fixture writes without crossing data type changes or flush boundaries.
for (int i = 1; i <= 512; i++) {
- tablet.addTimestamp(0, i);
- tablet.addValue("s1", 0, genValue(from, i));
- session.insertTablet(tablet);
- tablet.reset();
+ int rowIndex = tablet.getRowSize();
+ tablet.addTimestamp(rowIndex, i);
+ tablet.addValue("s1", rowIndex, genValue(from, i));
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
// alter the type to "to"
@@ -413,11 +415,12 @@ public class IoTDBAlterTimeSeriesTypeIT {
Collections.singletonList(to),
Collections.singletonList(ColumnCategory.FIELD));
for (int i = 513; i <= 1024; i++) {
- tablet.addTimestamp(0, i);
- tablet.addValue("s1", 0, genValue(to, i));
- session.insertTablet(tablet);
- tablet.reset();
+ int rowIndex = tablet.getRowSize();
+ tablet.addTimestamp(rowIndex, i);
+ tablet.addValue("s1", rowIndex, genValue(to, i));
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
standardAccumulatorQueryByTimeOnlyInvolveOldDataTypeTest(session, from, to);
@@ -1186,23 +1189,23 @@ public class IoTDBAlterTimeSeriesTypeIT {
// session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 512; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
String columns;
if (UNSUPPORT_MIN_AND_MAX_QUERY_DATA_TYPE_LIST.contains(from)
@@ -1323,23 +1326,23 @@ public class IoTDBAlterTimeSeriesTypeIT {
// session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 512; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
String columns;
if (UNSUPPORT_MIN_AND_MAX_QUERY_DATA_TYPE_LIST.contains(from)
@@ -1452,23 +1455,23 @@ public class IoTDBAlterTimeSeriesTypeIT {
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 512; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
// session.executeNonQueryStatement("FLUSH");
String columns;
@@ -1585,23 +1588,23 @@ public class IoTDBAlterTimeSeriesTypeIT {
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 512; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
// session.executeNonQueryStatement("FLUSH");
String columns;
@@ -1715,23 +1718,23 @@ public class IoTDBAlterTimeSeriesTypeIT {
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 520; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
// session.executeNonQueryStatement("FLUSH");
String columns;
@@ -1849,23 +1852,23 @@ public class IoTDBAlterTimeSeriesTypeIT {
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 520; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insertTablet(tablet);
- tablet.reset();
}
+ session.insertTablet(tablet);
+ tablet.reset();
// session.executeNonQueryStatement("FLUSH");
String columns;
diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
index 79a2f1c9847..5eb22c598e0 100644
--- a/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
+++ b/integration-test/src/test/java/org/apache/iotdb/db/it/utils/TestUtils.java
@@ -1697,7 +1697,7 @@ public class TestUtils {
// Keep retrying if there are execution failures
await()
.pollInSameThread()
- .pollDelay(1L, TimeUnit.SECONDS)
+ .pollDelay(0L, TimeUnit.SECONDS)
.pollInterval(1L, TimeUnit.SECONDS)
.atMost(timeoutSeconds, TimeUnit.SECONDS)
.untilAsserted(
@@ -1741,7 +1741,7 @@ public class TestUtils {
// Keep retrying if there are execution failures
await()
.pollInSameThread()
- .pollDelay(1L, TimeUnit.SECONDS)
+ .pollDelay(0L, TimeUnit.SECONDS)
.pollInterval(1L, TimeUnit.SECONDS)
.atMost(timeoutSeconds, TimeUnit.SECONDS)
.untilAsserted(
@@ -1777,7 +1777,7 @@ public class TestUtils {
// Keep retrying if there are execution failures
await()
.pollInSameThread()
- .pollDelay(1L, TimeUnit.SECONDS)
+ .pollDelay(0L, TimeUnit.SECONDS)
.pollInterval(1L, TimeUnit.SECONDS)
.atMost(timeoutSeconds, TimeUnit.SECONDS)
.untilAsserted(
@@ -1821,7 +1821,7 @@ public class TestUtils {
// Keep retrying if there are execution failures
await()
.pollInSameThread()
- .pollDelay(1L, TimeUnit.SECONDS)
+ .pollDelay(0L, TimeUnit.SECONDS)
.pollInterval(1L, TimeUnit.SECONDS)
.atMost(timeoutSeconds, TimeUnit.SECONDS)
.untilAsserted(
@@ -1902,7 +1902,7 @@ public class TestUtils {
// Keep retrying if there are execution failures
await()
.pollInSameThread()
- .pollDelay(1L, TimeUnit.SECONDS)
+ .pollDelay(0L, TimeUnit.SECONDS)
.pollInterval(1L, TimeUnit.SECONDS)
.atMost(timeoutSeconds, TimeUnit.SECONDS)
.untilAsserted(
@@ -1983,7 +1983,7 @@ public class TestUtils {
// Keep retrying if there are execution failures
await()
.pollInSameThread()
- .pollDelay(1L, TimeUnit.SECONDS)
+ .pollDelay(0L, TimeUnit.SECONDS)
.pollInterval(1L, TimeUnit.SECONDS)
.atMost(timeoutSeconds, TimeUnit.SECONDS)
.untilAsserted(
@@ -2027,7 +2027,7 @@ public class TestUtils {
// Keep retrying if there are execution failures
await()
.pollInSameThread()
- .pollDelay(1L, TimeUnit.SECONDS)
+ .pollDelay(0L, TimeUnit.SECONDS)
.pollInterval(1L, TimeUnit.SECONDS)
.atMost(timeoutSeconds, TimeUnit.SECONDS)
.untilAsserted(
diff --git a/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/enhanced/IoTDBPipeClusterIT.java b/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/enhanced/IoTDBPipeClusterIT.java
index cde83cc4da6..1e3961bd61a 100644
--- a/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/enhanced/IoTDBPipeClusterIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/tablemodel/manual/enhanced/IoTDBPipeClusterIT.java
@@ -165,9 +165,8 @@ public class IoTDBPipeClusterIT extends AbstractPipeTableModelDualManualIT {
TableModelUtils.assertCountData("test", "test", 1, receiverEnv);
receiverEnv.getDataNodeWrapper(0).stop();
-
- // Ensure that the kill -9 operation is completed
- Thread.sleep(5000);
+ // stop() waits for process exit; verify it succeeded before checking failover.
+ Assert.assertFalse(receiverEnv.getDataNodeWrapper(0).isAlive());
TableModelUtils.insertData("test", "test", 1, 2, senderEnv);
} catch (Exception e) {
fail(e.getMessage());
diff --git a/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/treemodel/auto/enhanced/IoTDBPipeClusterIT.java b/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/treemodel/auto/enhanced/IoTDBPipeClusterIT.java
index b64a43fc04d..f17f63214cf 100644
--- a/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/treemodel/auto/enhanced/IoTDBPipeClusterIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/pipe/it/dual/treemodel/auto/enhanced/IoTDBPipeClusterIT.java
@@ -175,9 +175,8 @@ public class IoTDBPipeClusterIT extends AbstractPipeDualTreeModelAutoIT {
Assert.assertEquals(TSStatusCode.SUCCESS_STATUS.getStatusCode(), status.getCode());
receiverEnv.getDataNodeWrapper(0).stop();
-
- // Ensure that the kill -9 operation is completed
- Thread.sleep(5000);
+ // stop() waits for process exit; verify it succeeded before checking failover.
+ Assert.assertFalse(receiverEnv.getDataNodeWrapper(0).isAlive());
for (DataNodeWrapper nodeWrapper : receiverEnv.getDataNodeWrapperList()) {
if (!nodeWrapper.isAlive()) {
continue;
diff --git a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBAlterColumnTypeIT.java b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBAlterColumnTypeIT.java
index d9a1f617b02..00c3df4f390 100644
--- a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBAlterColumnTypeIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBAlterColumnTypeIT.java
@@ -341,12 +341,14 @@ public class IoTDBAlterColumnTypeIT {
Collections.singletonList("s1"),
Collections.singletonList(from),
Collections.singletonList(ColumnCategory.FIELD));
+ // Batch fixture writes without crossing data type changes or flush boundaries.
for (int i = 1; i <= 512; i++) {
- tablet.addTimestamp(0, i);
- tablet.addValue("s1", 0, genValue(from, i));
- session.insert(tablet);
- tablet.reset();
+ int rowIndex = tablet.getRowSize();
+ tablet.addTimestamp(rowIndex, i);
+ tablet.addValue("s1", rowIndex, genValue(from, i));
}
+ session.insert(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
// alter the type to "to"
@@ -373,11 +375,12 @@ public class IoTDBAlterColumnTypeIT {
Collections.singletonList(to),
Collections.singletonList(ColumnCategory.FIELD));
for (int i = 513; i <= 1024; i++) {
- tablet.addTimestamp(0, i);
- tablet.addValue("s1", 0, genValue(to, i));
- session.insert(tablet);
- tablet.reset();
+ int rowIndex = tablet.getRowSize();
+ tablet.addTimestamp(rowIndex, i);
+ tablet.addValue("s1", rowIndex, genValue(to, i));
}
+ session.insert(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
standardAccumulatorQueryByTimeOnlyInvolveOldDataTypeTest(session, from, to);
@@ -1365,23 +1368,23 @@ public class IoTDBAlterColumnTypeIT {
// session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 512; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insert(tablet);
- tablet.reset();
}
+ session.insert(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insert(tablet);
- tablet.reset();
}
+ session.insert(tablet);
+ tablet.reset();
SessionDataSet dataSet =
session.executeQueryStatement(
@@ -1467,23 +1470,23 @@ public class IoTDBAlterColumnTypeIT {
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insert(tablet);
- tablet.reset();
}
+ session.insert(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 512; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insert(tablet);
- tablet.reset();
}
+ session.insert(tablet);
+ tablet.reset();
// session.executeNonQueryStatement("FLUSH");
SessionDataSet dataSet =
@@ -1572,23 +1575,23 @@ public class IoTDBAlterColumnTypeIT {
for (int i = 513; i <= 1024; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insert(tablet);
- tablet.reset();
}
+ session.insert(tablet);
+ tablet.reset();
session.executeNonQueryStatement("FLUSH");
for (int i = 1; i <= 520; i++) {
int rowIndex = tablet.getRowSize();
- tablet.addTimestamp(0, i);
+ tablet.addTimestamp(rowIndex, i);
tablet.addValue("s1", rowIndex, genValue(from, i));
tablet.addValue("s2", rowIndex, genValue(from, i * 2));
- session.insert(tablet);
- tablet.reset();
}
+ session.insert(tablet);
+ tablet.reset();
// session.executeNonQueryStatement("FLUSH");
SessionDataSet dataSet =
diff --git a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
index ef7bffdb9f0..f994e65163d 100644
--- a/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
+++ b/integration-test/src/test/java/org/apache/iotdb/session/it/IoTDBSessionSchemaTemplateIT.java
@@ -41,6 +41,7 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.junit.runners.Parameterized;
import java.io.IOException;
import java.util.ArrayList;
@@ -63,20 +64,33 @@ public class IoTDBSessionSchemaTemplateIT extends AbstractSchemaIT {
super(schemaTestMode);
}
+ // Keep one cluster per schema engine mode, and clear its schema between test methods.
+ @Parameterized.BeforeParam
+ public static void before() throws Exception {
+ setUpEnvironment();
+ EnvFactory.getEnv().initClusterEnvironment();
+ }
+
+ @Parameterized.AfterParam
+ public static void after() throws Exception {
+ EnvFactory.getEnv().cleanClusterEnvironment();
+ tearDownEnvironment();
+ }
+
@Before
public void setUp() throws Exception {
- setUpEnvironmentBeforeMethod();
- EnvFactory.getEnv().initClusterEnvironment();
session = EnvFactory.getEnv().getSessionConnection();
}
@After
public void tearDown() throws Exception {
- if (session != null) {
- session.close();
+ try {
+ if (session != null) {
+ session.close();
+ }
+ } finally {
+ clearSchema();
}
- EnvFactory.getEnv().cleanClusterEnvironment();
- tearDownEnvironment();
}
@Test
diff --git a/integration-test/src/test/java/org/apache/iotdb/subscription/it/IoTDBSubscriptionITConstant.java b/integration-test/src/test/java/org/apache/iotdb/subscription/it/IoTDBSubscriptionITConstant.java
index 3162139fb66..6c7eb061789 100644
--- a/integration-test/src/test/java/org/apache/iotdb/subscription/it/IoTDBSubscriptionITConstant.java
+++ b/integration-test/src/test/java/org/apache/iotdb/subscription/it/IoTDBSubscriptionITConstant.java
@@ -31,7 +31,8 @@ import java.util.function.Consumer;
public class IoTDBSubscriptionITConstant {
- private static final long AWAITILITY_POLL_DELAY_SECOND = 1L;
+ // Conditions may already hold when the assertion starts; only wait between retries.
+ private static final long AWAITILITY_POLL_DELAY_SECOND = 0L;
private static final long AWAITILITY_POLL_INTERVAL_SECOND = 1L;
private static final long AWAITILITY_AT_MOST_SECOND = 600L;