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

jimin pushed a commit to branch 2.x
in repository https://gitbox.apache.org/repos/asf/incubator-seata.git


The following commit(s) were added to refs/heads/2.x by this push:
     new dc9bf007aa test: add UT test for compressor module (#7725)
dc9bf007aa is described below

commit dc9bf007aae79689d9834a9842a6935a4782e1fe
Author: Eric Wang <[email protected]>
AuthorDate: Fri Oct 24 05:03:02 2025 +0300

    test: add UT test for compressor module (#7725)
---
 changes/en-us/2.x.md                               |   1 +
 changes/zh-cn/2.x.md                               |   1 +
 .../compressor/bzip2/BZip2CompressorTest.java      | 112 +++++++++++++++++++++
 .../seata/compressor/bzip2/BZip2UtilTest.java      |  96 +++++++++++++++++-
 .../deflater/DeflaterCompressorTest.java           | 112 +++++++++++++++++++++
 .../compressor/deflater/DeflaterUtilTest.java      |  90 ++++++++++++++++-
 .../seata/compressor/gzip/GzipCompressorTest.java  | 112 +++++++++++++++++++++
 .../apache/seata/compressor/gzip/GzipUtilTest.java |  83 ++++++++++++++-
 .../seata/compressor/lz4/Lz4CompressorTest.java    | 111 ++++++++++++++++++++
 .../apache/seata/compressor/lz4/Lz4UtilTest.java   |  90 +++++++++++++++++
 .../seata/compressor/zip/ZipCompressorTest.java    | 111 ++++++++++++++++++++
 .../apache/seata/compressor/zip/ZipUtilTest.java   |  94 ++++++++++++++++-
 .../seata/compressor/zstd/ZstdCompressorTest.java  | 111 ++++++++++++++++++++
 .../apache/seata/compressor/zstd/ZstdUtilTest.java |  17 +++-
 14 files changed, 1126 insertions(+), 15 deletions(-)

diff --git a/changes/en-us/2.x.md b/changes/en-us/2.x.md
index a764e41f19..5613384abf 100644
--- a/changes/en-us/2.x.md
+++ b/changes/en-us/2.x.md
@@ -88,6 +88,7 @@ Add changes here for all PR submitted to the 2.x branch.
 - [[#7679](https://github.com/apache/incubator-seata/pull/7679)] fix old 
version connect timeout
 - [[#7638](https://github.com/apache/incubator-seata/pull/7638)]Add unit tests 
for the `seata-common` module and remove a todo
 - [[#7709](https://github.com/apache/incubator-seata/pull/7709)] add UT for dm 
module
+- [[#7725](https://github.com/apache/incubator-seata/pull/7725)] add UT for 
compressor module
 - [[#7718](https://github.com/apache/incubator-seata/pull/7718)] add UT for 
config module
 - [[#7723](https://github.com/apache/incubator-seata/pull/7723)] add UT for 
fastjson2 to test PostgreSQL Array type
 
diff --git a/changes/zh-cn/2.x.md b/changes/zh-cn/2.x.md
index b46e00f981..5b71604880 100644
--- a/changes/zh-cn/2.x.md
+++ b/changes/zh-cn/2.x.md
@@ -87,6 +87,7 @@
 - [[#7679](https://github.com/apache/incubator-seata/pull/7679)] 修复旧版本协议测试超时问题
 - [[#7638](https://github.com/apache/incubator-seata/pull/7638)] 增加了 
`seata-common` 模块的测试用例,删去了一个todo
 - [[#7709](https://github.com/apache/incubator-seata/pull/7709)] 为dm模块增加单测
+- [[#7725](https://github.com/apache/incubator-seata/pull/7725)] 
为compressor模块增加单测
 - [[#7718](https://github.com/apache/incubator-seata/pull/7718)] 为config模块增加单测
 - [[#7723](https://github.com/apache/incubator-seata/pull/7723)] 添加 fastjson2 
的 UT 来测试 PostgreSQL 数组类型
 
diff --git 
a/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2CompressorTest.java
 
b/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2CompressorTest.java
index 44a0db4934..1321008477 100644
--- 
a/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2CompressorTest.java
+++ 
b/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2CompressorTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.bzip2;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 /**
  * the BZip2 Compressor test
  *
@@ -33,4 +36,113 @@ public class BZip2CompressorTest {
         bytes = compressor.decompress(bytes);
         Assertions.assertEquals(new String(bytes), "aa");
     }
+
+    @Test
+    public void testCompressNull() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.compress(null);
+        });
+    }
+
+    @Test
+    public void testDecompressNull() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.decompress(null);
+        });
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        byte[] empty = new byte[0];
+        byte[] compressed = compressor.compress(empty);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        byte[] singleByte = {42};
+        byte[] compressed = compressor.compress(singleByte);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = compressor.compress(largeData);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressSpecialCharacters() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        String text = "Hello World! @#$%^&*()_+-=[]{}|;':\",./<>?";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        String text = "Hello World in Chinese: 你好世界, Japanese: こんにちは世界, 
Korean: 안녕하세요 세계";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4};
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            compressor.decompress(invalidData);
+        });
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        BZip2Compressor compressor = new BZip2Compressor();
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = compressor.compress(original);
+        byte[] firstDecompressed = compressor.decompress(firstCompressed);
+
+        byte[] secondCompressed = compressor.compress(firstDecompressed);
+        byte[] secondDecompressed = compressor.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2UtilTest.java
 
b/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2UtilTest.java
index 268c86fa64..5692f52a21 100644
--- 
a/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2UtilTest.java
+++ 
b/compressor/seata-compressor-bzip2/src/test/java/org/apache/seata/compressor/bzip2/BZip2UtilTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.bzip2;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 /**
  * the BZip2 Util test
  *
@@ -26,16 +29,105 @@ import org.junit.jupiter.api.Test;
 public class BZip2UtilTest {
 
     @Test
-    public void test_compress() {
+    public void testCompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             BZip2Util.compress(null);
         });
     }
 
     @Test
-    public void test_decompress() {
+    public void testDecompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             BZip2Util.decompress(null);
         });
     }
+
+    @Test
+    public void testCompressEqualDecompress() {
+        byte[] compress = BZip2Util.compress("aa".getBytes());
+        byte[] decompress = BZip2Util.decompress(compress);
+        Assertions.assertEquals("aa", new String(decompress));
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        byte[] empty = new byte[0];
+        byte[] compressed = BZip2Util.compress(empty);
+        byte[] decompressed = BZip2Util.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        byte[] singleByte = {42};
+        byte[] compressed = BZip2Util.compress(singleByte);
+        byte[] decompressed = BZip2Util.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = BZip2Util.compress(largeData);
+        byte[] decompressed = BZip2Util.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = BZip2Util.compress(original);
+        byte[] decompressed = BZip2Util.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        String text = "测试中文数据压缩解压";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = BZip2Util.compress(original);
+        byte[] decompressed = BZip2Util.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = BZip2Util.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4, 0x5};
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            BZip2Util.decompress(invalidData);
+        });
+    }
+
+    @Test
+    public void testDecompressEmptyArray() {
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            BZip2Util.decompress(new byte[0]);
+        });
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = BZip2Util.compress(original);
+        byte[] firstDecompressed = BZip2Util.decompress(firstCompressed);
+
+        byte[] secondCompressed = BZip2Util.compress(firstDecompressed);
+        byte[] secondDecompressed = BZip2Util.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterCompressorTest.java
 
b/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterCompressorTest.java
index b09ce834b4..1094e6a526 100644
--- 
a/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterCompressorTest.java
+++ 
b/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterCompressorTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.deflater;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 public class DeflaterCompressorTest {
 
     @Test
@@ -29,4 +32,113 @@ public class DeflaterCompressorTest {
         bytes = compressor.decompress(bytes);
         Assertions.assertEquals(new String(bytes), "seata");
     }
+
+    @Test
+    public void testCompressNull() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.compress(null);
+        });
+    }
+
+    @Test
+    public void testDecompressNull() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.decompress(null);
+        });
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        byte[] empty = new byte[0];
+        byte[] compressed = compressor.compress(empty);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        byte[] singleByte = {42};
+        byte[] compressed = compressor.compress(singleByte);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = compressor.compress(largeData);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressSpecialCharacters() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        String text = "Hello World! @#$%^&*()_+-=[]{}|;':\",./<>?";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        String text = "Hello World in Chinese: 你好世界, Japanese: こんにちは世界, 
Korean: 안녕하세요 세계";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4};
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            compressor.decompress(invalidData);
+        });
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        DeflaterCompressor compressor = new DeflaterCompressor();
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = compressor.compress(original);
+        byte[] firstDecompressed = compressor.decompress(firstCompressed);
+
+        byte[] secondCompressed = compressor.compress(firstDecompressed);
+        byte[] secondDecompressed = compressor.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterUtilTest.java
 
b/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterUtilTest.java
index 5bd94306ea..06e4003a7b 100644
--- 
a/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterUtilTest.java
+++ 
b/compressor/seata-compressor-deflater/src/test/java/org/apache/seata/compressor/deflater/DeflaterUtilTest.java
@@ -19,26 +19,110 @@ package org.apache.seata.compressor.deflater;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 public class DeflaterUtilTest {
 
     @Test
-    public void test_compress() {
+    public void testCompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             DeflaterUtil.compress(null);
         });
     }
 
     @Test
-    public void test_decompress() {
+    public void testDecompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             DeflaterUtil.decompress(null);
         });
     }
 
     @Test
-    public void test_compressEqualDecompress() {
+    public void testCompressEqualDecompress() {
         byte[] compress = DeflaterUtil.compress("seata".getBytes());
         byte[] decompress = DeflaterUtil.decompress(compress);
         Assertions.assertEquals("seata", new String(decompress));
     }
+
+    @Test
+    public void testCompressEmptyArray() {
+        byte[] empty = new byte[0];
+        byte[] compressed = DeflaterUtil.compress(empty);
+        byte[] decompressed = DeflaterUtil.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        byte[] singleByte = {42};
+        byte[] compressed = DeflaterUtil.compress(singleByte);
+        byte[] decompressed = DeflaterUtil.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = DeflaterUtil.compress(largeData);
+        byte[] decompressed = DeflaterUtil.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = DeflaterUtil.compress(original);
+        byte[] decompressed = DeflaterUtil.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        String text = "测试中文数据压缩解压";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = DeflaterUtil.compress(original);
+        byte[] decompressed = DeflaterUtil.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = DeflaterUtil.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4, 0x5};
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            DeflaterUtil.decompress(invalidData);
+        });
+    }
+
+    @Test
+    public void testDecompressEmptyArray() {
+        byte[] result = DeflaterUtil.decompress(new byte[0]);
+        Assertions.assertArrayEquals(new byte[0], result);
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = DeflaterUtil.compress(original);
+        byte[] firstDecompressed = DeflaterUtil.decompress(firstCompressed);
+
+        byte[] secondCompressed = DeflaterUtil.compress(firstDecompressed);
+        byte[] secondDecompressed = DeflaterUtil.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipCompressorTest.java
 
b/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipCompressorTest.java
index 4c1dff4f9f..eeead38295 100644
--- 
a/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipCompressorTest.java
+++ 
b/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipCompressorTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.gzip;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 public class GzipCompressorTest {
 
     @Test
@@ -29,4 +32,113 @@ public class GzipCompressorTest {
         bytes = compressor.decompress(bytes);
         Assertions.assertEquals(new String(bytes), "aa");
     }
+
+    @Test
+    public void testCompressNull() {
+        GzipCompressor compressor = new GzipCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.compress(null);
+        });
+    }
+
+    @Test
+    public void testDecompressNull() {
+        GzipCompressor compressor = new GzipCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.decompress(null);
+        });
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        GzipCompressor compressor = new GzipCompressor();
+        byte[] empty = new byte[0];
+        byte[] compressed = compressor.compress(empty);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        GzipCompressor compressor = new GzipCompressor();
+        byte[] singleByte = {42};
+        byte[] compressed = compressor.compress(singleByte);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        GzipCompressor compressor = new GzipCompressor();
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = compressor.compress(largeData);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        GzipCompressor compressor = new GzipCompressor();
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressSpecialCharacters() {
+        GzipCompressor compressor = new GzipCompressor();
+        String text = "Hello World! @#$%^&*()_+-=[]{}|;':\",./<>?";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        GzipCompressor compressor = new GzipCompressor();
+        String text = "Hello World in Chinese: 你好世界, Japanese: こんにちは世界, 
Korean: 안녕하세요 세계";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        GzipCompressor compressor = new GzipCompressor();
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        GzipCompressor compressor = new GzipCompressor();
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4};
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            compressor.decompress(invalidData);
+        });
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        GzipCompressor compressor = new GzipCompressor();
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = compressor.compress(original);
+        byte[] firstDecompressed = compressor.decompress(firstCompressed);
+
+        byte[] secondCompressed = compressor.compress(firstDecompressed);
+        byte[] secondDecompressed = compressor.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipUtilTest.java
 
b/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipUtilTest.java
index 3ad8dd965a..7787068b6b 100644
--- 
a/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipUtilTest.java
+++ 
b/compressor/seata-compressor-gzip/src/test/java/org/apache/seata/compressor/gzip/GzipUtilTest.java
@@ -19,12 +19,14 @@ package org.apache.seata.compressor.gzip;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
 import java.util.zip.GZIPInputStream;
 
 public class GzipUtilTest {
 
     @Test
-    public void test_compress() {
+    public void testCompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             GzipUtil.compress(null);
         });
@@ -35,7 +37,7 @@ public class GzipUtilTest {
     }
 
     @Test
-    public void test_decompress() {
+    public void testDecompress() {
 
         Assertions.assertThrows(NullPointerException.class, () -> {
             GzipUtil.decompress(null);
@@ -52,7 +54,7 @@ public class GzipUtilTest {
     }
 
     @Test
-    public void test_compressEqualDecompress() {
+    public void testCompressEqualDecompress() {
 
         byte[] compress = GzipUtil.compress("aa".getBytes());
 
@@ -60,4 +62,79 @@ public class GzipUtilTest {
 
         Assertions.assertEquals("aa", new String(decompress));
     }
+
+    @Test
+    public void testCompressEmptyArray() {
+        byte[] empty = new byte[0];
+        byte[] compressed = GzipUtil.compress(empty);
+        byte[] decompressed = GzipUtil.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        byte[] singleByte = {42};
+        byte[] compressed = GzipUtil.compress(singleByte);
+        byte[] decompressed = GzipUtil.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = GzipUtil.compress(largeData);
+        byte[] decompressed = GzipUtil.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = GzipUtil.compress(original);
+        byte[] decompressed = GzipUtil.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        String text = "测试中文数据压缩解压";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = GzipUtil.compress(original);
+        byte[] decompressed = GzipUtil.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = GzipUtil.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4, 0x5};
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            GzipUtil.decompress(invalidData);
+        });
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = GzipUtil.compress(original);
+        byte[] firstDecompressed = GzipUtil.decompress(firstCompressed);
+
+        byte[] secondCompressed = GzipUtil.compress(firstDecompressed);
+        byte[] secondDecompressed = GzipUtil.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4CompressorTest.java
 
b/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4CompressorTest.java
index 8a560c4c8d..35221d404f 100644
--- 
a/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4CompressorTest.java
+++ 
b/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4CompressorTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.lz4;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 public class Lz4CompressorTest {
     @Test
     public void testCompressAndDecompress() {
@@ -29,4 +32,112 @@ public class Lz4CompressorTest {
         byte[] result = compressor.decompress(bytes);
         Assertions.assertEquals(new String(result), content);
     }
+
+    @Test
+    public void testCompressNull() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.compress(null);
+        });
+    }
+
+    @Test
+    public void testDecompressNull() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.decompress(null);
+        });
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        byte[] empty = new byte[0];
+        byte[] compressed = compressor.compress(empty);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        byte[] singleByte = {42};
+        byte[] compressed = compressor.compress(singleByte);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = compressor.compress(largeData);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressSpecialCharacters() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        String text = "Hello World! @#$%^&*()_+-=[]{}|;':\",./<>?";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        String text = "Hello World in Chinese: 你好世界, Japanese: こんにちは世界, 
Korean: 안녕하세요 세계";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4};
+        byte[] result = compressor.decompress(invalidData);
+        Assertions.assertArrayEquals(new byte[0], result);
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        Lz4Compressor compressor = new Lz4Compressor();
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = compressor.compress(original);
+        byte[] firstDecompressed = compressor.decompress(firstCompressed);
+
+        byte[] secondCompressed = compressor.compress(firstDecompressed);
+        byte[] secondDecompressed = compressor.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4UtilTest.java
 
b/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4UtilTest.java
index 485db7f242..6a38c2cc61 100644
--- 
a/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4UtilTest.java
+++ 
b/compressor/seata-compressor-lz4/src/test/java/org/apache/seata/compressor/lz4/Lz4UtilTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.lz4;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 class Lz4UtilTest {
     @Test
     public void testCompress() {
@@ -33,4 +36,91 @@ class Lz4UtilTest {
             Lz4Util.decompress(null);
         });
     }
+
+    @Test
+    public void testCompressEqualDecompress() {
+        byte[] compress = Lz4Util.compress("aa".getBytes());
+        byte[] decompress = Lz4Util.decompress(compress);
+        Assertions.assertEquals("aa", new String(decompress));
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        byte[] empty = new byte[0];
+        byte[] compressed = Lz4Util.compress(empty);
+        byte[] decompressed = Lz4Util.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        byte[] singleByte = {42};
+        byte[] compressed = Lz4Util.compress(singleByte);
+        byte[] decompressed = Lz4Util.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = Lz4Util.compress(largeData);
+        byte[] decompressed = Lz4Util.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = Lz4Util.compress(original);
+        byte[] decompressed = Lz4Util.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        String text = "测试中文数据压缩解压";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = Lz4Util.compress(original);
+        byte[] decompressed = Lz4Util.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = Lz4Util.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4, 0x5};
+        byte[] result = Lz4Util.decompress(invalidData);
+        Assertions.assertArrayEquals(new byte[0], result);
+    }
+
+    @Test
+    public void testDecompressEmptyArray() {
+        byte[] result = Lz4Util.decompress(new byte[0]);
+        Assertions.assertArrayEquals(new byte[0], result);
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = Lz4Util.compress(original);
+        byte[] firstDecompressed = Lz4Util.decompress(firstCompressed);
+
+        byte[] secondCompressed = Lz4Util.compress(firstDecompressed);
+        byte[] secondDecompressed = Lz4Util.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipCompressorTest.java
 
b/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipCompressorTest.java
index 7ceb608d42..b6e3a3f79d 100644
--- 
a/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipCompressorTest.java
+++ 
b/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipCompressorTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.zip;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 /**
  * the Zip Compressor test
  *
@@ -33,4 +36,112 @@ public class ZipCompressorTest {
         bytes = compressor.decompress(bytes);
         Assertions.assertEquals(new String(bytes), "aa");
     }
+
+    @Test
+    public void testCompressNull() {
+        ZipCompressor compressor = new ZipCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.compress(null);
+        });
+    }
+
+    @Test
+    public void testDecompressNull() {
+        ZipCompressor compressor = new ZipCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.decompress(null);
+        });
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        ZipCompressor compressor = new ZipCompressor();
+        byte[] empty = new byte[0];
+        byte[] compressed = compressor.compress(empty);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        ZipCompressor compressor = new ZipCompressor();
+        byte[] singleByte = {42};
+        byte[] compressed = compressor.compress(singleByte);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        ZipCompressor compressor = new ZipCompressor();
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = compressor.compress(largeData);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        ZipCompressor compressor = new ZipCompressor();
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressSpecialCharacters() {
+        ZipCompressor compressor = new ZipCompressor();
+        String text = "Hello World! @#$%^&*()_+-=[]{}|;':\",./<>?";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        ZipCompressor compressor = new ZipCompressor();
+        String text = "Hello World in Chinese: 你好世界, Japanese: こんにちは世界, 
Korean: 안녕하세요 세계";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        ZipCompressor compressor = new ZipCompressor();
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        ZipCompressor compressor = new ZipCompressor();
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4};
+        byte[] result = compressor.decompress(invalidData);
+        Assertions.assertArrayEquals(new byte[0], result);
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        ZipCompressor compressor = new ZipCompressor();
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = compressor.compress(original);
+        byte[] firstDecompressed = compressor.decompress(firstCompressed);
+
+        byte[] secondCompressed = compressor.compress(firstDecompressed);
+        byte[] secondDecompressed = compressor.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipUtilTest.java
 
b/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipUtilTest.java
index 48a880f542..09f59d30e8 100644
--- 
a/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipUtilTest.java
+++ 
b/compressor/seata-compressor-zip/src/test/java/org/apache/seata/compressor/zip/ZipUtilTest.java
@@ -19,6 +19,9 @@ package org.apache.seata.compressor.zip;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
+import java.util.Random;
+
 /**
  * the Zip Util test
  *
@@ -26,16 +29,103 @@ import org.junit.jupiter.api.Test;
 public class ZipUtilTest {
 
     @Test
-    public void test_compress() {
+    public void testCompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             ZipUtil.compress(null);
         });
     }
 
     @Test
-    public void test_decompress() {
+    public void testDecompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             ZipUtil.decompress(null);
         });
     }
+
+    @Test
+    public void testCompressEqualDecompress() {
+        byte[] compress = ZipUtil.compress("aa".getBytes());
+        byte[] decompress = ZipUtil.decompress(compress);
+        Assertions.assertEquals("aa", new String(decompress));
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        byte[] empty = new byte[0];
+        byte[] compressed = ZipUtil.compress(empty);
+        byte[] decompressed = ZipUtil.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        byte[] singleByte = {42};
+        byte[] compressed = ZipUtil.compress(singleByte);
+        byte[] decompressed = ZipUtil.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = ZipUtil.compress(largeData);
+        byte[] decompressed = ZipUtil.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextCata() {
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = ZipUtil.compress(original);
+        byte[] decompressed = ZipUtil.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        String text = "测试中文数据压缩解压";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = ZipUtil.compress(original);
+        byte[] decompressed = ZipUtil.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = ZipUtil.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4, 0x5};
+        byte[] result = ZipUtil.decompress(invalidData);
+        Assertions.assertArrayEquals(new byte[0], result);
+    }
+
+    @Test
+    public void testDecompressEmptyArray() {
+        byte[] result = ZipUtil.decompress(new byte[0]);
+        Assertions.assertArrayEquals(new byte[0], result);
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = ZipUtil.compress(original);
+        byte[] firstDecompressed = ZipUtil.decompress(firstCompressed);
+
+        byte[] secondCompressed = ZipUtil.compress(firstDecompressed);
+        byte[] secondDecompressed = ZipUtil.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdCompressorTest.java
 
b/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdCompressorTest.java
index f381844327..c0139c0d22 100644
--- 
a/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdCompressorTest.java
+++ 
b/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdCompressorTest.java
@@ -16,9 +16,11 @@
  */
 package org.apache.seata.compressor.zstd;
 
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
+import java.util.Random;
 import java.util.UUID;
 
 /**
@@ -50,4 +52,113 @@ public class ZstdCompressorTest {
         bytes = compressor.compress(bytes);
         System.out.println("compressed size=" + bytes.length);
     }
+
+    @Test
+    public void testCompressNull() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.compress(null);
+        });
+    }
+
+    @Test
+    public void testDecompressNull() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        Assertions.assertThrows(NullPointerException.class, () -> {
+            compressor.decompress(null);
+        });
+    }
+
+    @Test
+    public void testCompressEmptyArray() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        byte[] empty = new byte[0];
+        byte[] compressed = compressor.compress(empty);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(empty, decompressed);
+    }
+
+    @Test
+    public void testCompressSingleByte() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        byte[] singleByte = {42};
+        byte[] compressed = compressor.compress(singleByte);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(singleByte, decompressed);
+    }
+
+    @Test
+    public void testCompressLargeData() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        byte[] largeData = new byte[1024 * 1024];
+        new Random().nextBytes(largeData);
+        byte[] compressed = compressor.compress(largeData);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertArrayEquals(largeData, decompressed);
+    }
+
+    @Test
+    public void testCompressTextData() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        String text = "The quick brown fox jumps over the lazy dog";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressSpecialCharacters() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        String text = "Hello World! @#$%^&*()_+-=[]{}|;':\",./<>?";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressUnicodeData() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        String text = "Hello World in Chinese: 你好世界, Japanese: こんにちは世界, 
Korean: 안녕하세요 세계";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        byte[] decompressed = compressor.decompress(compressed);
+        Assertions.assertEquals(text, new String(decompressed, 
StandardCharsets.UTF_8));
+    }
+
+    @Test
+    public void testCompressionRatio() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        String repeatedText = new String(new char[1000]).replace("\0", "a");
+        byte[] original = repeatedText.getBytes(StandardCharsets.UTF_8);
+        byte[] compressed = compressor.compress(original);
+        Assertions.assertTrue(
+                compressed.length < original.length,
+                "Compressed size should be smaller than original for 
repetitive data");
+    }
+
+    @Test
+    public void testDecompressInvalidData() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        byte[] invalidData = {0x1, 0x2, 0x3, 0x4};
+        Assertions.assertThrows(RuntimeException.class, () -> {
+            compressor.decompress(invalidData);
+        });
+    }
+
+    @Test
+    public void testMultipleCompressionCycles() {
+        ZstdCompressor compressor = new ZstdCompressor();
+        String text = "Test multiple compression cycles";
+        byte[] original = text.getBytes(StandardCharsets.UTF_8);
+
+        byte[] firstCompressed = compressor.compress(original);
+        byte[] firstDecompressed = compressor.decompress(firstCompressed);
+
+        byte[] secondCompressed = compressor.compress(firstDecompressed);
+        byte[] secondDecompressed = compressor.decompress(secondCompressed);
+
+        Assertions.assertEquals(text, new String(secondDecompressed, 
StandardCharsets.UTF_8));
+    }
 }
diff --git 
a/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdUtilTest.java
 
b/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdUtilTest.java
index d46bd48bfb..f458e13861 100644
--- 
a/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdUtilTest.java
+++ 
b/compressor/seata-compressor-zstd/src/test/java/org/apache/seata/compressor/zstd/ZstdUtilTest.java
@@ -31,21 +31,28 @@ public class ZstdUtilTest {
     private final int MAX_COMPRESSED_SIZE = 4 * 1024 * 1024; // 4MB
 
     @Test
-    public void test_compress() {
+    public void testCompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             ZstdUtil.compress(null);
         });
     }
 
     @Test
-    public void test_decompress() {
+    public void testDecompress() {
         Assertions.assertThrows(NullPointerException.class, () -> {
             ZstdUtil.decompress(null);
         });
     }
 
     @Test
-    public void test_decompress_with_len_illegal() {
+    public void testCompressEqualDecompress() {
+        byte[] compress = ZstdUtil.compress("aa".getBytes());
+        byte[] decompress = ZstdUtil.decompress(compress);
+        Assertions.assertEquals("aa", new String(decompress));
+    }
+
+    @Test
+    public void testDecompressWithLenIllegal() {
         Assertions.assertThrows(IllegalArgumentException.class, () -> {
             // 
https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#zstandard-frames
             List<Byte> bytes = new ArrayList<>();
@@ -63,7 +70,7 @@ public class ZstdUtilTest {
     }
 
     @Test
-    public void test_decompress_with_len() {
+    public void testDecompressWithLen() {
         Assertions.assertDoesNotThrow(() -> {
             byte[] data = new byte[MAX_COMPRESSED_SIZE + 1];
             for (int i = 0; i < data.length; i++) {
@@ -83,7 +90,7 @@ public class ZstdUtilTest {
     }
 
     @Test
-    public void test_decompress_with_fake_frame_content_size_oom() {
+    public void testDecompressWithFakeFrameContentSizeOOM() {
         // Construct a fake zstd header with the frame content size set to 
1GB, while the actual content is only 4MB.
         byte[] magic = new byte[] {(byte) 0x28, (byte) 0xB5, (byte) 0x2F, 
(byte) 0xFD};
         byte[] frameHeaderDescriptor = new byte[magic.length + 1];


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

Reply via email to