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

panxiaolei pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
     new 8d655eff0a0 [regression](framework) add config caseNamePrefix (#32639)
8d655eff0a0 is described below

commit 8d655eff0a05c4bfce6c7e43fd970799aff4be2e
Author: Dongyang Li <hello_step...@qq.com>
AuthorDate: Thu Mar 21 21:00:56 2024 +0800

    [regression](framework) add config caseNamePrefix (#32639)
    
    add config caseNamePrefix
---
 .../org/apache/doris/regression/Config.groovy      | 12 ++++++++++-
 .../apache/doris/regression/ConfigOptions.groovy   |  9 ++++++++
 .../apache/doris/regression/RegressionTest.groovy  |  6 ++++++
 .../doris/regression/util/TeamcityUtils.groovy     | 25 +++++++++++++++++-----
 4 files changed, 46 insertions(+), 6 deletions(-)

diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/Config.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/Config.groovy
index 355c58f2df6..26e3bd6577d 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/Config.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/Config.groovy
@@ -84,14 +84,16 @@ class Config {
     public Integer actionParallel
     public Integer times
     public boolean withOutLoadData
+    public String caseNamePrefix
 
     Config() {}
 
-    Config(String defaultDb, String jdbcUrl, String jdbcUser, String 
jdbcPassword,
+    Config(String caseNamePrefix, String defaultDb, String jdbcUrl, String 
jdbcUser, String jdbcPassword,
            String feHttpAddress, String feHttpUser, String feHttpPassword, 
String metaServiceHttpAddress,
            String suitePath, String dataPath, String realDataPath, String 
cacheDataPath,
            String testGroups, String excludeGroups, String testSuites, String 
excludeSuites,
            String testDirectories, String excludeDirectories, String 
pluginPath) {
+        this.caseNamePrefix = caseNamePrefix
         this.defaultDb = defaultDb
         this.jdbcUrl = jdbcUrl
         this.jdbcUser = jdbcUser
@@ -209,11 +211,13 @@ class Config {
         config.randomOrder = cmd.hasOption(randomOrderOpt)
         config.stopWhenFail = cmd.hasOption(stopWhenFailOpt)
         config.withOutLoadData = cmd.hasOption(withOutLoadDataOpt)
+        config.caseNamePrefix = cmd.getOptionValue(caseNamePrefixOpt, 
config.caseNamePrefix)
         config.dryRun = cmd.hasOption(dryRunOpt)
 
         log.info("randomOrder is ${config.randomOrder}".toString())
         log.info("stopWhenFail is ${config.stopWhenFail}".toString())
         log.info("withOutLoadData is ${config.withOutLoadData}".toString())
+        log.info("caseNamePrefix is ${config.caseNamePrefix}".toString())
         log.info("dryRun is ${config.dryRun}".toString())
 
         Properties props = cmd.getOptionProperties("conf")
@@ -227,6 +231,7 @@ class Config {
 
     static Config fromConfigObject(ConfigObject obj) {
         def config = new Config(
+            configToString(obj.caseNamePrefix),
             configToString(obj.defaultDb),
             configToString(obj.jdbcUrl),
             configToString(obj.jdbcUser),
@@ -262,6 +267,11 @@ class Config {
     }
 
     static void fillDefaultConfig(Config config) {
+        if (config.caseNamePrefix == null) {
+            config.caseNamePrefix = ""
+            log.info("set caseNamePrefix to '' because not 
specify.".toString())
+        }
+
         if (config.defaultDb == null) {
             config.defaultDb = "regression_test"
             log.info("Set defaultDb to '${config.defaultDb}' because not 
specify.".toString())
diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/ConfigOptions.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/ConfigOptions.groovy
index 4fa7552e09a..6661cfdf6d0 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/ConfigOptions.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/ConfigOptions.groovy
@@ -58,6 +58,7 @@ class ConfigOptions {
     static Option stopWhenFailOpt
     static Option timesOpt
     static Option withOutLoadDataOpt
+    static Option caseNamePrefixOpt
     static Option dryRunOpt
 
     static CommandLine initCommands(String[] args) {
@@ -304,6 +305,13 @@ class ConfigOptions {
                 .longOpt("withOutLoadData")
                 .desc("do not run load.groovy to reload data to Doris.")
                 .build()
+        caseNamePrefixOpt = Option.builder("cnp")
+                .required(false)
+                .hasArg(true)
+                .type(String.class)
+                .longOpt("caseNamePrefix")
+                .desc("add prefix to each case name")
+                .build()
         dryRunOpt = Option.builder("dryRun")
                 .required(false)
                 .hasArg(false)
@@ -339,6 +347,7 @@ class ConfigOptions {
                 .addOption(stopWhenFailOpt)
                 .addOption(timesOpt)
                 .addOption(withOutLoadDataOpt)
+                .addOption(caseNamePrefixOpt)
                 .addOption(dryRunOpt)
 
         CommandLine cmd = new DefaultParser().parse(options, args, true)
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 7c45cac9a63..dd16afcb20a 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
@@ -30,6 +30,7 @@ import 
org.apache.doris.regression.suite.event.StackEventListeners
 import org.apache.doris.regression.suite.SuiteScript
 import org.apache.doris.regression.suite.event.TeamcityEventListener
 import org.apache.doris.regression.util.Recorder
+import org.apache.doris.regression.util.TeamcityUtils
 import groovy.util.logging.Slf4j
 import org.apache.commons.cli.*
 import org.apache.commons.lang3.concurrent.BasicThreadFactory;
@@ -65,6 +66,11 @@ class RegressionTest {
         boolean success = true
         for (int i = 0; i < config.times; i++) {
             log.info("=== run ${i} time ===")
+
+            if (config.caseNamePrefix) {
+                TeamcityUtils.prefix = config.caseNamePrefix.toString()
+            }
+
             Recorder recorder = runScripts(config)
             success = printResult(config, recorder)
         }
diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/TeamcityUtils.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/TeamcityUtils.groovy
index dd713db2d1d..8d6e99ae8df 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/TeamcityUtils.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/TeamcityUtils.groovy
@@ -24,34 +24,49 @@ import org.apache.tools.ant.util.DateUtils
 
 @CompileStatic
 class TeamcityUtils {
+
+    static String prefix = ""
+
+    static String getSuiteName(String name) {
+        if (prefix != "") {
+            name = prefix + "-" + name
+        }
+        return name
+    }
+
     static String formatNow() {
         return DateUtils.format(System.currentTimeMillis(), 
"yyyy-MM-dd'T'HH:mm:ss.SSSZ")
     }
 
     static String formatStdOut(SuiteContext suiteContext, String msg) {
         String timestamp = formatNow()
-        return "##teamcity[testStdOut name='${suiteContext.flowName}' 
out='${escape(msg)}' flowId='${suiteContext.flowId}' timestamp='${timestamp}']"
+        String name = getSuiteName(suiteContext.flowName)
+        return "##teamcity[testStdOut name='${name}' out='${escape(msg)}' 
flowId='${suiteContext.flowId}' timestamp='${timestamp}']"
     }
 
     static String formatStdErr(SuiteContext suiteContext, String msg) {
         String timestamp = formatNow()
-        return "##teamcity[testStdErr name='${suiteContext.flowName}' 
out='${escape(msg)}' flowId='${suiteContext.flowId}' timestamp='${timestamp}']"
+        String name = getSuiteName(suiteContext.flowName)
+        return "##teamcity[testStdErr name='${name}' out='${escape(msg)}' 
flowId='${suiteContext.flowId}' timestamp='${timestamp}']"
     }
 
     static void testStarted(SuiteContext suiteContext) {
         String timestamp = formatNow()
+        String name = getSuiteName(suiteContext.flowName)
         println("##teamcity[flowStarted flowId='${suiteContext.flowId}' 
timestamp='${timestamp}']")
-        println("##teamcity[testStarted name='${suiteContext.flowName}' 
flowId='${suiteContext.flowId}' timestamp='${timestamp}']")
+        println("##teamcity[testStarted name='${name}' 
flowId='${suiteContext.flowId}' timestamp='${timestamp}']")
     }
 
     static void testFailed(SuiteContext suiteContext, String msg, String 
details) {
         String timestamp = formatNow()
-        println("##teamcity[testFailed name='${suiteContext.flowName}' 
message='${escape(msg)}' flowId='${suiteContext.flowId}' 
details='${escape(details)}' timestamp='${timestamp}']")
+        String name = getSuiteName(suiteContext.flowName)
+        println("##teamcity[testFailed name='${name}' message='${escape(msg)}' 
flowId='${suiteContext.flowId}' details='${escape(details)}' 
timestamp='${timestamp}']")
     }
 
     static void testFinished(SuiteContext suiteContext, long elapsed) {
         String timestamp = formatNow()
-        println("##teamcity[testFinished name='${suiteContext.flowName}' 
flowId='${suiteContext.flowId}' duration='${elapsed}' 
timestamp='${timestamp}']")
+        String name = getSuiteName(suiteContext.flowName)
+        println("##teamcity[testFinished name='${name}' 
flowId='${suiteContext.flowId}' duration='${elapsed}' 
timestamp='${timestamp}']")
         println("##teamcity[flowFinished flowId='${suiteContext.flowId}' 
timestamp='${timestamp}']")
     }
 


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

Reply via email to