blob: 4e11c2ac2e60cd72fc137391d7488cd27c6d5e29 [file] [log] [blame]
#!/bin/bash
# Copyright 2010 Google Inc. All Rights Reserved.
# Author: abliss@google.com (Adam Bliss)
#
# Usage: ./stress_test.sh HOSTPORT
# Stress-tests a mod_pagespeed installation. This currently takes about 15sec.
# Exits with status 0 if all tests pass. Exits 1 immediately if any test fails.
# You should probably wipe out your cache and restart the server before starting
# the test.
if [ $# != 1 ]; then
echo Usage: ./stress_test.sh HOSTPORT;
exit 2;
fi;
HOSTPORT=$1
TEST_DIR=/tmp/mod_pagespeed_stress_test.$USER;
mkdir -p $TEST_DIR;
cd $TEST_DIR;
echo "Starting 10 simultaneous recursive wgets"
X=0;
PIDS="";
while [ $X -lt 10 ]; do
wget -q -P $X -p http://$HOSTPORT/mod_pagespeed_example/stress_test.html &
PIDS="$PIDS $!";
X=$((X+1));
done;
# Monitor the number of processes for 10 seconds
echo;
echo;
MAX=0;
X=22;
if [ $TERM == dumb ]; then
OVERWRITE=""
else
OVERWRITE="\033[2A"
fi
while [ $X -ge 0 ]; do
NUM=` ps -efww|egrep 'bin/[h]ttpd|bin/[a]pache'|wc -l`
if [ $NUM -gt $MAX ]; then
MAX=$NUM;
fi;
/bin/echo -e "${OVERWRITE}Apache processes: $NUM ";
echo "Time remaining: $((X/2)) "
sleep 0.5;
X=$((X-1))
done;
echo "Test complete; killing wgets"
kill $PIDS 2>/dev/null;
if [ $MAX -gt 100 ]; then
echo "FAIL: $MAX processes were spawned.";
RETURN_VAL=1;
else
echo "PASS."
RETURN_VAL=0;
fi;
exit $RETURN_VAL;