########################################################################
#
# Test.config
#
# SPECweb2005 test configuration properties file.
#
# Copyright (c) 2004-2006 Standard Performance Evaluation Corporation (SPEC)
# All rights reserved.
#
########################################################################
#
########################################################################
# Configurable test properties
# These can be changed and still result in a valid benchmark run
########################################################################

# A list of the clients which will perform load drivers for the test.
# i.e. the load generators
# Two possible formats:
#   1: CLIENTS = <client_hostname>:<port>/<conns> <client_hostname>/<conns> ...
#      for individually specifying the number of simultaneous sessions (users)
#      per client system. If 0 < conns < 1, then that value is understood to
#      be the that client's percentage of all sessions. Otherwise, if
#      conns >=1, the value is meant to be the absolute number of sessions
#      to run on that client.
#   2: CLIENTS = <client_hostname> <client_hostname> ...
#
#   SIMULTANEOUS_SESSIONS = <total processes distributed across all client
#   systems>...is either 
#   1) a single value 
#   2) a "step" value (eg. 100-200x20)
#   3) a set of discrete intra-run values (eg. 100&400&200)
#   4) min, avg, and max for a set of intra-run random values (eg. 2<5<10)

# The type of benchmark test being run
#TEST_TYPE=SPECweb_Banking
#TEST_TYPE=SPECweb_Ecommerce
TEST_TYPE=SPECweb_Support
# TEST_TYPE=USER_DEFINED

# The host name and port number(s) of the web server
WEB_SERVER = webserver
WEB_PORT = 80
SSL_PORT = 443

# SERVER_LIST and SERVER_PORT_LIST are only used to initialize multiple
# web servers. If there are multiple web servers servicing requests
# forwarded to them by WEB_SERVER, then this is where you would list
# those servers and their respective ports, separated by spaces.
# Otherwise, SERVER_LIST and SERVER_PORT_LIST should be commented out.
# SERVER_LIST = "server1 server2"
# SERVER_PORT_LIST = "443 443"

# Specify BeSim server name(s) and port (if other than port 80)

# Multiple BeSim example
#BESIM_SERVER = "besimbox1 besimbox2"
#BESIM_PORT = "81 82"

# Single BeSim 
BESIM_SERVER = "infraserver"
BESIM_PORT = "81"

# BESIM_INIT_SCRIPT is the initialization script run on the BESim server.
# Include relative path if not located in web server's doc root directory
# BESIM_PERSISTENT determines whether requests to BESIM servers are sent
# on persistent connections (assuming the dynamic code used on the web
# server supports this). Note:Default is BESIM_PERSISTENT=0, infraserver
# will use HTTP 1.0.

#BESIM_INIT_SCRIPT = "/besim/besim_nsapi.so" # NSAPI
#BESIM_INIT_SCRIPT = "/besim/besim_zisapi.api" # ZISAPI
#BESIM_INIT_SCRIPT = "/besim/BeSim_all.dll" # ISAPI
BESIM_INIT_SCRIPT = "/fcgi-bin/besim_fcgi.fcgi" # FCGI
BESIM_PERSISTENT = 0

# PHP-specific name/value pairs 
# Note: Use of PHP dynamic code required by SPECvirt Run Rules
SMARTY_DIR = "/var/www/html/Smarty-2.6.26/libs/"
SMARTY_BANK_DIR = "/var/www/html/bank/"
SMARTY_ECOMMERCE_DIR = "/var/www/html/ecommerce/"
SMARTY_SUPPORT_DIR = "/var/www/html/support/"
SEND_CONTENT_LENGTH = 1

# Specify image server name and port, if used
# IMG_SERVER = "img_srv"
# IMG_SERVER_PORT = 80

# HTTP protocol supported by web server 
# Note: HTTP 1.1 required by SPECvirt Run Rules between Client and Webserver
# HTTP_PROTOCOL = "HTTP/1.0"
HTTP_PROTOCOL = "HTTP/1.1"

# WARMUP_SECONDS specifies how long (in seconds) to run to achieve
# steady state before 1st test measurement; must be at least 300
# WARMUP_SECONDS = 300

# THREAD_RAMPUP_SECONDS is the total delay, in seconds, during which
# client thread startup is distributed prior to warm-up/ramp-up;
# must be at least 180 seconds
# Note: If this paramter is too small relative to the load this error may
# occur during rampup: [FATAL] Exceeded max allowed overthink time of 20 sec.
# Increasing THREAD_RAMPUP_SECONDS should eliminate this error.
THREAD_RAMPUP_SECONDS = 180

# Allows user to gradually decrease request rate, rather than stopping all
# requests immediately between runs - the inverse of THREAD_RAMPUP_SECONDS
# must be at least 180 seconds
THREAD_RAMPDOWN_SECONDS = 180

# WAIT_TO_BEGIN is amount of time (in seconds) before starting
# each iteration of the test - not implemented (yet)
WAIT_TO_BEGIN = 5

# KILL_CLIENT determines whether to stop specwebclient processes
# at the end of a test (or end of all tests if ITERATIONS > 1)
# comment this field out in order to keep clients running between
# tests
KILL_CLIENT = 0

# DEBUG_LEVEL controls the amount of data (println) reported by
# the harness. The higher the number, the greater the amount of
# information reported
DEBUG_LEVEL = 0
#DEBUG_LEVEL = 1
# TRACE_WORKLOAD = 1

# INTERVAL_POLL_VALUES returns values between measurement intervals
# if > 0. If set to 0, it returns cumulative values. These values 
# are only relevant if POLL_CLIENTS is set to 1 (or greater). USE_GUI
# determines whether a graphical display of client result polling 
# should be used. USE_GUI should be 0 if POLL_CLIENTS is set to 0.
INTERVAL_POLL_VALUES = 0
POLL_CLIENTS = 1
USE_GUI = 0

# Locale data
LANGUAGE = EN
COUNTRY = US

# NUM_RAND_LOADS is used for runs that randomly vary load within a
# single mesurement period. NUM_RAND_LOADS/RUN_SECONDS must be greater
# than INTRA_INTERVAL_RAMP_SEC. (Note This parameter is NOT used for 
# discrete, non-random intra-interval varying loads.)
NUM_RAND_LOADS = 10

# INTRA_INTERVAL_RAMP_SEC is the ramp-up time between intra-interval
# loads. For randomly varying loads, it *must* be less than 
# RUN_SECONDS/NUM_RAND_LOADS and for discrete loads it *must* be less
# than RUN_SECONDS / <number of discrete load values listed in
# SIMULTANEOUS_SESSIONS> (and *should* be much less than this value)
INTRA_INTERVAL_RAMP_SEC = 10

########################################################################
#
# SPECweb2005 fixed test properties
#
# Property values listed below are specified by SPEC.  Changing these
# values and running the SPECweb benchmark will result in an invalid
# benchmark run and invalid run report being generated.
########################################################################

#####################################################################################
## FIXED WORKLOAD PROPERTIES
## Changing any of the property values, below, will result in a
## non-compliant benchmark run
#####################################################################################


# How long to run while gathering statistics
# default: RUN_SECONDS = 7200

# RAMPUP_SECONDS specifies how long (in seconds) to warm
# up between each test measurement iteration after the 1st
# measurement if WARMUP_SECONDS, above, is specified
# default: RAMPUP_SECONDS = 300

# RAMPDOWN_SECONDS specifies how long (in seconds) to wait between each
# subsequent test measurement iteration for for TCP connection clean-up
# default: RAMPDOWN_SECONDS = 300
RAMPDOWN_SECONDS = 300

# Number of times to repeat the measurement
# default: ITERATIONS = 3
ITERATIONS = 1

# Number of connections on which to request page images
# default: PARALLEL_CONNS = 2
PARALLEL_CONNS = 2

# Number of loops the sleep test goes through to calibrate
# the sleep interval for each client
# default: SLEEP_TEST_ITERATIONS = 20
SLEEP_TEST_ITERATIONS = 20

# The following four parameters control use of an internal counter/clock to
# verify time collected on the client. Specifically, the are intended to
# address negative response time issues. Set USE_COUNTER_CHECK to 0 to disable.
# TICK_MSEC is the number of milliseconds the clock thread should sleep between 
# counter increments. 
USE_COUNTER_CHECK = 1
USE_COUNTER_VALUE = 1
TICK_MSEC = 10
TICK_ERR_FACTOR = 2

# BEAT_INTERVAL is the number of seconds between client pollings. 
# This controls either the "heartbeat" pollings or the frequency 
# that client data is returned to the prime client (if POLL_CLIENTS 
# is set to 1). If using the GUI, the minimum value for BEAT_INTERVAL 
# is 2.
# default: BEAT_INTERVAL = 10
BEAT_INTERVAL = 10

# Used to designate that this is an overload test, not a standard run.
# If OVERLOAD_RUN > 0 then the value OVERLOAD_FACTOR is used to
# calculate the number of user sessions. This value must be set to 0
# for compliant benchmark tests.
OVERLOAD_RUN = 0

# MAX_OVERTHINK_TIME is the maximum aggregate amount of time (in msec)
# that each client system can fail to meet the THINK_TIME expectation
# before the client stops and terminates the test. OVERTHINK_ALLOW_FACTOR is 
# multiplied by the polling time to determine the MAX_OVERTHINK_TIME. If
# specified, this calculated value replaces the MAX_OVERTHINK_TIME value
MAX_OVERTHINK_TIME = 20000
OVERTHINK_ALLOW_FACTOR = 0.01

# Overload factor is multiplied by SIMULTANEOUS_SESSIONS and the product
# is used as the number of user sessions for the overload run. This
# factor must be <= (and evenly divisible by) CLIENT_SESSION_USER_IDS
# default: (not used)
OVERLOAD_FACTOR = 1.6

# The SSL protocol and cipher to use for SSL connections
SSL_PROTOCOL = "SSLv3"
SSL_CIPHER = "SSL_RSA_WITH_RC4_128_MD5"

# IGNORE_WPD_ERRORS turns off weighted percentage difference (WPD)
# checks. Setting to > 0 will eliminate error warnings regarding WPD
# errors when running non-compliant tests where these checks are not
# useful.
IGNORE_WPD_ERRORS = 0

########################################################################
# conditional GET request distribution (out of all requests)
# (value range is 0 to 100) - not applicable to all workloads
########################################################################

# The percentage of static GET requests that are conditional GET
# (If-Modified-Since) requests
COND_GET_REQ_PERCENT = 0

########################################################################
# Keep_Alive Values - not applicable to Banking, Ecommerce, or Support
# workloads; used only for non-compliant HTTP 1.0 testing
########################################################################

# Min and max number of GET requests per keep-alive connection
MIN_REQUESTS_PER_KEEP_ALIVE = 5
MAX_REQUESTS_PER_KEEP_ALIVE = 15

# The percentage of GET requests that use keep-alive
PERCENT_KEEP_ALIVE_REQUESTS = 70

########################################################################
# Timeouts - not applicable to all workloads
########################################################################

# The time after which a connection is deemed to have timed out
PROTOCOL_TIMEOUT_SECONDS = 60

########################################################################
# Data Rate values
########################################################################

# The distribution of speed of simulated local connections
# WIRESPEED means no simulated delay
# DATA_RATE_DISTRIBUTION = "10MB_LAN,10.0%; CABLE,10.0%; FAST,80.0%; SW99,0.0%"
# DATA_RATE_DISTRIBUTION = "10MB_LAN,100.0%; CABLE,0.0%; FAST,0.0%; SW99,0.0%"
DATA_RATE_DISTRIBUTION = "10MB_LAN,0.0%; CABLE,100.0%; FAST,0.0%; SW99,0.0%"

# Characters per second used in SW99; used for SW99 in DATA_RATE_DISTRIBUTION
# (not used in default configuration)
SW99_DATA_RATE = 50000

# Characters per second for 56.6Kbps modem; used for FAST in DATA_RATE_DISTRIBUTION
# (default = 6000 bytes)(48Kbps is the fastest connection I've seen w/ 56K modem)
FAST_MODEM_DATA_RATE = 6000

# Characters per second for 1Mbps cable; used for CABLE in DATA_RATE_DISTRIBUTION
# (default = 100000 bytes)
HIGH_SPEED_DATA_RATE = 100000

# Characters per second for 10Mbps LAN; used for 10MB_LAN in DATA_RATE_DISTRIBUTION
# (default = 1000000 bytes)
LAN_DATA_RATE = 1000000

