Skip to content

Instantly share code, notes, and snippets.

@chillu
Last active December 14, 2015 21:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save chillu/5150951 to your computer and use it in GitHub Desktop.
Save chillu/5150951 to your computer and use it in GitHub Desktop.
#/bin/bash
# Compares response times on a specific URL on different SilverStripe versions.
#
# USAGE: bench.sh <base-path> <base-url>
basepath=$1
baseurl=$2
urls="/?flush=all /"
abparams="-n 10"
version="2.4.x-dev"
versionpath="bench-2-4-x-dev"
echo " "
echo "###################################################"
echo "Benchmarking $version..."
echo "###################################################"
if [ ! -d "$basepath/$versionpath" ]; then
composer create-project -n --prefer-dist silverstripe/installer "$basepath/$versionpath" $version
cat << 'EOF' > "$basepath/$versionpath"/mysite/_config.php
<?php
global $project;
$project = 'mysite';
global $database;
$database = 'SS_bench24';
require_once('conf/ConfigureFromEnv.php');
SSViewer::set_theme('blackcandy');
BasicAuth::protect_entire_site(false);
Director::set_environment_type('dev');
EOF
sed -ibak "s/RewriteEngine On/RewriteEngine On\\
RewriteBase '\/$versionpath'/g" "$basepath/$versionpath"/.htaccess
fi
curl --silent $baseurl/$versionpath/dev/build > /dev/null
for url in $urls; do
fullurl="$baseurl/$versionpath$url"
echo "## Testing $fullurl"
curl --silent $fullurl > /dev/null # prime cache
ab $abparams $fullurl | grep "Time \|Complete\|Failed"
done
version="3.0.x-dev"
versionpath="bench-3-0-x-dev"
echo " "
echo "###################################################"
echo "Benchmarking $version..."
echo "###################################################"
if [ ! -d "$basepath/$versionpath" ]; then
composer create-project -n --prefer-dist silverstripe/installer "$basepath/$versionpath" $version
cat << 'EOF' > "$basepath/$versionpath"/mysite/_config.php
<?php
global $project;
$project = 'mysite';
global $database;
$database = 'SS_bench30';
require_once('conf/ConfigureFromEnv.php');
SSViewer::set_theme('simple');
BasicAuth::protect_entire_site(false);
Director::set_environment_type('dev');
EOF
sed -ibak "s/RewriteEngine On/RewriteEngine On\\
RewriteBase '\/$versionpath'/g" "$basepath/$versionpath"/.htaccess
fi
curl --silent $baseurl/$versionpath/dev/build > /dev/null
for url in $urls; do
fullurl="$baseurl/$versionpath$url"
echo "## Testing $fullurl"
curl --silent $fullurl > /dev/null # prime cache
ab $abparams $fullurl | grep "Time \|Complete\|Failed"
done
version="3.1.0-beta2"
versionpath="bench-3-1-0-beta2"
echo " "
echo "###################################################"
echo "Benchmarking $version..."
echo "###################################################"
if [ ! -d "$basepath/$versionpath" ]; then
composer create-project -n --prefer-dist silverstripe/installer "$basepath/$versionpath" $version
cat << 'EOF' > "$basepath/$versionpath"/mysite/_config.php
<?php
global $project;
$project = 'mysite';
global $database;
$database = 'SS_bench310beta2';
require_once('conf/ConfigureFromEnv.php');
SSViewer::set_theme('simple');
BasicAuth::protect_entire_site(false);
Director::set_environment_type('dev');
EOF
sed -ibak "s/RewriteEngine On/RewriteEngine On\\
RewriteBase '\/$versionpath'/g" "$basepath/$versionpath"/.htaccess
fi
# Caution: Version isn't locked properly in composer
(cd "$basepath/$versionpath"/framework/ && git checkout $version)
curl --silent $baseurl/$versionpath/dev/build > /dev/null
for url in $urls; do
fullurl="$baseurl/$versionpath$url"
echo "## Testing $fullurl"
curl --silent $fullurl > /dev/null # prime cache
ab $abparams $fullurl | grep "Time \|Complete\|Failed"
done
version="3.1.x-dev"
versionpath="bench-3-1-x-dev"
echo " "
echo "###################################################"
echo "Benchmarking $version..."
echo "###################################################"
if [ ! -d "$basepath/$versionpath" ]; then
composer create-project -n --prefer-dist silverstripe/installer "$basepath/$versionpath" $version
cat << 'EOF' > "$basepath/$versionpath"/mysite/_config.php
<?php
global $project;
$project = 'mysite';
global $database;
$database = 'SS_bench31';
require_once('conf/ConfigureFromEnv.php');
SSViewer::set_theme('simple');
BasicAuth::protect_entire_site(false);
Director::set_environment_type('dev');
EOF
sed -ibak "s/RewriteEngine On/RewriteEngine On\\
RewriteBase '\/$versionpath'/g" "$basepath/$versionpath"/.htaccess
fi
curl --silent $baseurl/$versionpath/dev/build > /dev/null
for url in $urls; do
fullurl="$baseurl/$versionpath$url"
echo "## Testing $fullurl"
curl --silent $fullurl > /dev/null # prime cache
ab $abparams $fullurl | grep "Time \|Complete\|Failed"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment