- Reorganize configs into environments/, workers/, deprecated/ folders - Reorganize scripts into testing/, deployment/, maintenance/, benchmarks/ folders - Add comprehensive testing guide documentation - Add new Makefile targets: test-full, test-auth, test-status - Update script paths in Makefile to match new organization - Create testing protocol documentation - Add cleanup status checking functionality Testing framework now includes: - Quick authentication tests (make test-auth) - Full test suite runner (make test-full) - Cleanup status monitoring (make test-status) - Comprehensive documentation and troubleshooting guides
305 lines
11 KiB
Bash
Executable file
305 lines
11 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Comprehensive Benchmark Cleanup Script
|
|
# Cleans up all benchmark-related artifacts and temporary files
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
|
LOCAL_ARTIFACTS_DIR="$PROJECT_ROOT/.local-artifacts"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Helper functions
|
|
print_status() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
print_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# Cleanup functions
|
|
cleanup_benchmark_artifacts() {
|
|
print_status "Cleaning benchmark artifacts..."
|
|
|
|
if [ -d "$LOCAL_ARTIFACTS_DIR" ]; then
|
|
local count_before=$(ls -1d "$LOCAL_ARTIFACTS_DIR"/run_* 2>/dev/null | wc -l)
|
|
local size_before=$(du -sh "$LOCAL_ARTIFACTS_DIR" 2>/dev/null | cut -f1 || echo "0B")
|
|
|
|
case "${1:-keep-10}" in
|
|
"all")
|
|
print_status "Removing ALL benchmark artifacts..."
|
|
rm -rf "$LOCAL_ARTIFACTS_DIR"
|
|
print_success "Removed all artifacts (was $size_before)"
|
|
;;
|
|
"keep-5")
|
|
print_status "Keeping last 5 runs, removing older ones..."
|
|
cd "$LOCAL_ARTIFACTS_DIR"
|
|
ls -1t run_* 2>/dev/null | tail -n +6 | xargs rm -rf 2>/dev/null || true
|
|
local count_after=$(ls -1d run_* 2>/dev/null | wc -l)
|
|
local size_after=$(du -sh . 2>/dev/null | cut -f1 || echo "0B")
|
|
print_success "Cleaned old runs: $count_before → $count_after runs ($size_before → $size_after)"
|
|
;;
|
|
"keep-10")
|
|
print_status "Keeping last 10 runs, removing older ones..."
|
|
cd "$LOCAL_ARTIFACTS_DIR"
|
|
ls -1t run_* 2>/dev/null | tail -n +11 | xargs rm -rf 2>/dev/null || true
|
|
local count_after=$(ls -1d run_* 2>/dev/null | wc -l)
|
|
local size_after=$(du -sh . 2>/dev/null | cut -f1 || echo "0B")
|
|
print_success "Cleaned old runs: $count_before → $count_after runs ($size_before → $size_after)"
|
|
;;
|
|
*)
|
|
print_error "Invalid cleanup level: ${1}"
|
|
print_status "Valid options: all, keep-5, keep-10"
|
|
return 1
|
|
;;
|
|
esac
|
|
else
|
|
print_warning "No benchmark artifacts directory found"
|
|
fi
|
|
}
|
|
|
|
cleanup_temp_files() {
|
|
print_status "Cleaning temporary files..."
|
|
|
|
# Clean temp directories
|
|
local temp_cleaned=0
|
|
|
|
# /tmp cleanup
|
|
if [ -d "/tmp" ]; then
|
|
local tmp_files=$(find /tmp -name "benchmark_*" -type f 2>/dev/null | wc -l)
|
|
if [ "$tmp_files" -gt 0 ]; then
|
|
find /tmp -name "benchmark_*" -type f -mmin +60 -delete 2>/dev/null || true
|
|
print_success "Cleaned $tmp_files temporary files from /tmp"
|
|
temp_cleaned=$((temp_cleaned + tmp_files))
|
|
fi
|
|
fi
|
|
|
|
# /var/tmp cleanup
|
|
if [ -d "/var/tmp" ]; then
|
|
local vartmp_files=$(find /var/tmp -name "benchmark_*" -type f 2>/dev/null | wc -l)
|
|
if [ "$vartmp_files" -gt 0 ]; then
|
|
find /var/tmp -name "benchmark_*" -type f -mmin +60 -delete 2>/dev/null || true
|
|
print_success "Cleaned $vartmp_files temporary files from /var/tmp"
|
|
temp_cleaned=$((temp_cleaned + vartmp_files))
|
|
fi
|
|
fi
|
|
|
|
# User temp cleanup
|
|
if [ -d "$HOME/tmp" ]; then
|
|
local user_tmp_files=$(find "$HOME/tmp" -name "benchmark_*" -type f 2>/dev/null | wc -l)
|
|
if [ "$user_tmp_files" -gt 0 ]; then
|
|
find "$HOME/tmp" -name "benchmark_*" -type f -mmin +60 -delete 2>/dev/null || true
|
|
print_success "Cleaned $user_tmp_files temporary files from ~/tmp"
|
|
temp_cleaned=$((temp_cleaned + user_tmp_files))
|
|
fi
|
|
fi
|
|
|
|
if [ "$temp_cleaned" -eq 0 ]; then
|
|
print_status "No temporary files to clean"
|
|
fi
|
|
}
|
|
|
|
cleanup_go_cache() {
|
|
print_status "Cleaning Go build cache..."
|
|
|
|
# Clean test cache
|
|
if command -v go >/dev/null 2>&1; then
|
|
local cache_before=$(go env GOCACHE 2>/dev/null || echo "")
|
|
if [ -n "$cache_before" ] && [ -d "$cache_before" ]; then
|
|
local cache_size_before=$(du -sh "$cache_before" 2>/dev/null | cut -f1 || echo "0B")
|
|
go clean -testcache 2>/dev/null || true
|
|
local cache_size_after=$(du -sh "$cache_before" 2>/dev/null | cut -f1 || echo "0B")
|
|
print_success "Cleaned Go test cache: $cache_size_before → $cache_size_after"
|
|
fi
|
|
|
|
# Clean build cache (optional, more aggressive)
|
|
if [ "${1:-}" = "aggressive" ]; then
|
|
go clean -cache 2>/dev/null || true
|
|
print_success "Cleaned Go build cache (aggressive)"
|
|
fi
|
|
else
|
|
print_warning "Go not found, skipping cache cleanup"
|
|
fi
|
|
}
|
|
|
|
cleanup_docker() {
|
|
print_status "Cleaning Docker artifacts..."
|
|
|
|
if command -v docker >/dev/null 2>&1; then
|
|
# Clean stopped containers with benchmark labels
|
|
local containers_removed=$(docker container prune -f --filter "label=benchmark" 2>/dev/null | grep "Total reclaimed space" | cut -d: -f2 | tr -d ' ' || echo "0B")
|
|
if [ "$containers_removed" != "0B" ]; then
|
|
print_success "Cleaned Docker containers: $containers_removed"
|
|
fi
|
|
|
|
# Clean unused images (aggressive mode only)
|
|
if [ "${1:-}" = "aggressive" ]; then
|
|
local images_removed=$(docker image prune -f 2>/dev/null | grep "Total reclaimed space" | cut -d: -f2 | tr -d ' ' || echo "0B")
|
|
if [ "$images_removed" != "0B" ]; then
|
|
print_success "Cleaned Docker images: $images_removed"
|
|
fi
|
|
fi
|
|
|
|
# Clean unused volumes (aggressive mode only)
|
|
if [ "${1:-}" = "aggressive" ]; then
|
|
local volumes_removed=$(docker volume prune -f 2>/dev/null | grep "Total reclaimed space" | cut -d: -f2 | tr -d ' ' || echo "0B")
|
|
if [ "$volumes_removed" != "0B" ]; then
|
|
print_success "Cleaned Docker volumes: $volumes_removed"
|
|
fi
|
|
fi
|
|
else
|
|
print_warning "Docker not found, skipping Docker cleanup"
|
|
fi
|
|
}
|
|
|
|
cleanup_logs() {
|
|
print_status "Cleaning log files..."
|
|
|
|
# Clean old log files
|
|
local log_dirs=("$PROJECT_ROOT/logs" "$HOME/.local/share/fetch_ml/logs")
|
|
|
|
for log_dir in "${log_dirs[@]}"; do
|
|
if [ -d "$log_dir" ]; then
|
|
local log_size_before=$(du -sh "$log_dir" 2>/dev/null | cut -f1 || echo "0B")
|
|
# Remove log files older than 7 days
|
|
find "$log_dir" -name "*.log" -type f -mtime +7 -delete 2>/dev/null || true
|
|
find "$log_dir" -name "*.log.*" -type f -mtime +7 -delete 2>/dev/null || true
|
|
local log_size_after=$(du -sh "$log_dir" 2>/dev/null | cut -f1 || echo "0B")
|
|
if [ "$log_size_before" != "$log_size_after" ]; then
|
|
print_success "Cleaned old logs in $log_dir: $log_size_before → $log_size_after"
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
show_disk_usage() {
|
|
print_status "Current disk usage:"
|
|
|
|
# Project root
|
|
if [ -d "$PROJECT_ROOT" ]; then
|
|
local project_size=$(du -sh "$PROJECT_ROOT" 2>/dev/null | cut -f1 || echo "N/A")
|
|
echo " Project: $project_size"
|
|
fi
|
|
|
|
# Artifacts
|
|
if [ -d "$LOCAL_ARTIFACTS_DIR" ]; then
|
|
local artifacts_size=$(du -sh "$LOCAL_ARTIFACTS_DIR" 2>/dev/null | cut -f1 || echo "0B")
|
|
local artifacts_count=$(ls -1d "$LOCAL_ARTIFACTS_DIR"/run_* 2>/dev/null | wc -l)
|
|
echo " Artifacts: $artifacts_size ($artifacts_count runs)"
|
|
fi
|
|
|
|
# Go cache
|
|
if command -v go >/dev/null 2>&1; then
|
|
local gocache=$(go env GOCACHE 2>/dev/null || echo "")
|
|
if [ -n "$gocache" ] && [ -d "$gocache" ]; then
|
|
local cache_size=$(du -sh "$gocache" 2>/dev/null | cut -f1 || echo "0B")
|
|
echo " Go cache: $cache_size"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
# Main execution
|
|
main() {
|
|
echo "=== Benchmark Cleanup Script ==="
|
|
echo ""
|
|
|
|
case "${1:-help}" in
|
|
"artifacts")
|
|
cleanup_benchmark_artifacts "${2:-keep-10}"
|
|
;;
|
|
"temp")
|
|
cleanup_temp_files
|
|
;;
|
|
"go")
|
|
cleanup_go_cache "${2:-}"
|
|
;;
|
|
"docker")
|
|
cleanup_docker "${2:-}"
|
|
;;
|
|
"logs")
|
|
cleanup_logs
|
|
;;
|
|
"benchmarks")
|
|
print_status "Running standard benchmark cleanup..."
|
|
cleanup_benchmark_artifacts "keep-10"
|
|
cleanup_temp_files
|
|
cleanup_go_cache
|
|
;;
|
|
"all")
|
|
print_status "Running comprehensive cleanup..."
|
|
cleanup_benchmark_artifacts "keep-5"
|
|
cleanup_temp_files
|
|
cleanup_go_cache
|
|
cleanup_docker
|
|
cleanup_logs
|
|
;;
|
|
"aggressive")
|
|
print_warning "Running AGGRESSIVE cleanup - this will remove more data!"
|
|
read -p "Are you sure? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
cleanup_benchmark_artifacts "keep-5"
|
|
cleanup_temp_files
|
|
cleanup_go_cache "aggressive"
|
|
cleanup_docker "aggressive"
|
|
cleanup_logs
|
|
else
|
|
print_status "Aggressive cleanup cancelled"
|
|
exit 0
|
|
fi
|
|
;;
|
|
"status")
|
|
show_disk_usage
|
|
;;
|
|
"help"|*)
|
|
echo "Benchmark Cleanup Script"
|
|
echo ""
|
|
echo "Usage: $0 <command> [options]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " artifacts [all|keep-5|keep-10] Clean benchmark artifacts"
|
|
echo " temp Clean temporary files"
|
|
echo " go [aggressive] Clean Go build cache"
|
|
echo " docker [aggressive] Clean Docker artifacts"
|
|
echo " logs Clean old log files"
|
|
echo " benchmarks Standard benchmark cleanup"
|
|
echo " all Comprehensive cleanup"
|
|
echo " aggressive Aggressive cleanup (more data removed)"
|
|
echo " status Show current disk usage"
|
|
echo " help Show this help"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " $0 benchmarks # Standard cleanup"
|
|
echo " $0 artifacts keep-5 # Keep last 5 runs"
|
|
echo " $0 all # Comprehensive cleanup"
|
|
echo " $0 aggressive # Aggressive cleanup"
|
|
;;
|
|
esac
|
|
|
|
echo ""
|
|
print_success "Cleanup completed!"
|
|
|
|
# Show final status
|
|
if [ "${1:-}" != "status" ] && [ "${1:-}" != "help" ]; then
|
|
echo ""
|
|
show_disk_usage
|
|
fi
|
|
}
|
|
|
|
main "$@"
|