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

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

commit 039d4f722e3a77c2970e3811e84ba3e9ea0f28f3
Author: Sun Chenyang <csun5...@gmail.com>
AuthorDate: Fri Jun 28 19:22:05 2024 +0800

    [fix](regression test) fix unstable single compaction test p2 (#36881)
---
 .../test_single_compaction_fault_injection.groovy  | 68 ++++++++++++--------
 .../test_single_replica_compaction.groovy          | 72 ++++++++++++----------
 2 files changed, 83 insertions(+), 57 deletions(-)

diff --git 
a/regression-test/suites/compaction/test_single_compaction_fault_injection.groovy
 
b/regression-test/suites/compaction/test_single_compaction_fault_injection.groovy
index 7acafae51ab..ebc74257032 100644
--- 
a/regression-test/suites/compaction/test_single_compaction_fault_injection.groovy
+++ 
b/regression-test/suites/compaction/test_single_compaction_fault_injection.groovy
@@ -32,22 +32,20 @@ suite("test_single_compaction_fault_injection", "p2") {
     }
 
     def triggerCompaction = { be_host, be_http_port, compact_type, tablet_id ->
-        StringBuilder sb = new StringBuilder();
-        sb.append("curl -X POST http://${be_host}:${be_http_port}";)
-        sb.append("/api/compaction/run?tablet_id=")
-        sb.append(tablet_id)
-        sb.append("&compact_type=${compact_type}")
-
-        String command = sb.toString()
-        logger.info(command)
-        process = command.execute()
-        code = process.waitFor()
-        err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
-        out = process.getText()
-        logger.info("Run compaction: code=" + code + ", out=" + out + ", err=" 
+ err)
-        assertEquals(code, 0)
-        return out
-    } 
+        if (compact_type == "cumulative") {
+            def (code_1, out_1, err_1) = be_run_cumulative_compaction(be_host, 
be_http_port, tablet_id)
+            logger.info("Run compaction: code=" + code_1 + ", out=" + out_1 + 
", err=" + err_1)
+            assertEquals(code_1, 0)
+            return out_1
+        } else if (compact_type == "full") {
+            def (code_2, out_2, err_2) = be_run_full_compaction(be_host, 
be_http_port, tablet_id)
+            logger.info("Run compaction: code=" + code_2 + ", out=" + out_2 + 
", err=" + err_2)
+            assertEquals(code_2, 0)
+            return out_2
+        } else {
+            assertFalse(True)
+        }
+    }
 
     def triggerSingleCompaction = { be_host, be_http_port, tablet_id ->
         StringBuilder sb = new StringBuilder();
@@ -56,15 +54,33 @@ suite("test_single_compaction_fault_injection", "p2") {
         sb.append(tablet_id)
         sb.append("&compact_type=cumulative&remote=true")
 
-        String command = sb.toString()
-        logger.info(command)
-        process = command.execute()
-        code = process.waitFor()
-        err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
-        out = process.getText()
-        logger.info("Run compaction: code=" + code + ", out=" + out + ", err=" 
+ err)
-        assertEquals(code, 0)
-        return out
+        Integer maxRetries = 10; // Maximum number of retries
+        Integer retryCount = 0; // Current retry count
+        Integer sleepTime = 5000; // Sleep time in milliseconds
+        String cmd = sb.toString()
+        def process
+        int code_3
+        String err_3
+        String out_3
+
+        while (retryCount < maxRetries) {
+            process = cmd.execute()
+            code_3 = process.waitFor()
+            err_3 = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())))
+            out_3 = process.getText()
+
+            // If the command was successful, break the loop
+            if (code_3 == 0) {
+                break
+            }
+
+            // If the command was not successful, increment the retry count, 
sleep for a while and try again
+            retryCount++
+            sleep(sleepTime)
+        }
+        assertEquals(code_3, 0)
+        logger.info("Get compaction status: code=" + code_3 + ", out=" + out_3)
+        return out_3
     }
     def waitForCompaction = { be_host, be_http_port, tablet_id ->
         boolean running = true
@@ -337,7 +353,7 @@ suite("test_single_compaction_fault_injection", "p2") {
 
         // trigger master be to do base compaction
         
assertTrue(triggerCompaction(backendId_to_backendIP[master_backend_id], 
backendId_to_backendHttpPort[master_backend_id],
-                    "base", tablet_id).contains("Success")); 
+                    "full", tablet_id).contains("Success")); 
         waitForCompaction(backendId_to_backendIP[master_backend_id], 
backendId_to_backendHttpPort[master_backend_id], tablet_id)
 
         // trigger follower be to fetch compaction result
diff --git 
a/regression-test/suites/compaction/test_single_replica_compaction.groovy 
b/regression-test/suites/compaction/test_single_replica_compaction.groovy
index 455aff9cf86..2387cc8f323 100644
--- a/regression-test/suites/compaction/test_single_replica_compaction.groovy
+++ b/regression-test/suites/compaction/test_single_replica_compaction.groovy
@@ -64,25 +64,20 @@ suite("test_single_replica_compaction", "p2") {
         has_update_be_config = true
 
         def triggerCompaction = { be_host, be_http_port, compact_type, 
tablet_id ->
-            StringBuilder sb = new StringBuilder();
-            sb.append("curl -X POST http://${be_host}:${be_http_port}";)
-            sb.append("/api/compaction/run?tablet_id=")
-            sb.append(tablet_id)
-            sb.append("&compact_type=${compact_type}")
-
-            String command = sb.toString()
-            logger.info(command)
-            process = command.execute()
-            code = process.waitFor()
-            err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
-            out = process.getText()
-            logger.info("Run compaction: code=" + code + ", out=" + out + ", 
disableAutoCompaction " + disableAutoCompaction + ", err=" + err)
-            if (!disableAutoCompaction) {
-                return "Success, " + out
+            if (compact_type == "cumulative") {
+                def (code_1, out_1, err_1) = 
be_run_cumulative_compaction(be_host, be_http_port, tablet_id)
+                logger.info("Run compaction: code=" + code_1 + ", out=" + 
out_1 + ", err=" + err_1)
+                assertEquals(code_1, 0)
+                return out_1
+            } else if (compact_type == "full") {
+                def (code_2, out_2, err_2) = be_run_full_compaction(be_host, 
be_http_port, tablet_id)
+                logger.info("Run compaction: code=" + code_2 + ", out=" + 
out_2 + ", err=" + err_2)
+                assertEquals(code_2, 0)
+                return out_2
+            } else {
+                assertFalse(True)
             }
-            assertEquals(code, 0)
-            return out
-        } 
+        }
 
         def triggerSingleCompaction = { be_host, be_http_port, tablet_id ->
             StringBuilder sb = new StringBuilder();
@@ -91,18 +86,33 @@ suite("test_single_replica_compaction", "p2") {
             sb.append(tablet_id)
             sb.append("&compact_type=cumulative&remote=true")
 
-            String command = sb.toString()
-            logger.info(command)
-            process = command.execute()
-            code = process.waitFor()
-            err = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())));
-            out = process.getText()
-            logger.info("Run compaction: code=" + code + ", out=" + out + ", 
disableAutoCompaction " + disableAutoCompaction + ", err=" + err)
-            if (!disableAutoCompaction) {
-                return "Success, " + out
+            Integer maxRetries = 10; // Maximum number of retries
+            Integer retryCount = 0; // Current retry count
+            Integer sleepTime = 5000; // Sleep time in milliseconds
+            String cmd = sb.toString()
+            def process
+            int code_3
+            String err_3
+            String out_3
+
+            while (retryCount < maxRetries) {
+                process = cmd.execute()
+                code_3 = process.waitFor()
+                err_3 = IOGroovyMethods.getText(new BufferedReader(new 
InputStreamReader(process.getErrorStream())))
+                out_3 = process.getText()
+
+                // If the command was successful, break the loop
+                if (code_3 == 0) {
+                    break
+                }
+
+                // If the command was not successful, increment the retry 
count, sleep for a while and try again
+                retryCount++
+                sleep(sleepTime)
             }
-            assertEquals(code, 0)
-            return out
+            assertEquals(code_3, 0)
+            logger.info("Get compaction status: code=" + code_3 + ", out=" + 
out_3)
+            return out_3
         }
         def waitForCompaction = { be_host, be_http_port, tablet_id ->
             boolean running = true
@@ -261,9 +271,9 @@ suite("test_single_replica_compaction", "p2") {
         // check rowsets
         checkCompactionResult.call()
 
-        // trigger master be to do base compaction
+        // trigger master be to do full compaction
         
assertTrue(triggerCompaction(backendId_to_backendIP[master_backend_id], 
backendId_to_backendHttpPort[master_backend_id],
-                    "base", tablet_id).contains("Success")); 
+                    "full", tablet_id).contains("Success")); 
         waitForCompaction(backendId_to_backendIP[master_backend_id], 
backendId_to_backendHttpPort[master_backend_id], tablet_id)
 
         // trigger follower be to fetch compaction result


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

Reply via email to