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 2ad8c0f214e [fix](regression) Fix regression run in cloud use non-root 
user (#34340)
2ad8c0f214e is described below

commit 2ad8c0f214e49bfa1cbabbb3f5a52da2a575be5a
Author: deardeng <[email protected]>
AuthorDate: Sat May 4 09:39:30 2024 +0800

    [fix](regression) Fix regression run in cloud use non-root user (#34340)
---
 .../org/apache/doris/regression/Config.groovy      | 25 ++++++++++++++++++++++
 .../org/apache/doris/regression/suite/Suite.groovy |  3 ++-
 .../doris/regression/suite/SuiteContext.groovy     |  2 +-
 .../apache/doris/regression/util/JdbcUtils.groovy  | 21 ++++++++++++++++++
 4 files changed, 49 insertions(+), 2 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 5ac95a236e5..008962ee544 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
@@ -33,6 +33,12 @@ import static org.apache.doris.regression.ConfigOptions.*
 
 import org.apache.doris.thrift.TNetworkAddress;
 
+enum RunMode {
+    UNKNOWN,
+    NOT_CLOUD,
+    CLOUD
+}
+
 @Slf4j
 @CompileStatic
 class Config {
@@ -64,6 +70,8 @@ class Config {
     public String metaServiceHttpAddress
     public String recycleServiceHttpAddress
 
+    public RunMode isCloudMode = RunMode.UNKNOWN
+
     public String suitePath
     public String dataPath
     public String realDataPath
@@ -827,10 +835,27 @@ class Config {
         }
     }
 
+    boolean fetchRunMode() {
+        if (isCloudMode == RunMode.UNKNOWN) {
+            try {
+                def result = JdbcUtils.executeToMapArray(getRootConnection(), 
"SHOW FRONTEND CONFIG LIKE 'cloud_unique_id'")
+                isCloudMode = result[0].Value.toString().isEmpty() ? 
RunMode.NOT_CLOUD : RunMode.CLOUD
+            } catch (Throwable t) {
+                throw new IllegalStateException("Fetch server config 
'cloud_unique_id' failed, jdbcUrl: ${jdbcUrl}", t)
+            }
+        }
+        return isCloudMode == RunMode.CLOUD
+
+    }
+
     Connection getConnection() {
         return DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword)
     }
 
+    Connection getRootConnection() {
+        return DriverManager.getConnection(jdbcUrl, 'root', '')
+    }
+
     Connection getConnectionByDbName(String dbName) {
         String dbUrl = buildUrlWithDb(jdbcUrl, dbName)
         tryCreateDbIfNotExist(dbName)
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 7e5877086ea..a6b7773a3e1 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
@@ -43,6 +43,7 @@ import org.apache.doris.regression.util.JdbcUtils
 import org.apache.doris.regression.util.Hdfs
 import org.apache.doris.regression.util.SuiteUtils
 import org.apache.doris.regression.util.DebugPoint
+import org.apache.doris.regression.RunMode
 import org.jetbrains.annotations.NotNull
 import org.junit.jupiter.api.Assertions
 import org.slf4j.Logger
@@ -1123,7 +1124,7 @@ class Suite implements GroovyInterceptable {
     }
 
     boolean isCloudMode() {
-        return !getFeConfig("cloud_unique_id").isEmpty()
+        return context.config.fetchRunMode()
     }
 
     boolean enableStoragevault() {
diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/SuiteContext.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/SuiteContext.groovy
index 1cf6d021de9..2cac1b19dc6 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/SuiteContext.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/suite/SuiteContext.groovy
@@ -144,7 +144,7 @@ class SuiteContext implements Closeable {
         if (threadConnInfo == null) {
             threadConnInfo = new ConnectionInfo()
             threadConnInfo.conn = config.getConnectionByDbName(dbName)
-            threadConnInfo.username = config.jdbcUser
+            threadConnInfo.username = config.jdbcUser 
             threadConnInfo.password = config.jdbcPassword
             threadLocalConn.set(threadConnInfo)
         }
diff --git 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/JdbcUtils.groovy
 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/JdbcUtils.groovy
index bc02f08f80c..300189b5cba 100644
--- 
a/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/JdbcUtils.groovy
+++ 
b/regression-test/framework/src/main/groovy/org/apache/doris/regression/util/JdbcUtils.groovy
@@ -47,6 +47,27 @@ class JdbcUtils {
         return conn.prepareStatement(sql);
     }
 
+    static List<Map<String, Object>> executeToMapArray(Connection conn, String 
sql) {
+        def (result, meta) = JdbcUtils.executeToList(conn, sql)
+
+        // get all column names as list
+        List<String> columnNames = new ArrayList<>()
+        for (int i = 0; i < meta.getColumnCount(); i++) {
+            columnNames.add(meta.getColumnName(i + 1))
+        }
+
+        // add result to res map list, each row is a map with key is column 
name
+        List<Map<String, Object>> res = new ArrayList<>()
+        for (int i = 0; i < result.size(); i++) {
+            Map<String, Object> row = new HashMap<>()
+            for (int j = 0; j < columnNames.size(); j++) {
+                row.put(columnNames.get(j), result.get(i).get(j))
+            }
+            res.add(row)
+        }
+        return res;
+    }
+
     static Tuple2<List<List<Object>>, ResultSetMetaData> 
executeToStringList(Connection conn, PreparedStatement stmt) {
         return toStringList(stmt.executeQuery())
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to