mirror of
https://github.com/ceph/s3-tests.git
synced 2024-11-24 09:30:38 +00:00
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.
This commit is contained in:
parent
3a3cbb3d25
commit
951dc0fcdb
3 changed files with 395 additions and 2 deletions
|
@ -1,3 +1,2 @@
|
|||
- [3, 20, 5]
|
||||
- [3, 30, 2]
|
||||
- [10, 2000, 200]
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
382
siege.conf
Normal file
382
siege.conf
Normal file
|
@ -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
|
Loading…
Reference in a new issue