- webdav_benchmark.sh: PROPFIND, upload/download 1-100MB - ssh_benchmark.sh: SCP, rsync upload/download, delta transfer - Tests throughput for all file sizes Ready for performance testing
144 lines
4.5 KiB
Bash
Executable File
144 lines
4.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# WebDAV Performance Benchmark
|
|
# Tests: upload, download, PROPFIND, MKCOL, DELETE
|
|
|
|
set -e
|
|
|
|
WEBDAV_URL="http://127.0.0.1:11438/webdav"
|
|
TEST_DIR="/tmp/webdav_benchmark"
|
|
USER="demo"
|
|
PASS="demo123"
|
|
|
|
# Colors
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
echo "================================================"
|
|
echo "WebDAV Performance Benchmark"
|
|
echo "================================================"
|
|
echo ""
|
|
|
|
# Setup test directory
|
|
rm -rf "$TEST_DIR"
|
|
mkdir -p "$TEST_DIR"
|
|
cd "$TEST_DIR"
|
|
|
|
# Generate test files
|
|
echo "Generating test files..."
|
|
dd if=/dev/urandom of=file_1mb.bin bs=1M count=1 2>/dev/null
|
|
dd if=/dev/urandom of=file_10mb.bin bs=1M count=10 2>/dev/null
|
|
dd if=/dev/urandom of=file_50mb.bin bs=1M count=50 2>/dev/null
|
|
dd if=/dev/urandom of=file_100mb.bin bs=1M count=100 2>/dev/null
|
|
echo "${GREEN}Test files generated${NC}"
|
|
echo ""
|
|
|
|
# Test 1: PROPFIND (directory listing)
|
|
echo "=== Test 1: PROPFIND (directory listing) ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" -X PROPFIND -H "Depth: 1" "$WEBDAV_URL/" > /dev/null
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
echo "${GREEN}PROPFIND: ${ELAPSED}s${NC}"
|
|
echo ""
|
|
|
|
# Test 2: Upload 1MB file
|
|
echo "=== Test 2: Upload 1MB file ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" -T file_1mb.bin "$WEBDAV_URL/file_1mb.bin"
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
THROUGHPUT=$(echo "scale=2; 1 / $ELAPSED" | bc)
|
|
echo "${GREEN}Upload 1MB: ${ELAPSED}s (${THROUGHPUT} MB/s)${NC}"
|
|
echo ""
|
|
|
|
# Test 3: Upload 10MB file
|
|
echo "=== Test 3: Upload 10MB file ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" -T file_10mb.bin "$WEBDAV_URL/file_10mb.bin"
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
THROUGHPUT=$(echo "scale=2; 10 / $ELAPSED" | bc)
|
|
echo "${GREEN}Upload 10MB: ${ELAPSED}s (${THROUGHPUT} MB/s)${NC}"
|
|
echo ""
|
|
|
|
# Test 4: Download 10MB file
|
|
echo "=== Test 4: Download 10MB file ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" "$WEBDAV_URL/file_10mb.bin" -o /tmp/download_10mb.bin
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
THROUGHPUT=$(echo "scale=2; 10 / $ELAPSED" | bc)
|
|
echo "${GREEN}Download 10MB: ${ELAPSED}s (${THROUGHPUT} MB/s)${NC}"
|
|
echo ""
|
|
|
|
# Test 5: Upload 50MB file
|
|
echo "=== Test 5: Upload 50MB file ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" -T file_50mb.bin "$WEBDAV_URL/file_50mb.bin"
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
THROUGHPUT=$(echo "scale=2; 50 / $ELAPSED" | bc)
|
|
echo "${GREEN}Upload 50MB: ${ELAPSED}s (${THROUGHPUT} MB/s)${NC}"
|
|
echo ""
|
|
|
|
# Test 6: Download 50MB file
|
|
echo "=== Test 6: Download 50MB file ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" "$WEBDAV_URL/file_50mb.bin" -o /tmp/download_50mb.bin
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
THROUGHPUT=$(echo "scale=2; 50 / $ELAPSED" | bc)
|
|
echo "${GREEN}Download 50MB: ${ELAPSED}s (${THROUGHPUT} MB/s)${NC}"
|
|
echo ""
|
|
|
|
# Test 7: Upload 100MB file
|
|
echo "=== Test 7: Upload 100MB file ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" -T file_100mb.bin "$WEBDAV_URL/file_100mb.bin"
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
THROUGHPUT=$(echo "scale=2; 100 / $ELAPSED" | bc)
|
|
echo "${GREEN}Upload 100MB: ${ELAPSED}s (${THROUGHPUT} MB/s)${NC}"
|
|
echo ""
|
|
|
|
# Test 8: Download 100MB file
|
|
echo "=== Test 8: Download 100MB file ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" "$WEBDAV_URL/file_100mb.bin" -o /tmp/download_100mb.bin
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
THROUGHPUT=$(echo "scale=2; 100 / $ELAPSED" | bc)
|
|
echo "${GREEN}Download 100MB: ${ELAPSED}s (${THROUGHPUT} MB/s)${NC}"
|
|
echo ""
|
|
|
|
# Test 9: MKCOL (create directory)
|
|
echo "=== Test 9: MKCOL (create directory) ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" -X MKCOL "$WEBDAV_URL/test_dir/"
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
echo "${GREEN}MKCOL: ${ELAPSED}s${NC}"
|
|
echo ""
|
|
|
|
# Test 10: DELETE (cleanup)
|
|
echo "=== Test 10: DELETE (cleanup) ==="
|
|
START=$(date +%s.%N)
|
|
curl -s -u "$USER:$PASS" -X DELETE "$WEBDAV_URL/file_1mb.bin"
|
|
curl -s -u "$USER:$PASS" -X DELETE "$WEBDAV_URL/file_10mb.bin"
|
|
curl -s -u "$USER:$PASS" -X DELETE "$WEBDAV_URL/file_50mb.bin"
|
|
curl -s -u "$USER:$PASS" -X DELETE "$WEBDAV_URL/file_100mb.bin"
|
|
curl -s -u "$USER:$PASS" -X DELETE "$WEBDAV_URL/test_dir/"
|
|
END=$(date +%s.%N)
|
|
ELAPSED=$(echo "$END - $START" | bc)
|
|
echo "${GREEN}DELETE (5 files): ${ELAPSED}s${NC}"
|
|
echo ""
|
|
|
|
# Cleanup
|
|
rm -rf "$TEST_DIR"
|
|
rm -f /tmp/download_*.bin
|
|
|
|
echo "================================================"
|
|
echo "${GREEN}WebDAV Performance Benchmark Complete${NC}"
|
|
echo "================================================" |