Skip to content

Instantly share code, notes, and snippets.

@joe-at-cp
Last active January 14, 2022 17:50
Show Gist options
  • Select an option

  • Save joe-at-cp/26a439aefacff2054ca2ce81fd1a5c64 to your computer and use it in GitHub Desktop.

Select an option

Save joe-at-cp/26a439aefacff2054ca2ce81fd1a5c64 to your computer and use it in GitHub Desktop.
Virtual Performance Testing Config
#!/bin/bash
# ---------------------------------------------------------------
# PerfPrep.sh - Joe Dillig
# Prepares Ubuntu Servers for Virtual Performance Testing
# Uses Nginx to host a web server on port 80 and 443 with ssl
# ---------------------------------------------------------------
#Download Tools
sudo apt-get update
sudo apt-get install -y nload traceroute net-tools iftop iptraf iptraf-ng bmon slurm tcptrack bwm-ng cbm speedometer pktstat netdiag nginx apache2-utils iperf3 tree
#Disable Firewall
sudo ufw disable
#Create SelfSigned SSL Certificate
sudo mkdir -p /etc/nginx/ssl/private/
sudo mkdir -p /etc/nginx/ssl/cert/
sudo openssl req -subj '/CN=perftest.com/O=PerformanceTesting/C=US' -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout /etc/nginx/ssl/private/sslcert.key -out /etc/nginx/ssl/cert/sslcert.crt
#Create SSL Nginx Server
sudo echo 'server {' > /etc/nginx/sites-available/ssl
sudo echo ' server_name .sitename.com;' >> /etc/nginx/sites-available/ssl
sudo echo ' listen 443 ssl;' >> /etc/nginx/sites-available/ssl
sudo echo ' root /var/www/html;' >> /etc/nginx/sites-available/ssl
sudo echo '' >> /etc/nginx/sites-available/ssl
sudo echo 'ssl_certificate /etc/nginx/ssl/cert/sslcert.crt;' >> /etc/nginx/sites-available/ssl
sudo echo 'ssl_certificate_key /etc/nginx/ssl/private/sslcert.key;' >> /etc/nginx/sites-available/ssl
sudo echo '' >> /etc/nginx/sites-available/ssl
sudo echo 'ssl_session_cache shared:SSL:1m;' >> /etc/nginx/sites-available/ssl
sudo echo 'ssl_session_timeout 5m;' >> /etc/nginx/sites-available/ssl
sudo echo '' >> /etc/nginx/sites-available/ssl
sudo echo ' location / {' >> /etc/nginx/sites-available/ssl
sudo echo ' index sslindex.html;' >> /etc/nginx/sites-available/ssl
sudo echo ' }' >> /etc/nginx/sites-available/ssl
sudo echo '}' >> /etc/nginx/sites-available/ssl
sudo ln -s /etc/nginx/sites-available/ssl /etc/nginx/sites-enabled/ssl
#Create Index
sudo echo '<h1>SSL Virtual Perfomance Testing</h1>' > /var/www/html/sslindex.html
sudo echo '<br>' >> /var/www/html/sslindex.html
sudo echo '<a href="/1mb" target="1mb">1 MB Download</a><br>' >> /var/www/html/sslindex.html
sudo echo '<a href="/5mb" target="5mb">5 MB Download</a><br>' >> /var/www/html/sslindex.html
sudo echo '<a href="/10mb" target="10mb">10 MB Download</a><br>' >> /var/www/html/sslindex.html
sudo echo '<a href="/100mb" target="100mb">100 MB Download</a><br>' >> /var/www/html/sslindex.html
sudo echo '<a href="/500mb" target="500mb">500 MB Download</a><br>' >> /var/www/html/sslindex.html
sudo echo '<a href="/1gb" target="1gb">1 GB Download</a><br>' >> /var/www/html/sslindex.html
sudo echo '<a href="/5gb" target="5gb">5 GB Download</a><br>' >> /var/www/html/sslindex.html
sudo echo '<h1>Virtual Perfomance Testing</h1>' > /var/www/html/index.html
sudo echo '<br>' >> /var/www/html/index.html
sudo echo '<a href="/1mb" target="1mb">1 MB Download</a><br>' >> /var/www/html/index.html
sudo echo '<a href="/5mb" target="5mb">5 MB Download</a><br>' >> /var/www/html/index.html
sudo echo '<a href="/10mb" target="10mb">10 MB Download</a><br>' >> /var/www/html/index.html
sudo echo '<a href="/100mb" target="100mb">100 MB Download</a><br>' >> /var/www/html/index.html
sudo echo '<a href="/500mb" target="500mb">500 MB Download</a><br>' >> /var/www/html/index.html
sudo echo '<a href="/1gb" target="1gb">1 GB Download</a><br>' >> /var/www/html/index.html
sudo echo '<a href="/5gb" target="5gb">5 GB Download</a><br>' >> /var/www/html/index.html
sudo systemctl restart nginx
#Generate Downloadable Files
mkdir -p /var/www/html/
sudo dd if=/dev/zero of=/var/www/html/1mb bs=1024 count=1
sudo dd if=/dev/zero of=/var/www/html/5mb bs=1024 count=5120
sudo dd if=/dev/zero of=/var/www/html/10mb bs=1024 count=10240
sudo dd if=/dev/zero of=/var/www/html/100mb bs=1024 count=102400
sudo dd if=/dev/zero of=/var/www/html/500mb bs=1024 count=512000
sudo dd if=/dev/zero of=/var/www/html/1gb bs=1024 count=1024000
sudo dd if=/dev/zero of=/var/www/html/5gb bs=1024 count=5120000
echo "Done"
@joe-at-cp
Copy link
Author

joe-at-cp commented Aug 27, 2020

Run this script on an Ubuntu Server VM to prepare a virtual performance testing environment. This script can also be embedded into the userdata field upon provisioning.

@joe-at-cp
Copy link
Author

  • Added Nginx site on 443 with a self signed certificate for SSL testing
  • Added different index.html files for each nginx site with links to download each file size

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment