Skip to content
Browse files

dho-qa: Add siege config file and document running siege

Adds siege.conf file for siege configuration options
Adds docstring to main function in generate_objects.py describing how to run
the static content load test.
  • Loading branch information...
1 parent 3a3cbb3 commit 951dc0fcdb85a0e4601bc27fa7998fed02afe697 @kylemarsh kylemarsh committed Jul 6, 2011
Showing with 395 additions and 2 deletions.
  1. +1 −2 generate_objects.conf
  2. +12 −0 generate_objects.py
  3. +382 −0 siege.conf
View
3 generate_objects.conf
@@ -1,3 +1,2 @@
-- [3, 20, 5]
-- [3, 30, 2]
+- [10, 2000, 200]
View
12 generate_objects.py
@@ -91,6 +91,18 @@ def generate_objects(bucket, quantity, mean, stddev, seed, checksum=False):
def main():
+ '''To run the static content load test:
+ ./generate_objects.py -a S3_ACCESS_KEY -s S3_SECRET_KEY -O urls.txt --seed 1234 generate_objects.conf && siege -rc ./siege.conf -r 5
+
+ This creates a bucket with your S3 credentials and fills it with
+ garbage objects as described in generate_objects.conf. It writes a
+ list of URLS to those objects to ./urls.txt. siege then reads the
+ ./siege.conf config file which tells it to read from ./urls.txt and
+ log to ./siege.log and hammers each url in urls.txt 5 times (-r flag).
+
+ Results are printed to the terminal and written in CSV format to
+ ./siege.log
+ '''
(options, args) = parse_opts();
#SETUP
View
382 siege.conf
@@ -0,0 +1,382 @@
+# Updated by Siege 2.69, May-24-2010
+# Copyright 2000-2007 by Jeffrey Fulmer, et al.
+#
+# Siege configuration file -- edit as necessary
+# For more information about configuring and running
+# this program, visit: http://www.joedog.org/
+
+#
+# Variable declarations. You can set variables here
+# for use in the directives below. Example:
+# PROXY = proxy.joedog.org
+# Reference variables inside ${} or $(), example:
+# proxy-host = ${PROXY}
+# You can also reference ENVIRONMENT variables without
+# actually declaring them, example:
+# logfile = $(HOME)/var/siege.log
+
+#
+# Signify verbose mode, true turns on verbose output
+# ex: verbose = true|false
+#
+verbose = true
+
+#
+# CSV Verbose format: with this option, you can choose
+# to format verbose output in traditional siege format
+# or comma separated format. The latter will allow you
+# to redirect output to a file for import into a spread
+# sheet, i.e., siege > file.csv
+# ex: csv = true|false (default false)
+#
+csv = true
+
+#
+# Full URL verbose format: By default siege displays
+# the URL path and not the full URL. With this option,
+# you # can instruct siege to show the complete URL.
+# ex: fullurl = true|false (default false)
+#
+# fullurl = true
+
+#
+# Display id: in verbose mode, display the siege user
+# id associated with the HTTP transaction information
+# ex: display-id = true|false
+#
+# display-id =
+
+#
+# Show logfile location. By default, siege displays the
+# logfile location at the end of every run when logging
+# You can turn this message off with this directive.
+# ex: show-logfile = false
+#
+show-logfile = true
+
+#
+# Default logging status, true turns logging on.
+# ex: logging = true|false
+#
+logging = true
+
+#
+# Logfile, the default siege logfile is $PREFIX/var/siege.log
+# This directive allows you to choose an alternative log file.
+# Environment variables may be used as shown in the examples:
+# ex: logfile = /home/jeff/var/log/siege.log
+# logfile = ${HOME}/var/log/siege.log
+# logfile = ${LOGFILE}
+#
+logfile = ./siege.log
+
+#
+# HTTP protocol. Options HTTP/1.1 and HTTP/1.0.
+# Some webservers have broken implementation of the
+# 1.1 protocol which skews throughput evaluations.
+# If you notice some siege clients hanging for
+# extended periods of time, change this to HTTP/1.0
+# ex: protocol = HTTP/1.1
+# protocol = HTTP/1.0
+#
+protocol = HTTP/1.1
+
+#
+# Chunked encoding is required by HTTP/1.1 protocol
+# but siege allows you to turn it off as desired.
+#
+# ex: chunked = true
+#
+chunked = true
+
+#
+# Cache revalidation.
+# Siege supports cache revalidation for both ETag and
+# Last-modified headers. If a copy is still fresh, the
+# server responds with 304.
+# HTTP/1.1 200 0.00 secs: 2326 bytes ==> /apache_pb.gif
+# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif
+# HTTP/1.1 304 0.00 secs: 0 bytes ==> /apache_pb.gif
+#
+# ex: cache = true
+#
+cache = false
+
+#
+# Connection directive. Options "close" and "keep-alive"
+# Starting with release 2.57b3, siege implements persistent
+# connections in accordance to RFC 2068 using both chunked
+# encoding and content-length directives to determine the
+# page size. To run siege with persistent connections set
+# the connection directive to keep-alive. (Default close)
+# CAUTION: use the keep-alive directive with care.
+# DOUBLE CAUTION: this directive does not work well on HPUX
+# TRIPLE CAUTION: don't use keep-alives until further notice
+# ex: connection = close
+# connection = keep-alive
+#
+connection = close
+
+#
+# Default number of simulated concurrent users
+# ex: concurrent = 25
+#
+concurrent = 15
+
+#
+# Default duration of the siege. The right hand argument has
+# a modifier which specifies the time units, H=hours, M=minutes,
+# and S=seconds. If a modifier is not specified, then minutes
+# are assumed.
+# ex: time = 50M
+#
+# time =
+
+#
+# Repetitions. The length of siege may be specified in client
+# reps rather then a time duration. Instead of specifying a time
+# span, you can tell each siege instance to hit the server X number
+# of times. So if you chose 'reps = 20' and you've selected 10
+# concurrent users, then siege will hit the server 200 times.
+# ex: reps = 20
+#
+# reps =
+
+#
+# Default URLs file, set at configuration time, the default
+# file is PREFIX/etc/urls.txt. So if you configured siege
+# with --prefix=/usr/local then the urls.txt file is installed
+# int /usr/local/etc/urls.txt. Use the "file = " directive to
+# configure an alternative URLs file. You may use environment
+# variables as shown in the examples below:
+# ex: file = /export/home/jdfulmer/MYURLS.txt
+# file = $HOME/etc/urls.txt
+# file = $URLSFILE
+#
+file = ./urls.txt
+
+#
+# Default URL, this is a single URL that you want to test. This
+# is usually set at the command line with the -u option. When
+# used, this option overrides the urls.txt (-f FILE/--file=FILE)
+# option. You will HAVE to comment this out for in order to use
+# the urls.txt file option.
+# ex: url = https://shemp.whoohoo.com/docs/index.jsp
+#
+# url =
+
+#
+# Default delay value, see the siege(1) man page.
+# This value is used for load testing, it is not used
+# for benchmarking.
+# ex: delay = 3
+#
+delay = 1
+
+#
+# Connection timeout value. Set the value in seconds for
+# socket connection timeouts. The default value is 30 seconds.
+# ex: timeout = 30
+#
+# timeout =
+
+#
+# Session expiration: This directive allows you to delete all
+# cookies after you pass through the URLs. This means siege will
+# grab a new session with each run through its URLs. The default
+# value is false.
+# ex: expire-session = true
+#
+# expire-session =
+
+#
+# Failures: This is the number of total connection failures allowed
+# before siege aborts. Connection failures (timeouts, socket failures,
+# etc.) are combined with 400 and 500 level errors in the final stats,
+# but those errors do not count against the abort total. If you set
+# this total to 10, then siege will abort after ten socket timeouts,
+# but it will NOT abort after ten 404s. This is designed to prevent
+# a run-away mess on an unattended siege. The default value is 1024
+# ex: failures = 50
+#
+# failures =
+
+#
+# Internet simulation. If true, siege clients will hit
+# the URLs in the urls.txt file randomly, thereby simulating
+# internet usage. If false, siege will run through the
+# urls.txt file in order from first to last and back again.
+# ex: internet = true
+#
+internet = false
+
+#
+# Default benchmarking value, If true, there is NO delay
+# between server requests, siege runs as fast as the web
+# server and the network will let it. Set this to false
+# for load testing.
+# ex: benchmark = true
+#
+benchmark = false
+
+#
+# Set the siege User-Agent to identify yourself at the
+# host, the default is: JoeDog/1.00 [en] (X11; I; Siege #.##)
+# But that wreaks of corporate techno speak. Feel free
+# to make it more interesting :-) Since Limey is recovering
+# from minor surgery as I write this, I'll dedicate the
+# example to him...
+# ex: user-agent = Limey The Bulldog
+#
+# user-agent =
+
+#
+# Accept-encoding. This option allows you to specify
+# acceptable encodings returned by the server. Use this
+# directive to turn on compression. By default we accept
+# gzip compression.
+#
+# ex: accept-encoding = *
+# accept-encoding = gzip
+# accept-encoding = compress;q=0.5;gzip;q=1
+accept-encoding = gzip
+
+#
+# TURN OFF THAT ANNOYING SPINNER!
+# Siege spawns a thread and runs a spinner to entertain you
+# as it collects and computes its stats. If you don't like
+# this feature, you may turn it off here.
+# ex: spinner = false
+#
+spinner = true
+
+#
+# WWW-Authenticate login. When siege hits a webpage
+# that requires basic authentication, it will search its
+# logins for authentication which matches the specific realm
+# requested by the server. If it finds a match, it will send
+# that login information. If it fails to match the realm, it
+# will send the default login information. (Default is "all").
+# You may configure siege with several logins as long as no
+# two realms match. The format for logins is:
+# username:password[:realm] where "realm" is optional.
+# If you do not supply a realm, then it will default to "all"
+# ex: login = jdfulmer:topsecret:Admin
+# login = jeff:supersecret
+#
+# login =
+
+#
+# WWW-Authenticate username and password. When siege
+# hits a webpage that requires authentication, it will
+# send this user name and password to the server. Note
+# this is NOT form based authentication. You will have
+# to construct URLs for that.
+# ex: username = jdfulmer
+# password = whoohoo
+#
+# username =
+# password =
+
+#
+# ssl-cert
+# This optional feature allows you to specify a path to a client
+# certificate. It is not neccessary to specify a certificate in
+# order to use https. If you don't know why you would want one,
+# then you probably don't need this feature. Use openssl to
+# generate a certificate and key with the following command:
+# $ openssl req -nodes -new -days 365 -newkey rsa:1024 \
+# -keyout key.pem -out cert.pem
+# Specify a path to cert.pem as follows:
+# ex: ssl-cert = /home/jeff/.certs/cert.pem
+#
+# ssl-cert =
+
+#
+# ssl-key
+# Use this option to specify the key you generated with the command
+# above. ex: ssl-key = /home/jeff/.certs/key.pem
+# You may actually skip this option and combine both your cert and
+# your key in a single file:
+# $ cat key.pem > client.pem
+# $ cat cert.pem >> client.pem
+# Now set the path for ssl-cert:
+# ex: ssl-cert = /home/jeff/.certs/client.pem
+# (in this scenario, you comment out ssl-key)
+#
+# ssl-key =
+
+#
+# ssl-timeout
+# This option sets a connection timeout for the ssl library
+# ex: ssl-timeout = 30
+#
+# ssl-timeout =
+
+#
+# ssl-ciphers
+# You can use this feature to select a specific ssl cipher
+# for HTTPs. To view the ones available with your library run
+# the following command: openssl ciphers
+# ex: ssl-ciphers = EXP-RC4-MD5
+#
+# ssl-ciphers =
+
+#
+# Login URL. This is the first URL to be hit by every siege
+# client. This feature was designed to allow you to login to
+# a server and establish a session. It will only be hit once
+# so if you need to hit this URL more then once, make sure it
+# also appears in your urls.txt file.
+#
+# ex: login-url = http://eos.haha.com/login.jsp POST name=jeff&pass=foo
+#
+# login-url =
+
+#
+# Proxy protocol. This option allows you to select a proxy
+# server stress testing. The proxy will request the URL(s)
+# specified by -u"my.url.org" OR from the urls.txt file.
+#
+# ex: proxy-host = proxy.whoohoo.org
+# proxy-port = 8080
+#
+# proxy-host =
+# proxy-port =
+
+#
+# Proxy-Authenticate. When scout hits a proxy server which
+# requires username and password authentication, it will this
+# username and password to the server. The format is username,
+# password and optional realm each separated by a colon. You
+# may enter more than one proxy-login as long as each one has
+# a different realm. If you do not enter a realm, then scout
+# will send that login information to all proxy challenges. If
+# you have more than one proxy-login, then scout will attempt
+# to match the login to the realm.
+# ex: proxy-login: jeff:secret:corporate
+# proxy-login: jeff:whoohoo
+#
+# proxy-login =
+
+#
+# Redirection support. This option allows to to control
+# whether a Location: hint will be followed. Most users
+# will want to follow redirection information, but sometimes
+# it's desired to just get the Location information.
+#
+# ex: follow-location = false
+#
+# follow-location =
+
+# Zero-length data. siege can be configured to disregard
+# results in which zero bytes are read after the headers.
+# Alternatively, such results can be counted in the final
+# tally of outcomes.
+#
+# ex: zero-data-ok = false
+#
+# zero-data-ok =
+
+#
+# end of siegerc

0 comments on commit 951dc0f

Please sign in to comment.
Something went wrong with that request. Please try again.