Some checks are pending
CI Pipeline / Run Tests (push) Waiting to run
CI Pipeline / Lint Code (push) Waiting to run
CI Pipeline / Security Scan (push) Waiting to run
CI Pipeline / Build Docker Images (push) Blocked by required conditions
CI Pipeline / E2E Tests (push) Blocked by required conditions
144 lines
3.5 KiB
Bash
Executable File
144 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
OUTPUT_DIR=${OUTPUT_DIR:-/output}
|
|
FILE_SIZES=${FILE_SIZES:-"1KB,10MB,100MB"}
|
|
VIDEO_FORMATS=${VIDEO_FORMATS:-"mp4,mkv,avi,mov,webm"}
|
|
|
|
echo "🗃️ Generating test files..."
|
|
echo "Output directory: $OUTPUT_DIR"
|
|
echo "File sizes: $FILE_SIZES"
|
|
echo "Video formats: $VIDEO_FORMATS"
|
|
|
|
mkdir -p "$OUTPUT_DIR"
|
|
cd "$OUTPUT_DIR"
|
|
|
|
# Parse file sizes
|
|
IFS=',' read -ra SIZES <<< "$FILE_SIZES"
|
|
IFS=',' read -ra FORMATS <<< "$VIDEO_FORMATS"
|
|
|
|
# Helper function to convert size notation to bytes
|
|
size_to_bytes() {
|
|
local size="$1"
|
|
local number="${size//[^0-9]/}"
|
|
local unit="${size//[0-9]/}"
|
|
|
|
case "${unit^^}" in
|
|
"KB") echo $((number * 1024)) ;;
|
|
"MB") echo $((number * 1024 * 1024)) ;;
|
|
"GB") echo $((number * 1024 * 1024 * 1024)) ;;
|
|
*) echo "$number" ;; # Assume bytes if no unit
|
|
esac
|
|
}
|
|
|
|
# Generate regular test files
|
|
for size_spec in "${SIZES[@]}"; do
|
|
size_spec=$(echo "$size_spec" | tr -d ' ') # Remove spaces
|
|
bytes=$(size_to_bytes "$size_spec")
|
|
filename="test_file_${size_spec}.bin"
|
|
|
|
echo "Creating $filename ($bytes bytes)..."
|
|
head -c "$bytes" /dev/urandom > "$filename"
|
|
done
|
|
|
|
# Generate video files for each format
|
|
for format in "${FORMATS[@]}"; do
|
|
format=$(echo "$format" | tr -d ' ') # Remove spaces
|
|
|
|
# Create different sizes for video files
|
|
for size_spec in "1MB" "5MB" "10MB"; do
|
|
bytes=$(size_to_bytes "$size_spec")
|
|
filename="test_video_${size_spec}.${format}"
|
|
|
|
echo "Creating $filename ($bytes bytes)..."
|
|
head -c "$bytes" /dev/urandom > "$filename"
|
|
done
|
|
done
|
|
|
|
# Create special test files
|
|
echo "Creating special test files..."
|
|
|
|
# Empty file
|
|
touch "empty_file.txt"
|
|
|
|
# Text file with known content
|
|
cat << 'EOF' > "text_file.txt"
|
|
This is a test text file for the Blossom-BitTorrent Gateway.
|
|
It contains multiple lines of text to test text file handling.
|
|
This file can be used to verify text processing capabilities.
|
|
The content is predictable and can be verified after upload/download.
|
|
|
|
Line numbers:
|
|
1. First line
|
|
2. Second line
|
|
3. Third line
|
|
4. Fourth line
|
|
5. Fifth line
|
|
|
|
Special characters: !@#$%^&*()_+-=[]{}|;':\",./<>?
|
|
Unicode: 🚀 🌟 💫 ⚡ 🔥 ⭐ 🎯 🎪 🎨 🎭
|
|
|
|
End of test file.
|
|
EOF
|
|
|
|
# Binary file with pattern
|
|
echo "Creating binary pattern file..."
|
|
python3 -c "
|
|
import struct
|
|
with open('binary_pattern.bin', 'wb') as f:
|
|
for i in range(1024):
|
|
f.write(struct.pack('I', i))
|
|
" 2>/dev/null || {
|
|
# Fallback if python3 is not available
|
|
for i in $(seq 0 1023); do
|
|
printf "\\$(printf "%03o" $((i % 256)))" >> binary_pattern.bin
|
|
done
|
|
}
|
|
|
|
# Create JSON metadata file
|
|
cat << EOF > "test_files_manifest.json"
|
|
{
|
|
"generated_at": "$(date -Iseconds)",
|
|
"files": [
|
|
EOF
|
|
|
|
first_file=true
|
|
for file in *.bin *.txt *.mp4 *.mkv *.avi *.mov *.webm; do
|
|
if [[ -f "$file" ]]; then
|
|
if [[ "$first_file" != true ]]; then
|
|
echo " }," >> "test_files_manifest.json"
|
|
fi
|
|
first_file=false
|
|
|
|
size=$(wc -c < "$file")
|
|
sha256sum_value=$(sha256sum "$file" | cut -d' ' -f1)
|
|
|
|
cat << EOF >> "test_files_manifest.json"
|
|
{
|
|
"filename": "$file",
|
|
"size": $size,
|
|
"sha256": "$sha256sum_value"
|
|
EOF
|
|
fi
|
|
done
|
|
|
|
if [[ "$first_file" != true ]]; then
|
|
echo " }" >> "test_files_manifest.json"
|
|
fi
|
|
|
|
cat << 'EOF' >> "test_files_manifest.json"
|
|
]
|
|
}
|
|
EOF
|
|
|
|
echo "📋 Test files generated successfully:"
|
|
ls -lah
|
|
|
|
echo ""
|
|
echo "📊 Summary:"
|
|
echo "Total files: $(find . -type f | wc -l)"
|
|
echo "Total size: $(du -sh . | cut -f1)"
|
|
|
|
echo ""
|
|
echo "✅ Test file generation complete!" |