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

lizhanhui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 27759f3556 Fix unstable UtilAllTest#testCalculateFileSizeInPath on 
Windows (#7419)
27759f3556 is described below

commit 27759f3556c279f63c13bc94fe3ad6ca55558114
Author: Allon Murienik <murei...@gmail.com>
AuthorDate: Thu Nov 9 06:33:34 2023 +0200

    Fix unstable UtilAllTest#testCalculateFileSizeInPath on Windows (#7419)
    
    This patch offers an alternative approach to
    5d492c338258d07613103e6ae16df4c6fa5b3838. Instead of manually setting
    up the directory #testCalculateFileSizeInPath needs and then
    recursively deleting it, it uses JUnit's TemporaryFolder Rule to
    handle all of this work, and allows the code to concentrate on the
    business logic.
    
    Closes #7418
---
 .../org/apache/rocketmq/common/UtilAllTest.java    | 86 +++++++++-------------
 1 file changed, 36 insertions(+), 50 deletions(-)

diff --git a/common/src/test/java/org/apache/rocketmq/common/UtilAllTest.java 
b/common/src/test/java/org/apache/rocketmq/common/UtilAllTest.java
index a0653d7fc4..94bb390eb6 100644
--- a/common/src/test/java/org/apache/rocketmq/common/UtilAllTest.java
+++ b/common/src/test/java/org/apache/rocketmq/common/UtilAllTest.java
@@ -26,7 +26,10 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
+
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.within;
@@ -34,6 +37,8 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 public class UtilAllTest {
+    @Rule
+    public TemporaryFolder tempDir = new TemporaryFolder();
 
     @Test
     public void testCurrentStackTrace() {
@@ -236,56 +241,37 @@ public class UtilAllTest {
          *          - file_1_2_0
          *  - dir_2
          */
-        String basePath = System.getProperty("java.io.tmpdir") + 
File.separator + "testCalculateFileSizeInPath";
-        File baseFile = new File(basePath);
-        try {
-            // test empty path
-            assertEquals(0, UtilAll.calculateFileSizeInPath(baseFile));
-
-            // create baseDir
-            assertTrue(baseFile.mkdirs());
-
-            File file0 = new File(baseFile, "file_0");
-            assertTrue(file0.createNewFile());
-            writeFixedBytesToFile(file0, 1313);
-
-            assertEquals(1313, UtilAll.calculateFileSizeInPath(baseFile));
-
-            // build a file tree like above
-            File dir1 = new File(baseFile, "dir_1");
-            dir1.mkdirs();
-            File file10 = new File(dir1, "file_1_0");
-            File file11 = new File(dir1, "file_1_1");
-            File dir12 = new File(dir1, "dir_1_2");
-            dir12.mkdirs();
-            File file120 = new File(dir12, "file_1_2_0");
-            File dir2 = new File(baseFile, "dir_2");
-            dir2.mkdirs();
-
-            // write all file with 1313 bytes data
-            assertTrue(file10.createNewFile());
-            writeFixedBytesToFile(file10, 1313);
-            assertTrue(file11.createNewFile());
-            writeFixedBytesToFile(file11, 1313);
-            assertTrue(file120.createNewFile());
-            writeFixedBytesToFile(file120, 1313);
-
-            assertEquals(1313 * 4, UtilAll.calculateFileSizeInPath(baseFile));
-        } finally {
-            deleteFolder(baseFile);
-        }
-    }
-
-    public static void deleteFolder(File folder) {
-        if (folder.isDirectory()) {
-            File[] files = folder.listFiles();
-            if (files != null) {
-                for (File file : files) {
-                    deleteFolder(file);
-                }
-            }
-        }
-        folder.delete();
+        File baseFile = tempDir.getRoot();
+
+        // test empty path
+        assertEquals(0, UtilAll.calculateFileSizeInPath(baseFile));
+
+        File file0 = new File(baseFile, "file_0");
+        assertTrue(file0.createNewFile());
+        writeFixedBytesToFile(file0, 1313);
+
+        assertEquals(1313, UtilAll.calculateFileSizeInPath(baseFile));
+
+        // build a file tree like above
+        File dir1 = new File(baseFile, "dir_1");
+        dir1.mkdirs();
+        File file10 = new File(dir1, "file_1_0");
+        File file11 = new File(dir1, "file_1_1");
+        File dir12 = new File(dir1, "dir_1_2");
+        dir12.mkdirs();
+        File file120 = new File(dir12, "file_1_2_0");
+        File dir2 = new File(baseFile, "dir_2");
+        dir2.mkdirs();
+
+        // write all file with 1313 bytes data
+        assertTrue(file10.createNewFile());
+        writeFixedBytesToFile(file10, 1313);
+        assertTrue(file11.createNewFile());
+        writeFixedBytesToFile(file11, 1313);
+        assertTrue(file120.createNewFile());
+        writeFixedBytesToFile(file120, 1313);
+
+        assertEquals(1313 * 4, UtilAll.calculateFileSizeInPath(baseFile));
     }
 
     private void writeFixedBytesToFile(File file, int size) throws Exception {

Reply via email to