#!/bin/bash # Test script to verify tmpfs detection functionality # This script can be run without root to test the detection logic set -euo pipefail # Colors BLUE='\033[0;34m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' log() { echo -e "${BLUE}[TEST]${NC} $1" } success() { echo -e "${GREEN}[FOUND]${NC} $1" } warn() { echo -e "${YELLOW}[INFO]${NC} $1" } echo "🔍 Testing tmpfs Detection Functionality" echo "==============================================" echo "" # Test the cache directory detection logic test_cache_detection() { log "Testing cache directory detection..." local found_caches=0 # Browser caches log "Scanning for browser installations..." # Firefox cache find /home -path "*/.mozilla/firefox/*/storage" -type d 2>/dev/null | while read firefox_dir; do local profile_dir=$(dirname "$firefox_dir") local cache_dir="$profile_dir/storage" if [[ -d "$cache_dir" ]]; then local size=$(du -sh "$cache_dir" 2>/dev/null | cut -f1) success "Firefox cache: $cache_dir ($size)" ((found_caches++)) fi done # Chrome/Chromium cache find /home -path "*/.config/google-chrome/*/storage" -o -path "*/.config/chromium/*/storage" -type d 2>/dev/null | while read chrome_dir; do if [[ -d "$chrome_dir" ]]; then local size=$(du -sh "$chrome_dir" 2>/dev/null | cut -f1) local browser_type=$(echo "$chrome_dir" | grep -o -E "(google-chrome|chromium)") success "$browser_type cache: $chrome_dir ($size)" ((found_caches++)) fi done # VS Code cache find /home -path "*/.config/Code/CachedData" -type d 2>/dev/null | while read vscode_cache; do if [[ -d "$vscode_cache" ]]; then local size=$(du -sh "$vscode_cache" 2>/dev/null | cut -f1) success "VS Code cache: $vscode_cache ($size)" ((found_caches++)) fi done # VS Code extensions find /home -path "*/.vscode/extensions" -type d 2>/dev/null | while read vscode_ext; do if [[ -d "$vscode_ext" ]]; then local size=$(du -sh "$vscode_ext" 2>/dev/null | cut -f1) success "VS Code extensions: $vscode_ext ($size)" ((found_caches++)) fi done # Package manager caches if [[ -d /var/cache/apt ]]; then local size=$(du -sh /var/cache/apt 2>/dev/null | cut -f1) success "APT cache: /var/cache/apt ($size)" ((found_caches++)) fi if [[ -d /var/cache/pacman ]]; then local size=$(du -sh /var/cache/pacman 2>/dev/null | cut -f1) success "Pacman cache: /var/cache/pacman ($size)" ((found_caches++)) fi # Thumbnail caches find /home -path "*/.cache/thumbnails" -type d 2>/dev/null | while read thumb_dir; do if [[ -d "$thumb_dir" ]]; then local size=$(du -sh "$thumb_dir" 2>/dev/null | cut -f1) success "Thumbnail cache: $thumb_dir ($size)" ((found_caches++)) fi done # General user caches find /home -maxdepth 3 -type d -name ".cache" 2>/dev/null | while read cache_dir; do if [[ -d "$cache_dir" ]]; then local size=$(du -sh "$cache_dir" 2>/dev/null | cut -f1) success "User cache: $cache_dir ($size)" ((found_caches++)) fi done # Node.js projects (for developers) if command -v node >/dev/null 2>&1; then log "Node.js detected, scanning for projects..." find /home -name "node_modules" -type d 2>/dev/null | head -5 | while read node_dir; do if [[ -d "$node_dir" ]]; then local size=$(du -sh "$node_dir" 2>/dev/null | cut -f1) success "Node modules: $node_dir ($size)" ((found_caches++)) fi done fi echo "" log "Cache detection complete" } # Test tmpfs sizing recommendations test_sizing_recommendations() { log "Testing tmpfs sizing recommendations..." local ram_gb=$(free -g | awk '/^Mem:/{print $2}') log "Detected RAM: ${ram_gb}GB" # Calculate recommended sizes local browser_size="1G" local ide_size="512M" local packages_size="1G" local thumbnails_size="256M" if [[ $ram_gb -ge 16 ]]; then browser_size="4G" ide_size="2G" packages_size="3G" thumbnails_size="512M" warn "High-memory system detected - recommending aggressive tmpfs sizes" elif [[ $ram_gb -ge 8 ]]; then browser_size="2G" ide_size="1G" packages_size="2G" thumbnails_size="256M" warn "Medium-memory system detected - recommending moderate tmpfs sizes" else warn "Low-memory system detected - recommending conservative tmpfs sizes" fi echo " 📦 Recommended sizes:" echo " Browser cache: $browser_size" echo " IDE cache: $ide_size" echo " Package cache: $packages_size" echo " Thumbnails: $thumbnails_size" echo " Total tmpfs: ~$((${browser_size%G} + ${ide_size%G} + ${packages_size%G}))GB" echo "" } # Test current tmpfs status test_current_tmpfs() { log "Checking current tmpfs status..." local tmpfs_count=$(mount -t tmpfs | wc -l) log "Current tmpfs mounts: $tmpfs_count" if [[ $tmpfs_count -gt 0 ]]; then echo " Current tmpfs filesystems:" mount -t tmpfs | while IFS= read -r line; do echo " $line" done fi # Check for our specific tmpfs-cache directory if [[ -d /tmp/tmpfs-cache ]]; then success "tmpfs-cache directory exists" ls -la /tmp/tmpfs-cache/ 2>/dev/null | tail -n +2 | while read line; do echo " $line" done else warn "tmpfs-cache directory not found" fi echo "" } # Main test execution main() { test_current_tmpfs test_cache_detection test_sizing_recommendations echo "✅ Detection test complete!" echo "" echo "💡 To apply tmpfs optimizations, run:" echo " sudo ./one-button-optimizer.sh" } main "$@"