Skip to content

gburiola/webpagetest-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

webpagetest-utils

Collection of scripts to automate / expand webpagetest on AWS

Pre-requisites

  • AWS account
  • AWS command lines tools
  • Security group rule allowing you to connect to port 80 on the server
  • Security group rule allowing test agents to talk to server
  • Security group rule allowing you to connect to port 22(SSH) and 3389(RDP) [OPTIONAL] Security group screenshoot

Creating the instances

Set variables

KEY contains the secret key used between the agents and the server. If you don't have pwgen or prefer to use a custom key just replace the code below with your prefered password

KEY=$(pwgen --ambiguous 40 1)
REGION="eu-west-1"
OUTPUT="/tmp/webpagetest-server.out"
PROFILE="default"
SSH_KEY="webpagetest"
SERVER_AMI="ami-748e2903"
SERVER_SIZE="c3.large"
AGENT_AMI="ami-ecb3409b"
AGENT_SIZE="m3.medium"

Lauch webpagetest server

CLOUD_INIT_SCRIPT="curl https://raw.githubusercontent.com/gburiola/webpagetest-utils/master/install-webpagetest.sh"
ENC_USER_DATA=$(sed "s/secret_key_placeholder/${KEY}/" $CLOUD_INIT_SCRIPT | base64 --wrap=0)
aws ec2 run-instances \
  --profile $PROFILE \
  --count 1 \
  --key-name $SSH_KEY \
  --region $REGION \
  --image-id $SERVER_AMI \
  --user-data "$ENC_USER_DATA" \
  --instance-type $SERVER_SIZE \
  --output json > $OUTPUT

Get public hostname of your server

This information is used to configure the test agents This is usually available a few seconds after you create a new instance

INSTANCE=$(grep InstanceId $OUTPUT | head -1 | awk -F\" '{print $4}')
SERVER=$(aws ec2 --profile $PROFILE describe-instances --output json --instance-ids $INSTANCE | grep PublicDnsName | head -1 | awk -F\" '{print $4}')

Launch webpagetest test agents

Set variables for user-data

AGENT_USER_DATA="wpt_server=${SERVER} wpt_key=${KEY} wpt_location=${REGION}"
AGENT_ENC_USER_DATA=$(echo $USER_DATA | base64 --wrap=0)

Launch on demand instances

aws ec2 run-instances \
  --profile $PROFILE \
  --count 1 \
  --region $REGION \
  --image-id $AGENT_AMI \
  --user-data "$AGENT_ENC_USER_DATA" \
  --instance-type $AGENT_SIZE

Launch spot instances

aws ec2 request-spot-instances \
  --profile $PROFILE \
  --spot-price "0.075" \
  --instance-count 1 \
  --region $REGION \
  --type "one-time" \
  --launch-specification "{\"ImageId\":\"${AGENT_AMI}\",\"InstanceType\":\"${AGENT_SIZE}\",\"UserData\":\"${AGENT_ENC_USER_DATA}\"}"

Running the tests

URL=www.net-a-porter.com/apac/Shop/Whats-New
RUNS=3
curl -v "http://$SERVER/runtest.php?url=${URL}&runs=${RUNS}&location=${REGION}_wptdriver:Chrome"

Additional info

If you need to connect to the Windows test agents to troubleshoot anything use:

user: administrator
password: 2dialit

As described on the webpagetest documentation, the AMI search on the AWS console doesn't always work. It does work on the command line. To view all available test agent AMIs on a specific region run:

aws ec2 describe-images \
  --region $REGION \
  --owners 314854558937 \
  --output json

Links

https://sites.google.com/a/webpagetest.org/docs/private-instances http://www.webpagetest.org/ https://github.com/WPO-Foundation/webpagetest

About

Collection of scripts to automate / expand webpagetest

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages