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

dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 3f988e1b7f0 [improvement](doris compose) regression test auto install 
doris compose requirements (#29012)
3f988e1b7f0 is described below

commit 3f988e1b7f0ec3d383573df017388b93fee0a07a
Author: yujun <yu.jun.re...@gmail.com>
AuthorDate: Sat Jan 6 20:20:38 2024 +0800

    [improvement](doris compose) regression test auto install doris compose 
requirements (#29012)
---
 docker/runtime/doris-compose/cluster.py                |  5 +----
 docker/runtime/doris-compose/command.py                | 12 ++++++++----
 .../org/apache/doris/regression/RegressionTest.groovy  | 18 ++++++++++++++++++
 .../org/apache/doris/regression/suite/Suite.groovy     |  5 +++++
 4 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/docker/runtime/doris-compose/cluster.py 
b/docker/runtime/doris-compose/cluster.py
index d78c035f077..23016bc27ba 100644
--- a/docker/runtime/doris-compose/cluster.py
+++ b/docker/runtime/doris-compose/cluster.py
@@ -68,10 +68,6 @@ def get_all_cluster_names():
         ]
 
 
-def lock_network():
-    return filelock.FileLock(os.path.join(LOCAL_DORIS_PATH, "lock"))
-
-
 def gen_subnet_prefix16():
     used_subnet = utils.get_docker_subnets_prefix16()
     for cluster_name in get_all_cluster_names():
@@ -404,6 +400,7 @@ class Cluster(object):
 
     @staticmethod
     def new(name, image, fe_config, be_config, be_disks, coverage_dir):
+        os.makedirs(LOCAL_DORIS_PATH, exist_ok=True)
         with filelock.FileLock(os.path.join(LOCAL_DORIS_PATH, "lock")):
             subnet = gen_subnet_prefix16()
             cluster = Cluster(name, subnet, image, fe_config, be_config,
diff --git a/docker/runtime/doris-compose/command.py 
b/docker/runtime/doris-compose/command.py
index 4d1d6e7edb3..261d63ee803 100644
--- a/docker/runtime/doris-compose/command.py
+++ b/docker/runtime/doris-compose/command.py
@@ -356,13 +356,17 @@ class DownCommand(Command):
             cluster, args.fe_id, args.be_id, ignore_not_exists=True)
 
         if for_all:
-            utils.exec_docker_compose_command(cluster.get_compose_file(),
-                                              "down",
-                                              ["-v", "--remove-orphans"])
+            if os.path.exists(cluster.get_compose_file()):
+                try:
+                    utils.exec_docker_compose_command(
+                        cluster.get_compose_file(), "down",
+                        ["-v", "--remove-orphans"])
+                except Exception as e:
+                    LOG.warn("down cluster has exception: " + str(e))
             try:
                 utils.remove_docker_network(cluster.name)
             except Exception as e:
-                LOG.warn("prune network has exception: " + str(e))
+                LOG.warn("remove network has exception: " + str(e))
             if args.clean:
                 utils.enable_dir_with_rw_perm(cluster.get_path())
                 shutil.rmtree(cluster.get_path())
diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/RegressionTest.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/RegressionTest.groovy
index 36850b8ab10..d7eb6827831 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/RegressionTest.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/RegressionTest.groovy
@@ -131,6 +131,7 @@ class RegressionTest {
         actionExecutors = Executors.newFixedThreadPool(config.actionParallel, 
actionFactory)
 
         loadPlugins(config)
+        installDorisCompose(config)
     }
 
     static List<ScriptSource> findScriptSources(String root, Predicate<String> 
directoryFilter,
@@ -398,6 +399,23 @@ class RegressionTest {
         })
     }
 
+    static void installDorisCompose(Config config) {
+        if (config.excludeDockerTest) {
+            return
+        }
+        def requirements = new File(config.dorisComposePath).getParent() + 
"/requirements.txt"
+        def cmd = "python -m pip install --user -r " + requirements
+        def proc = cmd.execute()
+        def sout = new StringBuilder()
+        def serr = new StringBuilder()
+        proc.consumeProcessOutput(sout, serr)
+        proc.waitForOrKill(120_000)
+        if (proc.exitValue() != 0) {
+            log.warn("install doris compose requirements failed: 
code=${proc.exitValue()}, "
+                    + "output: ${sout.toString()}, error: ${serr.toString()}")
+        }
+    }
+
     static void printPassed() {
         log.info('''All suites success.
                  | ____   _    ____ ____  _____ ____
diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
index cd7a01b8b97..3ce4fd89b35 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/Suite.groovy
@@ -221,6 +221,11 @@ class Suite implements GroovyInterceptable {
             def user = context.config.jdbcUser
             def password = context.config.jdbcPassword
             def masterFe = cluster.getMasterFe()
+            for (def i=0; masterFe == null && i<30; i++) {
+                masterFe = cluster.getMasterFe()
+                Thread.sleep(1000)
+            }
+            assertNotNull(masterFe)
             def url = String.format(
                     
"jdbc:mysql://%s:%s/?useLocalSessionState=false&allowLoadLocalInfile=false",
                     masterFe.host, masterFe.queryPort)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to