This is an automated email from the ASF dual-hosted git repository.

dybyte pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git


The following commit(s) were added to refs/heads/dev by this push:
     new dac82cd2c8 [Improve][e2e] Stabilize jdbc e2e assertions and waits  
(#10937)
dac82cd2c8 is described below

commit dac82cd2c8010f0602c33bb450ce5188af319d26
Author: zhiwei.niu <[email protected]>
AuthorDate: Mon May 25 17:35:21 2026 +0800

    [Improve][e2e] Stabilize jdbc e2e assertions and waits  (#10937)
---
 .../seatunnel/jdbc/JdbcSinkBatchIntervalIT.java    |  6 +--
 .../connectors/seatunnel/jdbc/JdbcPostgresIT.java  |  6 ++-
 .../seatunnel/jdbc/JdbcSinkCDCChangelogIT.java     |  6 ++-
 .../resources/jdbc_postgres_source_and_sink.conf   |  2 +-
 .../seatunnel/jdbc/JdbcCloudberryIT.java           |  9 +++--
 .../connectors/seatunnel/jdbc/JdbcDorisdbIT.java   |  5 +--
 .../connectors/seatunnel/jdbc/JdbcIrisIT.java      | 24 ++++++-----
 .../seatunnel/jdbc/JdbcMySqlSaveModeCatalogIT.java | 15 +++++++
 .../seatunnel/jdbc/JdbcMysqlSplitIT.java           |  2 +
 .../connectors/seatunnel/jdbc/JdbcPrestoIT.java    | 47 +++++++++++++++-------
 .../connectors/seatunnel/jdbc/JdbcTrinoIT.java     | 29 +++++++------
 .../connectors/seatunnel/jdbc/JdbcXuguIT.java      | 18 ++++++---
 .../connectors/seatunnel/jdbc/MetalakeIT.java      | 19 +++++++--
 13 files changed, 126 insertions(+), 62 deletions(-)

diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkBatchIntervalIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkBatchIntervalIT.java
index 8f081e62cf..26a9e392fb 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkBatchIntervalIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-1/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkBatchIntervalIT.java
@@ -107,7 +107,7 @@ public class JdbcSinkBatchIntervalIT extends TestSuiteBase 
implements TestResour
 
         given().ignoreExceptions()
                 .await()
-                .atMost(30, TimeUnit.SECONDS)
+                .atMost(120, TimeUnit.SECONDS)
                 .pollInterval(2, TimeUnit.SECONDS)
                 .untilAsserted(
                         () -> {
@@ -149,7 +149,7 @@ public class JdbcSinkBatchIntervalIT extends TestSuiteBase 
implements TestResour
 
         given().ignoreExceptions()
                 .await()
-                .atMost(30, TimeUnit.SECONDS)
+                .atMost(120, TimeUnit.SECONDS)
                 .pollInterval(2, TimeUnit.SECONDS)
                 .untilAsserted(
                         () -> {
@@ -198,7 +198,7 @@ public class JdbcSinkBatchIntervalIT extends TestSuiteBase 
implements TestResour
 
         given().ignoreExceptions()
                 .await()
-                .atMost(30, TimeUnit.SECONDS)
+                .atMost(120, TimeUnit.SECONDS)
                 .pollInterval(2, TimeUnit.SECONDS)
                 .untilAsserted(
                         () -> {
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPostgresIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPostgresIT.java
index c0ae2372b5..bc469dca41 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPostgresIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPostgresIT.java
@@ -188,7 +188,8 @@ public class JdbcPostgresIT extends TestSuiteBase 
implements TestResource {
                     + "json_col,\n"
                     + "jsonb_col,\n"
                     + " cast(xml_col as varchar) \n"
-                    + "from pg_e2e_source_table";
+                    + "from pg_e2e_source_table\n"
+                    + "order by gid";
     private static final String SINK_SQL =
             "select\n"
                     + "  gid,\n"
@@ -226,7 +227,8 @@ public class JdbcPostgresIT extends TestSuiteBase 
implements TestResource {
                     + "   jsonb_col,\n"
                     + "  cast(xml_col as varchar) \n"
                     + "from\n"
-                    + "  pg_e2e_sink_table";
+                    + "  pg_e2e_sink_table\n"
+                    + "order by gid";
 
     @TestContainerExtension
     private final ContainerExtendedFactory extendedFactory =
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkCDCChangelogIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkCDCChangelogIT.java
index cea5099e3b..d2d926049b 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkCDCChangelogIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcSinkCDCChangelogIT.java
@@ -111,7 +111,9 @@ public class JdbcSinkCDCChangelogIT extends TestSuiteBase 
implements TestResourc
                         postgreSQLContainer.getUsername(),
                         postgreSQLContainer.getPassword())) {
             try (Statement statement = connection.createStatement();
-                    ResultSet resultSet = statement.executeQuery("select * 
from sink")) {
+                    ResultSet resultSet =
+                            statement.executeQuery(
+                                    "select pk_id, name, score from sink order 
by pk_id")) {
                 while (resultSet.next()) {
                     List<Object> row =
                             Arrays.asList(
@@ -125,7 +127,7 @@ public class JdbcSinkCDCChangelogIT extends TestSuiteBase 
implements TestResourc
         Set<List<Object>> expected =
                 Stream.<List<Object>>of(Arrays.asList(1L, "A_1", 100), 
Arrays.asList(3L, "C", 100))
                         .collect(Collectors.toSet());
-        Assertions.assertIterableEquals(expected, actual);
+        Assertions.assertEquals(expected, actual);
         try (Connection connection =
                 DriverManager.getConnection(
                         postgreSQLContainer.getJdbcUrl(),
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/resources/jdbc_postgres_source_and_sink.conf
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/resources/jdbc_postgres_source_and_sink.conf
index 5d6785e647..8d41c0d9da 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/resources/jdbc_postgres_source_and_sink.conf
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-3/src/test/resources/jdbc_postgres_source_and_sink.conf
@@ -29,7 +29,7 @@ source{
         query ="""select gid, uuid_col, text_col, varchar_col, char_one_col, 
char_col, boolean_col, smallint_col, integer_col, bigint_col, decimal_col, 
numeric_col, real_col, double_precision_col,
                          smallserial_col, serial_col, bigserial_col, date_col, 
timestamp_col, timestamp_tz_col, bpchar_col, age, name, point, linestring, 
polygon_colums, multipoint,
                          multilinestring, multipolygon, geometrycollection, 
geog, json_col, jsonb_col,xml_col from pg_e2e_source_table"""
-      partition_column = "varchar_col"
+      partition_column = "gid"
       partition_num = 2
     }
 }
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCloudberryIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCloudberryIT.java
index d3fc841cc0..7740405c43 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCloudberryIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcCloudberryIT.java
@@ -159,8 +159,11 @@ public class JdbcCloudberryIT extends AbstractJdbcIT {
     protected void beforeStartUP() {
         log.info("Setting up Apache Cloudberry...");
         try {
-            // Wait for container to start
-            Thread.sleep(5000);
+            given().ignoreExceptions()
+                    .await()
+                    .pollInterval(1, TimeUnit.SECONDS)
+                    .atMost(30, TimeUnit.SECONDS)
+                    .until(() -> dbServer != null && dbServer.isRunning());
             // Switch to gpadmin user and start database
             Container.ExecResult execResult =
                     dbServer.execInContainer("bash", "-c", "su - gpadmin -c 
'gpstart -a'");
@@ -178,7 +181,7 @@ public class JdbcCloudberryIT extends AbstractJdbcIT {
                             "bash", "-c", "su - gpadmin -c 'psql -c \"SELECT 
version();\"'");
             log.info("Apache Cloudberry version: {}", execResult.getStdout());
 
-        } catch (InterruptedException | IOException e) {
+        } catch (IOException | InterruptedException e) {
             log.error("Failed to initialize Apache Cloudberry", e);
             throw new RuntimeException("Failed to initialize Apache 
Cloudberry", e);
         }
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDorisdbIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDorisdbIT.java
index 07b735c41b..af70d95337 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDorisdbIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-5/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcDorisdbIT.java
@@ -189,12 +189,11 @@ public class JdbcDorisdbIT extends TestSuiteBase 
implements TestResource {
         dorisServer.setPortBindings(Lists.newArrayList(String.format("%s:%s", 
PORT, DOCKER_PORT)));
         Startables.deepStart(Stream.of(dorisServer)).join();
         log.info("Doris container started");
-        // wait to add BE
-        Thread.sleep(600000);
         // wait for doris fully start
         given().ignoreExceptions()
                 .await()
-                .atMost(600, TimeUnit.SECONDS)
+                .pollInterval(10, TimeUnit.SECONDS)
+                .atMost(1200, TimeUnit.SECONDS)
                 .untilAsserted(this::initializeJdbcConnection);
         initializeJdbcTable();
         batchInsertData();
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcIrisIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcIrisIT.java
index e85495f5e3..fe9a480745 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcIrisIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcIrisIT.java
@@ -442,7 +442,13 @@ public class JdbcIrisIT extends AbstractJdbcIT {
     @Override
     Pair<String[], List<SeaTunnelRow>> initTestData() {
         List<SeaTunnelRow> rows = new ArrayList<>();
+        LocalDate baseDate = LocalDate.of(2024, 1, 1);
+        LocalTime baseTime = LocalTime.of(8, 0, 0);
+        LocalDateTime baseDateTime = LocalDateTime.of(2024, 1, 1, 8, 0, 0);
         for (int i = 1; i <= GEN_ROWS; i++) {
+            LocalDate rowDate = baseDate.plusDays(i);
+            LocalTime rowTime = baseTime.plusSeconds(i);
+            LocalDateTime rowDateTime = baseDateTime.plusSeconds(i);
             SeaTunnelRow row =
                     new SeaTunnelRow(
                             new Object[] {
@@ -463,9 +469,9 @@ public class JdbcIrisIT extends AbstractJdbcIT {
                                 "*",
                                 String.valueOf(i),
                                 String.valueOf(i),
-                                Date.valueOf(LocalDate.now()),
-                                Timestamp.valueOf(LocalDateTime.now()),
-                                Timestamp.valueOf(LocalDateTime.now()),
+                                Date.valueOf(rowDate),
+                                Timestamp.valueOf(rowDateTime),
+                                Timestamp.valueOf(rowDateTime),
                                 BigDecimal.valueOf(i, 0),
                                 BigDecimal.valueOf(i, 0),
                                 BigDecimal.valueOf(i, 2),
@@ -512,20 +518,20 @@ public class JdbcIrisIT extends AbstractJdbcIT {
                                 "1",
                                 "1",
                                 "1.111",
-                                Time.valueOf(LocalTime.now()),
+                                Time.valueOf(rowTime),
                                 "10".getBytes(),
                                 Double.parseDouble("1.11"),
                                 Long.valueOf(i),
-                                Timestamp.valueOf(LocalDateTime.now()),
+                                Timestamp.valueOf(rowDateTime),
                                 i,
                                 i,
                                 i,
                                 "F4526E29-8B4A-4449-AA90-2A7DF971F221",
                                 String.valueOf(i),
-                                Time.valueOf(LocalTime.now()),
-                                Time.valueOf(LocalTime.now()),
-                                Timestamp.valueOf(LocalDateTime.now()),
-                                Timestamp.valueOf(LocalDateTime.now()),
+                                Time.valueOf(rowTime),
+                                Time.valueOf(rowTime),
+                                Timestamp.valueOf(rowDateTime),
+                                Timestamp.valueOf(rowDateTime),
                                 i,
                                 i,
                                 "3E8B5AC7-D63A-4202-83E1-A576EBE11557",
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMySqlSaveModeCatalogIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMySqlSaveModeCatalogIT.java
index cf968a4e23..84976786f6 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMySqlSaveModeCatalogIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMySqlSaveModeCatalogIT.java
@@ -50,8 +50,11 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.time.Duration;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Stream;
 
+import static org.awaitility.Awaitility.given;
+
 @Slf4j
 public class JdbcMySqlSaveModeCatalogIT extends TestSuiteBase implements 
TestResource {
 
@@ -154,6 +157,11 @@ public class JdbcMySqlSaveModeCatalogIT extends 
TestSuiteBase implements TestRes
     @BeforeAll
     public void startUp() throws Exception {
         initContainer();
+        given().ignoreExceptions()
+                .await()
+                .pollInterval(500, TimeUnit.MILLISECONDS)
+                .atMost(2, TimeUnit.MINUTES)
+                .untilAsserted(this::assertMySqlReady);
         initializeJdbcTable();
     }
 
@@ -276,6 +284,13 @@ public class JdbcMySqlSaveModeCatalogIT extends 
TestSuiteBase implements TestRes
                 mysql_container.getPassword());
     }
 
+    private void assertMySqlReady() throws SQLException {
+        try (Connection connection = getJdbcMySqlConnection();
+                Statement statement = connection.createStatement()) {
+            statement.executeQuery("SELECT 1");
+        }
+    }
+
     private void initializeJdbcTable() {
         try (Connection connection = getJdbcMySqlConnection()) {
             Statement statement = connection.createStatement();
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlSplitIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlSplitIT.java
index 8a43578b3d..beff9a9885 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlSplitIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcMysqlSplitIT.java
@@ -661,6 +661,7 @@ public class JdbcMysqlSplitIT extends TestSuiteBase 
implements TestResource {
                 }
             } catch (Exception e) {
                 LOG.error("Error splitting on column {}: {}", charColumn, 
e.getMessage(), e);
+                Assertions.fail("Error splitting on column " + charColumn, e);
             }
         }
 
@@ -720,6 +721,7 @@ public class JdbcMysqlSplitIT extends TestSuiteBase 
implements TestResource {
                 }
             } catch (Exception e) {
                 LOG.error("Error splitting on column {}: {}", charColumn, 
e.getMessage(), e);
+                Assertions.fail("Error splitting on column " + charColumn, e);
             }
         }
 
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPrestoIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPrestoIT.java
index 76eed4f657..e525322d55 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPrestoIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcPrestoIT.java
@@ -39,6 +39,9 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.List;
 import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import static org.awaitility.Awaitility.given;
 
 @Slf4j
 public class JdbcPrestoIT extends AbstractJdbcIT {
@@ -106,24 +109,38 @@ public class JdbcPrestoIT extends AbstractJdbcIT {
 
         this.connection = driver.connect(jdbcUrl, props);
 
-        // maybe the Presto server is still initializing
-        int tryTimes = 5;
-        for (int i = 0; i < tryTimes; i++) {
-            try (Statement statement = connection.createStatement()) {
-                statement.executeQuery(" select 1 ");
-                break;
-            } catch (SQLException ignored) {
-                log.info("the Presto server is still initializing. wait it ");
-            }
-            try {
-                Thread.sleep(15 * 1000);
-            } catch (InterruptedException e) {
-                throw new RuntimeException(e);
-            }
-        }
+        given().ignoreExceptions()
+                .await()
+                .pollInterval(2, TimeUnit.SECONDS)
+                .atMost(120, TimeUnit.SECONDS)
+                .untilAsserted(
+                        () -> {
+                            try (Statement statement = 
connection.createStatement()) {
+                                statement.execute(
+                                        "CREATE TABLE IF NOT EXISTS 
memory.default._readiness_probe (id INTEGER)");
+                            }
+                        });
         this.connection.setAutoCommit(false);
     }
 
+    @Override
+    protected void createNeededTables() {
+        try (Statement statement = connection.createStatement()) {
+            String createTemplate = jdbcCase.getCreateSql();
+            String createSource =
+                    String.format(
+                            createTemplate,
+                            buildTableInfoWithSchema(
+                                    jdbcCase.getDatabase(),
+                                    jdbcCase.getSchema(),
+                                    jdbcCase.getSourceTable()));
+            statement.execute(createSource);
+        } catch (Exception exception) {
+            log.error(ExceptionUtils.getMessage(exception));
+            throw new 
SeaTunnelRuntimeException(JdbcITErrorCode.CREATE_TABLE_FAILED, exception);
+        }
+    }
+
     @Override
     JdbcCase getJdbcCase() {
         String jdbcUrl = String.format(PRESTO_URL, PRESTO_PORT, DATABASE);
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcTrinoIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcTrinoIT.java
index 4c4770632e..f0accb7b44 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcTrinoIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcTrinoIT.java
@@ -39,6 +39,9 @@ import java.sql.SQLException;
 import java.sql.Statement;
 import java.util.List;
 import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import static org.awaitility.Awaitility.given;
 
 @Slf4j
 public class JdbcTrinoIT extends AbstractJdbcIT {
@@ -106,21 +109,17 @@ public class JdbcTrinoIT extends AbstractJdbcIT {
 
         this.connection = driver.connect(jdbcUrl, props);
 
-        // maybe the TRINO  server is still initializing
-        int tryTimes = 5;
-        for (int i = 0; i < tryTimes; i++) {
-            try (Statement statement = connection.createStatement()) {
-                statement.executeQuery(" select 1 ");
-                break;
-            } catch (SQLException ignored) {
-                log.info("the Trino server is still initializing. wait it ");
-            }
-            try {
-                Thread.sleep(15 * 1000);
-            } catch (InterruptedException e) {
-                throw new RuntimeException(e);
-            }
-        }
+        given().ignoreExceptions()
+                .await()
+                .pollInterval(2, TimeUnit.SECONDS)
+                .atMost(120, TimeUnit.SECONDS)
+                .untilAsserted(
+                        () -> {
+                            try (Statement statement = 
connection.createStatement()) {
+                                statement.execute(
+                                        "CREATE TABLE IF NOT EXISTS 
memory.default._readiness_probe (id INTEGER)");
+                            }
+                        });
     }
 
     @Override
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
index 3b1fded17c..78a18b4acc 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/JdbcXuguIT.java
@@ -175,7 +175,13 @@ public class JdbcXuguIT extends AbstractJdbcIT {
     @Override
     Pair<String[], List<SeaTunnelRow>> initTestData() {
         List<SeaTunnelRow> rows = new ArrayList<>();
+        LocalDate baseDate = LocalDate.of(2024, 1, 1);
+        LocalTime baseTime = LocalTime.of(9, 0, 0);
+        LocalDateTime baseDateTime = LocalDateTime.of(2024, 1, 1, 9, 0, 0);
         for (int i = 0; i < 100; i++) {
+            LocalDate rowDate = baseDate.plusDays(i);
+            LocalTime rowTime = baseTime.plusSeconds(i);
+            LocalDateTime rowDateTime = baseDateTime.plusSeconds(i);
             SeaTunnelRow row =
                     new SeaTunnelRow(
                             new Object[] {
@@ -193,12 +199,12 @@ public class JdbcXuguIT extends AbstractJdbcIT {
                                 String.format("f1_%s", i),
                                 String.format("f1_%s", i),
                                 String.format("f1_%s", i),
-                                Date.valueOf(LocalDate.now()),
-                                Time.valueOf(LocalTime.now()),
-                                new Timestamp(System.currentTimeMillis()),
-                                Timestamp.valueOf(LocalDateTime.now()),
-                                Time.valueOf(LocalTime.now()),
-                                new Timestamp(System.currentTimeMillis()),
+                                Date.valueOf(rowDate),
+                                Time.valueOf(rowTime),
+                                Timestamp.valueOf(rowDateTime),
+                                Timestamp.valueOf(rowDateTime),
+                                Time.valueOf(rowTime),
+                                Timestamp.valueOf(rowDateTime),
                                 null,
                                 null,
                                 null,
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/MetalakeIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/MetalakeIT.java
index 56394abeba..2d14c70ae4 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/MetalakeIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-jdbc-e2e/connector-jdbc-e2e-part-7/src/test/java/org/apache/seatunnel/connectors/seatunnel/jdbc/MetalakeIT.java
@@ -154,10 +154,23 @@ public class MetalakeIT extends SeaTunnelContainer {
                         + " --no-check-certificate"
                         + "&& mkdir -p /tmp/gravitino && cd /tmp/gravitino && 
curl -C - --retry 5 -L -k -o gravitino-0.9.1-bin.tar.gz 
https://dlcdn.apache.org/gravitino/0.9.1/gravitino-0.9.1-bin.tar.gz && tar 
-zxvf gravitino-0.9.1-bin.tar.gz && cd /tmp/gravitino/gravitino-0.9.1-bin && 
./bin/gravitino.sh start");
 
+        given().ignoreExceptions()
+                .await()
+                .pollInterval(2, TimeUnit.SECONDS)
+                .atMost(180, TimeUnit.SECONDS)
+                .untilAsserted(
+                        () -> {
+                            Container.ExecResult result =
+                                    server.execInContainer(
+                                            "bash",
+                                            "-c",
+                                            "curl -sf 
'http://127.0.0.1:8090/api/metalakes' >/dev/null");
+                            Assertions.assertEquals(0, result.getExitCode(), 
result.getStderr());
+                        });
         server.execInContainer(
                 "bash",
                 "-c",
-                "sleep 60 && curl -L 'http://127.0.0.1:8090/api/metalakes' -H 
'Content-Type: application/json' -H 'Accept: application/vnd.gravitino.v1+json' 
-d '{\"name\":\"test_metalake\",\"comment\":\"for metalake 
test\",\"properties\":{}}'"
+                "curl -L 'http://127.0.0.1:8090/api/metalakes' -H 
'Content-Type: application/json' -H 'Accept: application/vnd.gravitino.v1+json' 
-d '{\"name\":\"test_metalake\",\"comment\":\"for metalake 
test\",\"properties\":{}}'"
                         + "&& curl -L 
'http://127.0.0.1:8090/api/metalakes/test_metalake/catalogs' -H 'Content-Type: 
application/json' -H 'Accept: application/vnd.gravitino.v1+json' -d 
'{\"name\":\"test_catalog\",\"type\":\"relational\",\"provider\":\"jdbc-mysql\",\"comment\":\"for
 metalake 
test\",\"properties\":{\"jdbc-driver\":\"com.mysql.cj.jdbc.Driver\",\"jdbc-url\":\"jdbc:mysql://mysql-e2e:3306/seatunnel?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true\",\"jdbc-user\":\"
 [...]
 
         dbServer = 
initContainer().withImagePullPolicy(PullPolicy.alwaysPull());
@@ -334,7 +347,7 @@ public class MetalakeIT extends SeaTunnelContainer {
 
             connection.commit();
         } catch (Exception exception) {
-            exception.printStackTrace();
+            throw new RuntimeException("Create MetalakeIT tables failed", 
exception);
         }
     }
 
@@ -355,7 +368,7 @@ public class MetalakeIT extends SeaTunnelContainer {
 
             connection.commit();
         } catch (Exception exception) {
-            exception.printStackTrace();
+            throw new RuntimeException("Insert MetalakeIT test data failed", 
exception);
         }
     }
 

Reply via email to