Version 1.20, Last modified 04/05/2006
The Backend Simulator runs on one or more systems
that are accessible by the system under test (SUT) and by the prime
client.
The workload specific web server API code interfaces with BeSim via
HTTP requests to keep the simulation more true to life and keep the
processing
required to something familiar to people who've worked with web servers
and SPECweb99.
The workload specific API code sends requests to BeSim to obtain data
that is typically
acquired from backend systems such as a user's bank balance or a
registered
user's shopping preferences. The data in the BeSim response
is then used by the API code to complete the page to be returned as the
response to a client's request.
- HTTP/1.1 200 OK
Connection: close
Content-Length: 481
Content-Type: text/html
<html>
<head><title>SPECweb2005 BESIM</title></head>
<body>
<p>SERVER_SOFTWARE = Apache/2.0.53
<p>REMOTE_ADDR = 192.168.1.4
<p>SCRIPT_NAME = /fcgi-bin/besim_fcgi.fcgi
<p>QUERY_STRING = 1&4&58&3
<pre>
0
0000002058&/www/bank/images/user0000000058/CIF000003&\
/www/bank/images/user0000000058/CIB000003
</pre>
/body></html>
GET besim?<workload#>&<Command#>[&Parameter_n=Value...]\
[&Unique1=Value1&Unique2=Value2]
Example: B
GET besim?1&0&1097157010&1&2000&200&/www/bank/images&0
The key requirements for BeSim's implementation
are portability, easy of maintenance, and easy of extension to support
new
workloads. To meet these requirements, BeSim makes use of
existing HTTP software and is implemented as a dynamic API
module. This approach leverages already developed HTTP software
that knows all about handling
multiple HTTP requests and allows for rapid prototyping for new
workloads.
BeSim consists of a common set of core code that is used within one
of several
common web server API's. If a faster BeSim is needed,
users can either tune the web server software or select a faster web
server.
Command
(# - Name) Script Mapping DB Op |
Request Parameters | Response |
0 - Reset Prime Client Only NA |
N_TIME&\ N_MinUserID&\ N_MaxUserID&Load&\ Check_URL_Base&\ Num_check_subdirs |
S_Status (DONE) |
1 - LoginPasswd Login Select |
N_UserID |
S_Status N_Password |
2 - AcctBalances Login, Order_check, Transfer Select |
N_UserID |
S_Status N_NumberOfAccts Lines: N_Acct_#&N_Type&D_Balance |
3 -AcctSummary Account_summary Select |
N_UserID |
S_Status N_NumberOfAcctsLines: N_Acct_#&N_Type&D_Balance&\ D_TotalDeposit&D_AvgDeposit&\ D_TotalWitdrawal&D_AvgWithdrawal |
4 - CheckDetail1 Check_detail_html and Check_detail_image Select |
N_UserID&N_Check |
S_Status N_Acct&S_FrontURL&S_BackURL Note: URL's for check images are created using the base URL path info supplied with the Reset (0) Command and appending: "/user<10char_UID>/ <CIF|CIB><6digit_Check_No.>" (where CIF stands for check image front and CIB stands for check image back) |
5 - Bill Payment Bill_pay Select |
N_UserID |
S_Status N_NumberOfPayees Lines: N_PayeeId&D_Payment&N_Date |
6 - PostPayee Post_payee Insert |
N_UserID&N_PayeeID&\ S_Name&S_Address&\ S_City&S_State&\ N_Zip&S_Phone |
S_Status (DONE) N_Confirmation |
7 - QuickPay Quick_pay Insert |
N_UserID&N_PayeeId&\ N_Date&D_Amount |
S_Status (DONE) N_Confirmation |
8 - ReviewBillPay Bill_pay_status_output Select |
N_UserID&N_StartDate&\ N_EndDate |
S_Status N_NumberOfPayees Lines: N_PayeeId&N_Date&D_Amount |
9 - Profile Profile Select |
N_userID |
S_Status S_Address&S_Email&S_Phone |
10 - ChangeProfile Change_profile Update |
N_UserID& \ S_Address&\ S_Email&S_Phone |
S_Status (DONE) N_Confirmation |
11 - PlaceChkOrder Place_check_order Select,Update,Insert |
N_UserID&N_Acct#&\ N_Date&D_Price |
S_Status (DONE) N_Confirmation |
12 - PostTransfer Post_transfer Select,Update,Insert,Insert,Select |
N_UserID&N_Acct1&\ D_Amount&\ N_Acct2,N_Date |
N_NumberOfAccts Linesi(2): N_Acct_# &D_Balance |
Data
Formats |
Userid - char[10] |
Command
(# - Name) Script Mapping DB Op |
Request Parameters | Response |
0 - Reset Prime Client Only NA |
N_TIME&N_MinRegion&N_MaxRegion |
S_Status (DONE) |
1 - Search Search Select |
N_Region&S_Segment&\ S_Keyword1+S_Keyword2... |
S_Status N_Results Lines: S_Segment&S_Title&\ S_URL&S_Overview |
2 - ProductLines browse Select |
N_Region&S_CustType |
S_Status N_NumberOfProductLines (scales with N_Load): S_ProductLine1 S_ProductLine2... |
3 - ProductModels browse_productline Select |
N_Region&S_CustType&\ S_ProductLine |
S_Status \N_ProductModelLines (scales with N_Load): S_ProductName&\ S_ProductHighlights&\ S_Feature1&S_FeatureDesc1&\ S_Feature2&S_FeatureDesc2&\ S_Feature3&S_FeatureDesc3... |
4 - ProductDetails productdetail Select |
N_Region&S_CustType&\ S_Product |
S_Status N_ProductDetail Lines: S_ProductDetail1&\ S_ProductDetail2... |
5 - CustomizationChoices customize Select |
N_Region&S_CustType&\ S_ProductModel &N_Stage |
S_Status N_NumberOfComponents Lines (varies with N_Stage): S_ComponentType&\ S_ComponentName&\ S_ComponentID&\ D_Price |
6 - GetPrice cart & customize Select |
N_Region&S_Item&\ S_ComponentID1&\ S_ComponentID2... |
S_Status D_Price S_Currency |
7 - CheckoutLogin login Select |
N_Region&S_UserID |
S_Status S_Password |
8 - CheckoutRegister login Insert |
N_Region&\ S_FirstName&S_LastName&\ S_Email&S_Password |
S_Status N_Confirmation |
9 - SaveCart cart Insert |
N_Region&S_Email&\ N_Items&\ S_Item1&\ N_Quantity1&\ N_Components&\ S_ComponentID1&\ S_ComponentID2&\ S_Item2&\ N_Quantity2&\ N_Components&\ S_ComponentID1&\ S_ComponentID2... |
S_Status N_Confirmation |
10 - SubmitOrder confirm Insert |
N_Region&S_Email&S_ShipFirstName&\ S_ShipLastName&S_ShipAddress&\ S_ShipCity&S_ShipState&N_ShipZip&\ S_ShipPhone&S_ShipMethod&\ S_BillFirstName&S_BillLastName&\ S_BillAddress&S_BillCity&S_BillState&\ N_BillZip&S_BillPhone&S_CardType&\ N_CardNo&N_ExpMo&N_ExpYr&\ N_Items&\ S_Item1&N_Quantity1&\ N_Components&\ S_ComponentIDn&\ S_Item2&N_Quantity2&\ N_Components&\ S_ComponentIDn. |
S_Status S_ShipDate&N_Confirmation |
11 - GetRegions cart & customize Select |
N_Region_flag (where 0 or any value returns list of all regions) |
S_Status N_NumberRegions Lines: S_Region |
Data
Formats |
||||||||||||||||
Region – char[8], i.e. “region1”-“region80”
Component Type – var char[128], i.e.
“CPU”, “Memory”, “OS” |
Command
(# - Name) Script Mapping DB Op |
Request
Parameters |
Response |
0 - Reset Prime Client Only NA |
N_TIME&N_Load | S_Status (DONE) |
1 - Category Listing Index Select |
(none) | S_Status N_Results: N_ProductCategoryID1&S_ProductCategory1 N_ProductCategoryID2&S_ProductCategory2... |
2 - Product Listing Catalog Select |
N_ProductCategoryID | S_Status N_Results: N_ProductID1&S_Product1 N_ProductID2&S_Product2... |
3 - Search Search Select |
S_keyword1+\ S_keyword2+\ S_keyword3... |
S_Status N_Results: N_ProductID1&S_Product1 N_ProductID2&S_Product2... |
4 - Download Categories Product Select |
N_ProductID | S_Status N_Results: S_DownloadCategoryID1 S_DownloadCategoryID2... |
5 - Languages Product Select |
(none) |
S_Status N_Results: S_Language1 S_Language2... |
6 - Operating Systems Product Select |
N_ProductID | S_Status N_Results: S_OS1 S_OS2... |
7 - Files FileCatalog Select |
S_ProductID&\ S_DownloadCategory&\ S_Language&S_OS |
S_Status N_Results: N_FileID1&S_FileName1&S_Date&N_Size1 T_Description1 N_FileID2&S_FileName2&S_Date&N_Size2 T_Description2.... |
8 - File File Select |
N_ProductID&\ S_DownloadCategory&\ S_Language&S_OS |
S_Status S_FileName&S_Date&N_Size&\ S_DownloadURL T_Description T_AdditionalInfo |
Data Formats |
All N_*ID –
unsigned int Note: "\" line
continuation, not part of actual string |
Copyright © 2005-2006 Standard Performance Evaluation Corporation. All rights reserved.