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

wanghailin 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 9a9917d37c [Improve][E2E] improve doris initialize (#8446)
9a9917d37c is described below

commit 9a9917d37c961f9e5523fb754d9a5831135a3473
Author: zhangdonghao <[email protected]>
AuthorDate: Sat Jan 4 15:52:09 2025 +0800

    [Improve][E2E] improve doris initialize (#8446)
---
 .../e2e/connector/doris/AbstractDorisIT.java       | 40 ++++++++++++++--------
 .../e2e/connector/doris/DorisErrorIT.java          |  2 +-
 .../seatunnel/e2e/connector/doris/DorisIT.java     | 11 ++++++
 .../e2e/connector/doris/DorisNoSchemaIT.java       | 38 --------------------
 .../e2e/connector/doris/GenerateTestData.java      |  6 ----
 5 files changed, 38 insertions(+), 59 deletions(-)

diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/AbstractDorisIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/AbstractDorisIT.java
index 19e17d8089..d8647f0f07 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/AbstractDorisIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/AbstractDorisIT.java
@@ -25,9 +25,7 @@ import org.apache.seatunnel.e2e.common.TestSuiteBase;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.testcontainers.containers.GenericContainer;
-import org.testcontainers.containers.output.Slf4jLogConsumer;
 import org.testcontainers.lifecycle.Startables;
-import org.testcontainers.utility.DockerLoggerFactory;
 
 import lombok.extern.slf4j.Slf4j;
 
@@ -40,6 +38,8 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
 import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.LockSupport;
@@ -71,17 +71,18 @@ public abstract class AbstractDorisIT extends TestSuiteBase 
implements TestResou
     protected static final String DRIVER_CLASS = "com.mysql.cj.jdbc.Driver";
     protected static final String DRIVER_JAR =
             
"https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.0.32/mysql-connector-j-8.0.32.jar";;
+    private static final boolean isGithubActionsEnv =
+            "true".equalsIgnoreCase(System.getenv("GITHUB_ACTIONS"));
 
     @BeforeAll
     @Override
     public void startUp() {
+        log.info("isGithubActionsEnv: {}", isGithubActionsEnv);
         container =
                 new GenericContainer<>(DOCKER_IMAGE)
                         .withNetwork(NETWORK)
                         .withNetworkAliases(HOST)
-                        .withPrivilegedMode(true)
-                        .withLogConsumer(
-                                new 
Slf4jLogConsumer(DockerLoggerFactory.getLogger(DOCKER_IMAGE)));
+                        .withPrivilegedMode(true);
         container.setPortBindings(
                 Lists.newArrayList(
                         String.format("%s:%s", QUERY_PORT, QUERY_PORT),
@@ -89,15 +90,17 @@ public abstract class AbstractDorisIT extends TestSuiteBase 
implements TestResou
                         String.format("%s:%s", BE_HTTP_PORT, BE_HTTP_PORT)));
         Startables.deepStart(Stream.of(container)).join();
         log.info("doris container started");
-        given().ignoreExceptions()
+        given().pollDelay(20, TimeUnit.SECONDS)
                 .await()
                 .atMost(360, TimeUnit.SECONDS)
                 .untilAsserted(this::initializeJdbcConnection);
+        log.info("doris initialized");
     }
 
     protected void initializeJdbcConnection()
             throws SQLException, ClassNotFoundException, MalformedURLException,
                     InstantiationException, IllegalAccessException {
+        log.info("doris initializing ...");
         URLClassLoader urlClassLoader =
                 new URLClassLoader(new URL[] {new URL(DRIVER_JAR)}, 
DorisIT.class.getClassLoader());
         Thread.currentThread().setContextClassLoader(urlClassLoader);
@@ -106,7 +109,9 @@ public abstract class AbstractDorisIT extends TestSuiteBase 
implements TestResou
         props.put("user", USERNAME);
         props.put("password", PASSWORD);
         jdbcConnection = driver.connect(String.format(URL, 
container.getHost()), props);
-        initializeBE();
+        if (isGithubActionsEnv) {
+            initializeBE();
+        }
         try (Statement statement = jdbcConnection.createStatement()) {
             statement.execute(SET_SQL);
             statement.execute(SET_CONNECTIONS);
@@ -124,14 +129,21 @@ public abstract class AbstractDorisIT extends 
TestSuiteBase implements TestResou
     // cross-container access failure. Delete the BE and add it again
     private void initializeBE() {
         try (Statement statement = jdbcConnection.createStatement()) {
-            ResultSet resultSet = statement.executeQuery(SHOW_FE);
-            String feIp = null;
-            while (resultSet.next()) {
-                feIp = resultSet.getString("Host");
+            ResultSet beResultSet = statement.executeQuery(SHOW_BE);
+            List<String> beList = new ArrayList<>();
+            while (beResultSet.next()) {
+                beList.add(beResultSet.getString("Host"));
+            }
+            if (beList.stream().anyMatch("127.0.0.1"::equals)) {
+                ResultSet resultSet = statement.executeQuery(SHOW_FE);
+                String feIp = null;
+                while (resultSet.next()) {
+                    feIp = resultSet.getString("Host");
+                }
+                statement.execute(DROP_BE);
+                statement.execute(String.format(ADD_BE, feIp));
+                log.info("doris BE initialized");
             }
-            statement.execute(DROP_BE);
-            statement.execute(String.format(ADD_BE, feIp));
-
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisErrorIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisErrorIT.java
index d255c917c3..517b600533 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisErrorIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisErrorIT.java
@@ -90,7 +90,7 @@ public class DorisErrorIT extends AbstractDorisIT {
         log.info("doris error log: \n" + future.get().getStderr());
         super.container.start();
         // wait for the container to restart
-        given().ignoreExceptions()
+        given().pollInterval(20, TimeUnit.SECONDS)
                 .await()
                 .atMost(360, TimeUnit.SECONDS)
                 .untilAsserted(this::initializeJdbcConnection);
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisIT.java
index 178ed0ffba..d817c7743b 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisIT.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisIT.java
@@ -202,6 +202,16 @@ public class DorisIT extends AbstractDorisIT {
         checkAllTypeSinkData();
     }
 
+    @TestTemplate
+    public void testNoSchemaDoris(TestContainer container)
+            throws IOException, InterruptedException {
+        initializeJdbcTable();
+        batchInsertUniqueTableData();
+        Container.ExecResult execResult1 = 
container.executeJob("/doris_source_no_schema.conf");
+        Assertions.assertEquals(0, execResult1.getExitCode());
+        checkSinkData();
+    }
+
     private void checkAllTypeSinkData() {
         try {
             assertHasData(sourceDB, DUPLICATE_TABLE);
@@ -412,6 +422,7 @@ public class DorisIT extends AbstractDorisIT {
                 // create source and sink table
                 statement.execute(createUniqueTableForTest(sourceDB));
                 statement.execute(createDuplicateTableForTest(sourceDB));
+                log.info("create source and sink table succeed");
             } catch (SQLException e) {
                 throw new RuntimeException("Initializing table failed!", e);
             }
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisNoSchemaIT.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisNoSchemaIT.java
deleted file mode 100644
index a2806ae9ab..0000000000
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/DorisNoSchemaIT.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.seatunnel.e2e.connector.doris;
-
-import org.apache.seatunnel.e2e.common.container.TestContainer;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.TestTemplate;
-import org.testcontainers.containers.Container;
-
-import java.io.IOException;
-
-public class DorisNoSchemaIT extends DorisIT {
-
-    @TestTemplate
-    public void testDoris(TestContainer container) throws IOException, 
InterruptedException {
-        initializeJdbcTable();
-        batchInsertUniqueTableData();
-        Container.ExecResult execResult1 = 
container.executeJob("/doris_source_no_schema.conf");
-        Assertions.assertEquals(0, execResult1.getExitCode());
-        checkSinkData();
-    }
-}
diff --git 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/GenerateTestData.java
 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/GenerateTestData.java
index 40ce1a9ad6..f2defc8716 100644
--- 
a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/GenerateTestData.java
+++ 
b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-doris-e2e/src/test/java/org/apache/seatunnel/e2e/connector/doris/GenerateTestData.java
@@ -129,10 +129,4 @@ public class GenerateTestData {
 
         return integer.add(decimal).setScale(decimalDigits, 
RoundingMode.HALF_UP);
     }
-
-    public static void main(String[] args) {
-        for (int i = 0; i < 1000; i++) {
-            System.out.println(genFloat(0, 1000));
-        }
-    }
 }

Reply via email to