56 lines
1.4 KiB
Bash
56 lines
1.4 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
#
|
||
|
|
# Test zstd compression workflow:
|
||
|
|
# 1. Create archive from first state file
|
||
|
|
# 2. Compress with zstd
|
||
|
|
# 3. Append remaining state files to the compressed archive
|
||
|
|
# 4. Decompress and show info
|
||
|
|
#
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_DIR="$(dirname "$(dirname "$SCRIPT_DIR")")"
|
||
|
|
BINARY="$PROJECT_DIR/target/debug/json-archive"
|
||
|
|
DATA_DIR="$SCRIPT_DIR/data"
|
||
|
|
OUT_DIR="$SCRIPT_DIR/out/zstd"
|
||
|
|
|
||
|
|
echo "=== Zstd Compression Test ==="
|
||
|
|
|
||
|
|
# Setup
|
||
|
|
rm -rf "$OUT_DIR"
|
||
|
|
mkdir -p "$OUT_DIR"
|
||
|
|
|
||
|
|
# Create initial archive from first state file
|
||
|
|
echo "Creating archive from state_1.json..."
|
||
|
|
"$BINARY" "$DATA_DIR/state_1.json" -o "$OUT_DIR/test.json.archive"
|
||
|
|
|
||
|
|
# Compress with zstd
|
||
|
|
echo "Compressing with zstd..."
|
||
|
|
zstd "$OUT_DIR/test.json.archive"
|
||
|
|
rm "$OUT_DIR/test.json.archive"
|
||
|
|
ls -la "$OUT_DIR/"
|
||
|
|
|
||
|
|
# Append remaining files to compressed archive
|
||
|
|
for i in $(seq 2 9); do
|
||
|
|
echo "Appending state_$i.json to compressed archive..."
|
||
|
|
"$BINARY" "$OUT_DIR/test.json.archive.zst" "$DATA_DIR/state_$i.json"
|
||
|
|
done
|
||
|
|
|
||
|
|
# Show info on the result
|
||
|
|
echo ""
|
||
|
|
echo "Final archive info:"
|
||
|
|
"$BINARY" info "$OUT_DIR/test.json.archive.zst"
|
||
|
|
|
||
|
|
# Decompress for manual inspection
|
||
|
|
echo ""
|
||
|
|
echo "Decompressing for comparison..."
|
||
|
|
zstd -d -k "$OUT_DIR/test.json.archive.zst"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "Decompressed archive info:"
|
||
|
|
"$BINARY" info "$OUT_DIR/test.json.archive"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "Files in $OUT_DIR:"
|
||
|
|
ls -la "$OUT_DIR/"
|