Download scripts/testing/simulate-memory-load.sh from AUXteam/pinch: direct link, hf CLI and curl.
- Browser
- Download file 3.82 kB
-
https://huggingface.co/spaces/AUXteam/pinch/resolve/main/scripts/testing/simulate-memory-load.sh
- Command line
-
hf download hf://spaces/AUXteam/pinch/scripts/testing/simulate-memory-load.sh
-
curl -L -o simulate-memory-load.sh https://huggingface.co/spaces/AUXteam/pinch/resolve/main/scripts/testing/simulate-memory-load.sh
3.82 kB
| set -euo pipefail | |
| # Simulate memory load by launching headless instances and filling them with tabs. | |
| # Use alongside the monitoring dashboard to watch memory usage grow. | |
| # | |
| # Usage: | |
| # ./scripts/simulate-memory-load.sh [host:port] [instances] [tabs-per-instance] | |
| # | |
| # Examples: | |
| # ./scripts/simulate-memory-load.sh # 2 instances, 10 tabs each | |
| # ./scripts/simulate-memory-load.sh localhost:9867 3 20 # 3 instances, 20 tabs each | |
| # | |
| # Prerequisites: | |
| # - pinchtab running in server mode: ./pinchtab server | |
| # - Chrome installed | |
| HOST="${1:-localhost:9867}" | |
| NUM_INSTANCES="${2:-2}" | |
| TABS_PER_INSTANCE="${3:-10}" | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| CYAN='\033[0;36m' | |
| NC='\033[0m' | |
| URLS=( | |
| "https://en.wikipedia.org/wiki/Main_Page" | |
| "https://news.ycombinator.com" | |
| "https://github.com/trending" | |
| "https://developer.mozilla.org/en-US/" | |
| "https://www.bbc.com/news" | |
| "https://stackoverflow.com/questions" | |
| "https://www.reddit.com/r/programming" | |
| "https://docs.github.com" | |
| "https://go.dev/doc/" | |
| "https://react.dev" | |
| "https://www.typescriptlang.org/docs/" | |
| "https://kubernetes.io/docs/home/" | |
| "https://www.rust-lang.org" | |
| "https://nodejs.org/en/docs" | |
| "https://www.postgresql.org/docs/" | |
| ) | |
| api() { | |
| local method="$1" path="$2" | |
| shift 2 | |
| curl -s -X "$method" "http://${HOST}${path}" \ | |
| -H "Content-Type: application/json" \ | |
| "$@" | |
| } | |
| echo -e "${CYAN}Memory Load Simulator${NC}" | |
| echo -e "Target: ${HOST}" | |
| echo -e "Instances to launch: ${NUM_INSTANCES}" | |
| echo -e "Tabs per instance: ${TABS_PER_INSTANCE}" | |
| echo "" | |
| # Check server is up | |
| STATUS=$(curl -s -o /dev/null -w "%{http_code}" "http://${HOST}/health" 2>/dev/null || echo "000") | |
| if [ "$STATUS" != "200" ]; then | |
| echo -e "${RED}β Server not reachable at ${HOST} (HTTP ${STATUS})${NC}" | |
| echo " Start pinchtab first: ./pinchtab server" | |
| exit 1 | |
| fi | |
| echo -e "${GREEN}β Server healthy${NC}" | |
| echo "" | |
| INSTANCE_IDS=() | |
| # Phase 1: Launch instances | |
| echo -e "${YELLOW}Phase 1: Launching ${NUM_INSTANCES} headless instances...${NC}" | |
| for i in $(seq 1 "$NUM_INSTANCES"); do | |
| RESULT=$(api POST "/instances/launch" -d '{"mode":"headless"}') | |
| ID=$(echo "$RESULT" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) | |
| if [ -z "$ID" ]; then | |
| echo -e " ${RED}β Failed to launch instance ${i}: ${RESULT}${NC}" | |
| continue | |
| fi | |
| INSTANCE_IDS+=("$ID") | |
| echo -e " ${GREEN}β Instance ${i}: ${ID}${NC}" | |
| sleep 1 | |
| done | |
| if [ ${#INSTANCE_IDS[@]} -eq 0 ]; then | |
| echo -e "${RED}No instances launched. Exiting.${NC}" | |
| exit 1 | |
| fi | |
| # Wait for instances to be ready | |
| echo "" | |
| echo -e "${YELLOW}Waiting for instances to initialize...${NC}" | |
| sleep 3 | |
| # Phase 2: Open tabs | |
| echo "" | |
| echo -e "${YELLOW}Phase 2: Opening ${TABS_PER_INSTANCE} tabs per instance...${NC}" | |
| for ID in "${INSTANCE_IDS[@]}"; do | |
| echo -e " ${CYAN}Instance ${ID}:${NC}" | |
| for j in $(seq 1 "$TABS_PER_INSTANCE"); do | |
| URL_IDX=$(( (j - 1) % ${#URLS[@]} )) | |
| URL="${URLS[$URL_IDX]}" | |
| RESULT=$(api POST "/instances/${ID}/tabs/open" -d "{\"url\":\"${URL}\"}" 2>/dev/null) | |
| printf "\r Opened %d/%d tabs" "$j" "$TABS_PER_INSTANCE" | |
| sleep 0.5 | |
| done | |
| echo -e "\r ${GREEN}β Opened ${TABS_PER_INSTANCE} tabs${NC}" | |
| done | |
| # Phase 3: Summary | |
| echo "" | |
| echo -e "${GREEN}Done!${NC}" | |
| echo "" | |
| echo -e "${CYAN}Monitor memory in the dashboard:${NC}" | |
| echo -e " 1. Open http://${HOST} β Monitoring tab" | |
| echo -e " 2. Enable 'Memory Metrics' in Settings" | |
| echo -e " 3. Watch JS heap grow as pages load" | |
| echo "" | |
| echo -e "${CYAN}Check metrics via API:${NC}" | |
| for ID in "${INSTANCE_IDS[@]}"; do | |
| echo -e " curl http://${HOST}/instances/${ID}/tabs" | |
| done | |
| echo "" | |
| echo -e "${CYAN}Cleanup β stop all instances:${NC}" | |
| for ID in "${INSTANCE_IDS[@]}"; do | |
| echo -e " curl -X POST http://${HOST}/instances/${ID}/stop" | |
| done | |