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

chengpan pushed a commit to branch branch-1.8
in repository https://gitbox.apache.org/repos/asf/kyuubi.git


The following commit(s) were added to refs/heads/branch-1.8 by this push:
     new 638768ce9 [KYUUBI #5761] Pretty ProcBuilder generated command
638768ce9 is described below

commit 638768ce94c4e63d8d69bb7ec222bfd3f064333a
Author: Cheng Pan <[email protected]>
AuthorDate: Fri Nov 24 11:28:03 2023 +0800

    [KYUUBI #5761] Pretty ProcBuilder generated command
    
    # :mag: Description
    ## Issue References ๐Ÿ”—
    
    This PR aims to pretty the generated commands by `ProcBuilder`.
    
    ## Describe Your Solution ๐Ÿ”ง
    
    Optimized the format rules.
    
    ## Types of changes :bookmark:
    
    - [x] Improvement (non-breaking change)
    - [ ] Bugfix (non-breaking change which fixes an issue)
    - [ ] New feature (non-breaking change which adds functionality)
    - [ ] Breaking change (fix or feature that would cause existing 
functionality to change)
    
    ## Test Plan ๐Ÿงช
    
    #### Behavior Without This Pull Request :coffin:
    
    Example with generated Hive engine bootstrap command:
    ```
    00:44:48.326 KyuubiSessionManager-exec-pool: Thread-42 INFO EngineRef: 
Launching engine:
    /home/chengpan/.sdkman/candidates/java/current/bin/java
    -Xmx1g
    -cp
    
/home/chengpan/Projects/apache-kyuubi/externals/kyuubi-hive-sql-engine/target/kyuubi-hive-sql-engine_2.12-1.9.0-SNAPSHOT.jar:/home/chengpan/app/apache-hive-2.3.9-bin/conf:/home/chengpan/app/apache-hive-2.3.9-bin/lib/*:/home/chengpan/Projects/apa
    che-kyuubi/externals/kyuubi-hive-sql-engine/target/scala-2.12/jars/*
    org.apache.kyuubi.engine.hive.HiveSQLEngine
    --conf
    kyuubi.session.user=chengpanproxy
    --conf
    kyuubi.engine.id=991b68ac-11fe-4e0e-a043-7c8c8e1fb761
    --conf
    hadoop.proxyuser.chengpan.groups=*
    --conf
    hadoop.proxyuser.chengpan.hosts=*
    --conf
    
hive.engine.name=kyuubi_CONNECTION_HIVE_SQL_chengpanproxy_991b68ac-11fe-4e0e-a043-7c8c8e1fb761
    --conf
    hive.server2.proxy.user=chengpanproxy
    --conf
    hive.server2.thrift.resultset.default.fetch.size=1000
    --conf
    
javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=/home/chengpan/Projects/apache-kyuubi/integration-tests/kyuubi-hive-it/target/tmp/KyuubiOperationHiveEnginePerConnectionSuite-67853d06-09da-4c39-8a3c-41315119a1f7;create=true
    --conf
    kyuubi.client.ipAddress=127.0.1.1
    --conf
    kyuubi.client.version=1.9.0-SNAPSHOT
    --conf
    kyuubi.engine.credentials=SERUUwAAAA==
    --conf
    kyuubi.engine.operation.log.dir.root=target/engine_operation_logs
    --conf
    kyuubi.engine.share.level=connection
    --conf
    kyuubi.engine.submit.time=1700757888303
    --conf
    kyuubi.engine.type=HIVE_SQL
    --conf
    kyuubi.engineEnv.KYUUBI_HOME=/home/chengpan/Projects/apache-kyuubi/
    --conf
    kyuubi.frontend.protocols=THRIFT_BINARY
    --conf
    kyuubi.ha.addresses=10.221.99.150:42613
    --conf
    kyuubi.ha.engine.ref.id=991b68ac-11fe-4e0e-a043-7c8c8e1fb761
    --conf
    
kyuubi.ha.namespace=/kyuubi_1.9.0-SNAPSHOT_CONNECTION_HIVE_SQL/chengpanproxy/991b68ac-11fe-4e0e-a043-7c8c8e1fb761
    --conf
    kyuubi.ha.zookeeper.auth.type=NONE
    --conf
    kyuubi.ha.zookeeper.connection.retry.policy=ONE_TIME
    --conf
    
kyuubi.metrics.json.location=/home/chengpan/Projects/apache-kyuubi/integration-tests/kyuubi-hive-it/target/metrics
    --conf
    kyuubi.server.ipAddress=127.0.0.1
    --conf
    kyuubi.session.connection.url=localhost:38775
    --conf
    kyuubi.session.engine.check.interval=PT1S
    --conf
    kyuubi.session.engine.idle.timeout=PT30S
    --conf
    kyuubi.session.real.user=chengpan
    --conf
    kyuubi.zookeeper.embedded.client.port=0
    --conf
    
kyuubi.zookeeper.embedded.data.dir=/home/chengpan/Projects/apache-kyuubi/integration-tests/kyuubi-hive-it/target/tmp/kyuubi-b343702d-5e9a-49e8-81db-4c7b6b2da270
    --conf
    spark.sql.catalogImplementation=in-memory
    --conf
    spark.ui.enabled=false
    ```
    
    #### Behavior With This Pull Request :tada:
    
    Example with generated Hive engine bootstrap command:
    ```
    00:33:08.584 KyuubiSessionManager-exec-pool: Thread-42 INFO EngineRef: 
Launching engine:
    /home/chengpan/.sdkman/candidates/java/current/bin/java \
            -Xmx1g \
            -cp 
/home/chengpan/Projects/apache-kyuubi/externals/kyuubi-hive-sql-engine/target/kyuubi-hive-sql-engine_2.12-1.9.0-SNAPSHOT.jar:/home/chengpan/app/apache-hive-2.3.9-bin/conf:/home/chengpan/app/apache-hive-2.3.9-bin/lib/*:/home/chengpan/Projects/apache-kyuubi/externals/kyuubi-hive-sql-engine/target/scala-2.12/jars/*
 org.apache.kyuubi.engine.hive.HiveSQLEngine \
            --conf kyuubi.session.user=chengpanproxy \
            --conf kyuubi.engine.id=4c4e090a-04fc-479c-9e95-b2484c073eff \
            --conf hadoop.proxyuser.chengpan.groups=* \
            --conf hadoop.proxyuser.chengpan.hosts=* \
            --conf 
hive.engine.name=kyuubi_CONNECTION_HIVE_SQL_chengpanproxy_4c4e090a-04fc-479c-9e95-b2484c073eff
 \
            --conf hive.server2.proxy.user=chengpanproxy \
            --conf hive.server2.thrift.resultset.default.fetch.size=1000 \
            --conf 
javax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=/home/chengpan/Projects/apache-kyuubi/integration-tests/kyuubi-hive-it/target/tmp/KyuubiOperationHiveEnginePerConnectionSuite-a2c9b027-42a5-4dc3-a2ce-021bc7046dda;create=true
 \
            --conf kyuubi.client.ipAddress=127.0.1.1 \
            --conf kyuubi.client.version=1.9.0-SNAPSHOT \
            --conf kyuubi.engine.credentials=SERUUwAAAA== \
            --conf 
kyuubi.engine.operation.log.dir.root=target/engine_operation_logs \
            --conf kyuubi.engine.share.level=connection \
            --conf kyuubi.engine.submit.time=1700757188556 \
            --conf kyuubi.engine.type=HIVE_SQL \
            --conf 
kyuubi.engineEnv.KYUUBI_HOME=/home/chengpan/Projects/apache-kyuubi/ \
            --conf kyuubi.frontend.protocols=THRIFT_BINARY \
            --conf kyuubi.ha.addresses=10.221.99.150:38083 \
            --conf kyuubi.ha.engine.ref.id=4c4e090a-04fc-479c-9e95-b2484c073eff 
\
            --conf 
kyuubi.ha.namespace=/kyuubi_1.9.0-SNAPSHOT_CONNECTION_HIVE_SQL/chengpanproxy/4c4e090a-04fc-479c-9e95-b2484c073eff
 \
            --conf kyuubi.ha.zookeeper.auth.type=NONE \
            --conf kyuubi.ha.zookeeper.connection.retry.policy=ONE_TIME \
            --conf 
kyuubi.metrics.json.location=/home/chengpan/Projects/apache-kyuubi/integration-tests/kyuubi-hive-it/target/metrics
 \
            --conf kyuubi.server.ipAddress=127.0.0.1 \
            --conf kyuubi.session.connection.url=localhost:38545 \
            --conf kyuubi.session.engine.check.interval=PT1S \
            --conf kyuubi.session.engine.idle.timeout=PT30S \
            --conf kyuubi.session.real.user=chengpan \
            --conf kyuubi.zookeeper.embedded.client.port=0 \
            --conf 
kyuubi.zookeeper.embedded.data.dir=/home/chengpan/Projects/apache-kyuubi/integration-tests/kyuubi-hive-it/target/tmp/kyuubi-1f99fdd6-c042-4377-a320-b056139cada1
 \
            --conf spark.sql.catalogImplementation=in-memory \
            --conf spark.ui.enabled=false
    ```
    
    #### Related Unit Tests
    
    See code diff.
    
    ---
    
    # Checklists
    ## ๐Ÿ“ Author Self Checklist
    
    - [x] My code follows the [style 
guidelines](https://kyuubi.readthedocs.io/en/master/contributing/code/style.html)
 of this project
    - [x] I have performed a self-review
    - [x] I have commented my code, particularly in hard-to-understand areas
    - [ ] I have made corresponding changes to the documentation
    - [x] My changes generate no new warnings
    - [ ] I have added tests that prove my fix is effective or that my feature 
works
    - [x] New and existing unit tests pass locally with my changes
    - [x] This patch was not authored or co-authored using [Generative 
Tooling](https://www.apache.org/legal/generative-tooling.html)
    
    ## ๐Ÿ“ Committer Pre-Merge Checklist
    
    - [ ] Pull request title is okay.
    - [ ] No license issues.
    - [ ] Milestone correctly set?
    - [ ] Test coverage is ok
    - [ ] Assignees are selected.
    - [ ] Minimum number of approvals
    - [ ] No changes are requested
    
    **Be nice. Be informative.**
    
    Closes #5761 from pan3793/pretty-cmd.
    
    Closes #5761
    
    e8d830bbb [Cheng Pan] Pretty ProcBuilder generated command
    
    Authored-by: Cheng Pan <[email protected]>
    Signed-off-by: Cheng Pan <[email protected]>
    (cherry picked from commit 4d4879657a791c8ae2e28cff2fd1aeeb6c9789db)
    Signed-off-by: Cheng Pan <[email protected]>
---
 .../org/apache/kyuubi/engine/ProcBuilder.scala     |  4 +--
 .../kyuubi/engine/chat/ChatProcessBuilder.scala    |  6 ++--
 .../kyuubi/engine/hive/HiveProcessBuilder.scala    |  2 --
 .../kyuubi/engine/jdbc/JdbcProcessBuilder.scala    |  7 +++--
 .../kyuubi/engine/trino/TrinoProcessBuilder.scala  |  7 +++--
 .../engine/flink/FlinkProcessBuilderSuite.scala    | 32 ++++++++++++----------
 .../engine/hive/HiveProcessBuilderSuite.scala      | 18 ++++++------
 .../engine/jdbc/JdbcProcessBuilderSuite.scala      | 30 ++++++++++----------
 .../engine/trino/TrinoProcessBuilderSuite.scala    | 20 +++++++-------
 9 files changed, 68 insertions(+), 58 deletions(-)

diff --git 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala
index 84807a62d..9c7f0f510 100644
--- a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala
+++ b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/ProcBuilder.scala
@@ -287,10 +287,10 @@ trait ProcBuilder {
 
   override def toString: String = {
     if (commands == null) {
-      super.toString()
+      super.toString
     } else {
       Utils.redactCommandLineArgs(conf, commands).map {
-        case arg if arg.startsWith("--") => s"\\\n\t$arg"
+        case arg if arg.startsWith("-") => s"\\\n\t$arg"
         case arg => arg
       }.mkString(" ")
     }
diff --git 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/chat/ChatProcessBuilder.scala
 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/chat/ChatProcessBuilder.scala
index 3e4a20de3..121a20f5f 100644
--- 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/chat/ChatProcessBuilder.scala
+++ 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/chat/ChatProcessBuilder.scala
@@ -103,13 +103,15 @@ class ChatProcessBuilder(
 
   override def toString: String = {
     if (commands == null) {
-      super.toString()
+      super.toString
     } else {
       Utils.redactCommandLineArgs(conf, commands).map {
-        case arg if arg.startsWith("-") || arg == mainClass => s"\\\n\t$arg"
         case arg if arg.contains(ENGINE_CHAT_GPT_API_KEY.key) =>
           s"${ENGINE_CHAT_GPT_API_KEY.key}=$REDACTION_REPLACEMENT_TEXT"
         case arg => arg
+      }.map {
+        case arg if arg.startsWith("-") || arg == mainClass => s"\\\n\t$arg"
+        case arg => arg
       }.mkString(" ")
     }
   }
diff --git 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilder.scala
 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilder.scala
index 61fe55887..3325d5f2e 100644
--- 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilder.scala
+++ 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilder.scala
@@ -116,8 +116,6 @@ class HiveProcessBuilder(
     buffer.toArray
   }
 
-  override def toString: String = Utils.redactCommandLineArgs(conf, 
commands).mkString("\n")
-
   override def shortName: String = "hive"
 }
 
diff --git 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilder.scala
 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilder.scala
index 14ad53b20..3849c6431 100644
--- 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilder.scala
+++ 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilder.scala
@@ -106,13 +106,16 @@ class JdbcProcessBuilder(
 
   override def toString: String = {
     if (commands == null) {
-      super.toString()
+      super.toString
     } else {
       Utils.redactCommandLineArgs(conf, commands).map {
         case arg if arg.contains(ENGINE_JDBC_CONNECTION_PASSWORD.key) =>
           s"${ENGINE_JDBC_CONNECTION_PASSWORD.key}=$REDACTION_REPLACEMENT_TEXT"
         case arg => arg
-      }.mkString("\n")
+      }.map {
+        case arg if arg.startsWith("-") => s"\\\n\t$arg"
+        case arg => arg
+      }.mkString(" ")
     }
   }
 }
diff --git 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilder.scala
 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilder.scala
index 041219dd0..5b755dec5 100644
--- 
a/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilder.scala
+++ 
b/kyuubi-server/src/main/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilder.scala
@@ -111,7 +111,7 @@ class TrinoProcessBuilder(
 
   override def toString: String = {
     if (commands == null) {
-      super.toString()
+      super.toString
     } else {
       Utils.redactCommandLineArgs(conf, commands).map {
         case arg if arg.contains(ENGINE_TRINO_CONNECTION_PASSWORD.key) =>
@@ -121,7 +121,10 @@ class TrinoProcessBuilder(
         case arg if 
arg.contains(ENGINE_TRINO_CONNECTION_TRUSTSTORE_PASSWORD.key) =>
           
s"${ENGINE_TRINO_CONNECTION_TRUSTSTORE_PASSWORD.key}=$REDACTION_REPLACEMENT_TEXT"
         case arg => arg
-      }.mkString("\n")
+      }.map {
+        case arg if arg.startsWith("-") => s"\\\n\t$arg"
+        case arg => arg
+      }.mkString(" ")
     }
   }
 }
diff --git 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilderSuite.scala
 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilderSuite.scala
index 26e355a87..84be010ed 100644
--- 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilderSuite.scala
+++ 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/flink/FlinkProcessBuilderSuite.scala
@@ -81,8 +81,11 @@ class FlinkProcessBuilderSuite extends KyuubiFunSuite {
     val actualCommands = builder.toString
     val classpathStr = constructClasspathStr(builder)
     val expectedCommands =
-      s"$javaPath -Xmx512m 
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 " +
-        s"-cp $classpathStr $mainClassStr \\\\\\n\\t--conf 
kyuubi.session.user=vinoyang $confStr"
+      s"""$javaPath \\\\
+         |\\t-Xmx512m \\\\
+         
|\\t-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 \\\\
+         |\\t-cp $classpathStr $mainClassStr \\\\
+         |\\t--conf kyuubi.session.user=vinoyang $confStr""".stripMargin
     val regex = new Regex(expectedCommands)
     val matcher = regex.pattern.matcher(actualCommands)
     assert(matcher.matches())
@@ -90,19 +93,20 @@ class FlinkProcessBuilderSuite extends KyuubiFunSuite {
 
   private def matchActualAndExpectedApplicationMode(builder: 
FlinkProcessBuilder): Unit = {
     val actualCommands = builder.toString
+    // scalastyle:off line.size.limit
     val expectedCommands =
-      escapePaths(s"${builder.flinkExecutable} run-application ") +
-        s"-t yarn-application " +
-        
s"-Dyarn.ship-files=.*\\/flink-sql-client.*jar;.*\\/flink-sql-gateway.*jar;$tempUdfJar"
 +
-        s";.*\\/hive-site\\.xml " +
-        s"-Dyarn\\.application\\.name=kyuubi_.* " +
-        s"-Dyarn\\.tags=KYUUBI " +
-        s"-Dcontainerized\\.master\\.env\\.FLINK_CONF_DIR=\\. " +
-        s"-Dcontainerized\\.master\\.env\\.HIVE_CONF_DIR=\\. " +
-        s"-Dexecution.target=yarn-application " +
-        s"-c org\\.apache\\.kyuubi\\.engine\\.flink\\.FlinkSQLEngine " +
-        s".*kyuubi-flink-sql-engine_.*jar" +
-        s"(?: \\\\\\n\\t--conf \\S+=\\S+)+"
+      escapePaths(
+        s"""${builder.flinkExecutable} run-application \\\\
+           |\\t-t yarn-application \\\\
+           
|\\t-Dyarn.ship-files=.*flink-sql-client.*jar;.*flink-sql-gateway.*jar;$tempUdfJar;.*hive-site.xml
 \\\\
+           |\\t-Dyarn.application.name=kyuubi_.* \\\\
+           |\\t-Dyarn.tags=KYUUBI \\\\
+           |\\t-Dcontainerized.master.env.FLINK_CONF_DIR=. \\\\
+           |\\t-Dcontainerized.master.env.HIVE_CONF_DIR=. \\\\
+           |\\t-Dexecution.target=yarn-application \\\\
+           |\\t-c org.apache.kyuubi.engine.flink.FlinkSQLEngine 
.*kyuubi-flink-sql-engine_.*jar""".stripMargin +
+          "(?: \\\\\\n\\t--conf \\S+=\\S+)+")
+    // scalastyle:on line.size.limit
     val regex = new Regex(expectedCommands)
     val matcher = regex.pattern.matcher(actualCommands)
     assert(matcher.matches())
diff --git 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilderSuite.scala
 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilderSuite.scala
index bb9884dfa..a2f39633c 100644
--- 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilderSuite.scala
+++ 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/hive/HiveProcessBuilderSuite.scala
@@ -30,18 +30,18 @@ class HiveProcessBuilderSuite extends KyuubiFunSuite {
       override def env: Map[String, String] = super.env + 
(HIVE_HADOOP_CLASSPATH_KEY -> "/hadoop")
     }
     val commands = builder.toString.split('\n')
-    assert(commands.head.endsWith("bin/java"), "wrong exec")
-    assert(builder.toString.contains("--conf\nkyuubi.session.user=kyuubi"))
+    assert(commands.head.contains("bin/java"), "wrong exec")
+    assert(builder.toString.contains("--conf kyuubi.session.user=kyuubi"))
     assert(commands.exists(ss => ss.contains("kyuubi-hive-sql-engine")), 
"wrong classpath")
-    assert(builder.toString.contains("--conf\nkyuubi.on=off"))
+    assert(builder.toString.contains("--conf kyuubi.on=off"))
   }
 
   test("default engine memory") {
     val conf = KyuubiConf()
       .set(ENGINE_HIVE_EXTRA_CLASSPATH, "/hadoop")
     val builder = new HiveProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split('\n')
-    assert(commands.contains("-Xmx1g"))
+    val command = builder.toString
+    assert(command.contains("-Xmx1g"))
   }
 
   test("set engine memory") {
@@ -49,8 +49,8 @@ class HiveProcessBuilderSuite extends KyuubiFunSuite {
       .set(ENGINE_HIVE_MEMORY, "5g")
       .set(ENGINE_HIVE_EXTRA_CLASSPATH, "/hadoop")
     val builder = new HiveProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split('\n')
-    assert(commands.contains("-Xmx5g"))
+    val command = builder.toString
+    assert(command.contains("-Xmx5g"))
   }
 
   test("set engine java opts") {
@@ -60,8 +60,8 @@ class HiveProcessBuilderSuite extends KyuubiFunSuite {
         ENGINE_HIVE_JAVA_OPTIONS,
         "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005")
     val builder = new HiveProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split('\n')
-    
assert(commands.contains("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"))
+    val command = builder.toString
+    
assert(command.contains("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"))
   }
 
   test("set engine extra classpath") {
diff --git 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilderSuite.scala
 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilderSuite.scala
index f85e363d3..2be39d0f3 100644
--- 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilderSuite.scala
+++ 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/jdbc/JdbcProcessBuilderSuite.scala
@@ -27,13 +27,13 @@ class JdbcProcessBuilderSuite extends KyuubiFunSuite {
       .set(ENGINE_JDBC_CONNECTION_URL.key, "")
       .set(ENGINE_JDBC_CONNECTION_PASSWORD.key, "123456")
     val builder = new JdbcProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split("\n")
-    assert(commands.head.endsWith("bin/java"), "wrong exec")
-    assert(builder.toString.contains("--conf\nkyuubi.session.user=kyuubi"))
-    assert(commands.exists(ss => ss.contains("kyuubi-jdbc-engine")), "wrong 
classpath")
-    assert(builder.toString.contains("--conf\nkyuubi.on=off"))
-    assert(builder.toString.contains(
-      "--conf\nkyuubi.engine.jdbc.connection.password=*********(redacted)"))
+    val command = builder.toString
+    assert(command.contains("bin/java"), "wrong exec")
+    assert(command.contains("--conf kyuubi.session.user=kyuubi"))
+    assert(command.contains("kyuubi-jdbc-engine"), "wrong classpath")
+    assert(command.contains("--conf kyuubi.on=off"))
+    assert(command.contains(
+      "--conf kyuubi.engine.jdbc.connection.password=*********(redacted)"))
   }
 
   test("capture error from jdbc process builder") {
@@ -47,8 +47,8 @@ class JdbcProcessBuilderSuite extends KyuubiFunSuite {
     val conf = KyuubiConf()
       .set(ENGINE_JDBC_CONNECTION_URL.key, "")
     val builder = new JdbcProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split("\n")
-    assert(commands.contains("-Xmx1g"))
+    val command = builder.toString
+    assert(command.contains("-Xmx1g"))
   }
 
   test("set engine memory") {
@@ -56,8 +56,8 @@ class JdbcProcessBuilderSuite extends KyuubiFunSuite {
       .set(ENGINE_JDBC_MEMORY, "5g")
       .set(ENGINE_JDBC_CONNECTION_URL.key, "")
     val builder = new JdbcProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split("\n")
-    assert(commands.contains("-Xmx5g"))
+    val command = builder.toString
+    assert(command.contains("-Xmx5g"))
   }
 
   test("set engine java options") {
@@ -67,8 +67,8 @@ class JdbcProcessBuilderSuite extends KyuubiFunSuite {
         ENGINE_JDBC_JAVA_OPTIONS,
         "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005")
     val builder = new JdbcProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split("\n")
-    
assert(commands.contains("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"))
+    val command = builder.toString
+    
assert(command.contains("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"))
   }
 
   test("set extra classpath") {
@@ -76,7 +76,7 @@ class JdbcProcessBuilderSuite extends KyuubiFunSuite {
       .set(ENGINE_JDBC_CONNECTION_URL.key, "")
       .set(ENGINE_JDBC_EXTRA_CLASSPATH, "/dummy_classpath/*")
     val builder = new JdbcProcessBuilder("kyuubi", conf)
-    val commands = builder.toString
-    assert(commands.contains("/dummy_classpath/*"))
+    val command = builder.toString
+    assert(command.contains("/dummy_classpath/*"))
   }
 }
diff --git 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilderSuite.scala
 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilderSuite.scala
index 2c37c41bc..a4dfad186 100644
--- 
a/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilderSuite.scala
+++ 
b/kyuubi-server/src/test/scala/org/apache/kyuubi/engine/trino/TrinoProcessBuilderSuite.scala
@@ -30,11 +30,11 @@ class TrinoProcessBuilderSuite extends KyuubiFunSuite {
       .set(ENGINE_TRINO_CONNECTION_CATALOG, "dummy_catalog")
     val builder = new TrinoProcessBuilder("kyuubi", conf)
     val commands = builder.toString.split("\n")
-    assert(commands.head.endsWith("java"))
-    
assert(builder.toString.contains(s"--conf\n${KYUUBI_SESSION_USER_KEY}=kyuubi"))
-    
assert(builder.toString.contains(s"--conf\n${ENGINE_TRINO_CONNECTION_URL.key}=dummy_url"))
+    assert(commands.head.contains("java"))
+    assert(builder.toString.contains(s"--conf 
${KYUUBI_SESSION_USER_KEY}=kyuubi"))
+    assert(builder.toString.contains(s"--conf 
${ENGINE_TRINO_CONNECTION_URL.key}=dummy_url"))
     assert(builder.toString.contains(
-      s"--conf\n${ENGINE_TRINO_CONNECTION_CATALOG.key}=dummy_catalog"))
+      s"--conf ${ENGINE_TRINO_CONNECTION_CATALOG.key}=dummy_catalog"))
   }
 
   test("capture error from trino process builder") {
@@ -49,8 +49,8 @@ class TrinoProcessBuilderSuite extends KyuubiFunSuite {
       .set(ENGINE_TRINO_CONNECTION_URL, "dummy_url")
       .set(ENGINE_TRINO_CONNECTION_CATALOG, "dummy_catalog")
     val builder = new TrinoProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split("\n")
-    assert(commands.contains("-Xmx1g"))
+    val command = builder.toString
+    assert(command.contains("-Xmx1g"))
   }
 
   test("set engine memory") {
@@ -59,8 +59,8 @@ class TrinoProcessBuilderSuite extends KyuubiFunSuite {
       .set(ENGINE_TRINO_CONNECTION_CATALOG, "dummy_catalog")
       .set(ENGINE_TRINO_MEMORY, "5g")
     val builder = new TrinoProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split("\n")
-    assert(commands.contains("-Xmx5g"))
+    val command = builder.toString
+    assert(command.contains("-Xmx5g"))
   }
 
   test("set engine java options") {
@@ -71,8 +71,8 @@ class TrinoProcessBuilderSuite extends KyuubiFunSuite {
         ENGINE_TRINO_JAVA_OPTIONS,
         "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005")
     val builder = new TrinoProcessBuilder("kyuubi", conf)
-    val commands = builder.toString.split("\n")
-    
assert(commands.contains("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"))
+    val command = builder.toString
+    
assert(command.contains("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"))
   }
 
   test("set extra classpath") {

Reply via email to