bryancall commented on PR #12201:
URL: https://github.com/apache/trafficserver/pull/12201#issuecomment-3474668732
## Comprehensive Testing Results for ZSTD Compression Support
I've completed comprehensive testing of PR #12201 across three test phases.
All tests **PASSED** ✅
### Test Environment
- Build: `dev-asan` preset
- Test file: 4701 bytes HTML
- Configuration: `proxy.config.http.normalize_ae: 0` (required for
Brotli/ZSTD)
---
### 📊 Test Results Summary
#### **Test 1: Baseline (Master Branch)**
Established baseline functionality with existing compression algorithms:
- ✅ **GZIP**: 4701 → 91 bytes (98.1% reduction)
- ✅ **Brotli**: 4701 → 53 bytes (98.9% reduction)
#### **Test 2: PR #12201 WITHOUT ZSTD Libraries**
Verified backward compatibility when ZSTD libraries are not available:
- ✅ **GZIP**: 4701 → 91 bytes (98.1% reduction)
- ✅ **Brotli**: 4701 → 53 bytes (98.9% reduction)
- ✅ **ZSTD**: 4701 bytes (uncompressed - graceful fallback)
**Result**: No regressions. Existing compression algorithms continue to work
when ZSTD is unavailable.
#### **Test 3: PR #12201 WITH ZSTD Libraries**
Verified new ZSTD compression functionality:
- ✅ **GZIP**: 4701 → 91 bytes (98.1% reduction)
- ✅ **Brotli**: 4701 → 53 bytes (98.9% reduction)
- ✅ **ZSTD**: 4701 → 68 bytes (98.6% reduction) ⭐ **NEW!**
**Result**: ZSTD compression works correctly and produces valid Zstandard
compressed data.
---
### 🎯 Key Findings
1. **✅ ZSTD compression works correctly** - Produces valid compressed output
with excellent compression ratios
2. **✅ Backward compatibility maintained** - PR works with and without ZSTD
libraries installed
3. **✅ No regressions** - Existing GZIP and Brotli compression continue to
work perfectly
4. **✅ Graceful fallback** - When ZSTD libraries are unavailable, requests
are served uncompressed without errors
### 📈 Compression Algorithm Performance
On the 4701-byte test file:
1. **Brotli**: 53 bytes (best compression)
2. **ZSTD**: 68 bytes (+28% vs Brotli)
3. **GZIP**: 91 bytes (+72% vs Brotli)
ZSTD achieves excellent compression, sitting between Brotli and GZIP in
terms of compression ratio.
---
### ⚙️ Configuration Requirements
**Critical**: For Brotli and ZSTD to function properly, set:
```yaml
records:
http:
normalize_ae: 0
```
Without this setting, ATS core normalizes the `Accept-Encoding` header
before the compress plugin processes it, which interferes with Brotli/ZSTD
compression.
---
### 🏗️ Build Notes
The PR's ZSTD detection via `find_package(zstd CONFIG)` requires a CMake
config file. On systems where `libzstd-devel` doesn't provide
`zstdConfig.cmake`, a simple config file can be created:
```cmake
add_library(zstd::zstd UNKNOWN IMPORTED)
set_target_properties(zstd::zstd PROPERTIES
IMPORTED_LOCATION "/usr/lib64/libzstd.so"
INTERFACE_INCLUDE_DIRECTORIES "/usr/include"
)
set(zstd_FOUND TRUE)
```
---
### ✅ Conclusion
PR #12201 successfully implements ZSTD compression support without any
regressions. The implementation:
- Maintains full backward compatibility
- Handles missing ZSTD libraries gracefully
- Achieves excellent compression ratios (98.6% reduction)
- Integrates seamlessly with existing compression infrastructure
All three test phases passed successfully. Great work on this feature! 🎉
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]