Professional Documents
Culture Documents
Microsoft® Exchange Stress and Performance (ESP) 2003 (also known as Medusa) is a highly scalable stress
and performance tool that you can use to stress test Microsoft® Exchange Server 2003. ESP includes multiple
modules and can simulate many client sessions while accessing one or more Exchange servers at the same
time. You can use ESP to test several workload scenarios.
You can run an unlimited number of ESP modules from a single computer to more realistically simulate
physically separate client computers. Alternatively, you can run ESP modules from separate computers at the
same time. Therefore, the load you can apply to your test environment is limited only by the available
hardware. Depending on the hardware and workload imposed by each script, you can simulate 5,000 or more
end users on a single host computer.
Note
The ESP tool cannot create user accounts. Therefore, to create a test that involves simulating
actual individual users, and not only client sessions, it is recommended that ESP be used with other
tools that can create user accounts (for example, Load Simulator 2003). For more information about
using ESP with other programs that create actual user objects, see "Setting up the Test" later in this
document.
ESP is modular and extensible. Currently modules are provided that enable you to test stress that is applied for
most Internet protocols. ESP does not include a module to test stress. This test is applied by MAPI
(Microsoft® Office Outlook®) clients.
Supported Protocols
ESP includes modules that can simulate client sessions over the following Internet protocols/APIs:
• WebDAV (Outlook Web Access)
• Internet Message Access Protocol version 4rev1 (IMAP4)
• Lightweight Directory Access Protocol (LDAP)
• OLEDB
• Network News Transfer Protocol (NNTP)
• Post Office Protocol version 3 (POP3)
• Simple Mail Transfer Protocol (SMTP)
• Outlook Mobile Access Synchronization Support
• Outlook Mobile Access Browser Support
2 Exchange Server Stress and Performance 2003 Tool
System Requirements
To use ESP 2003, you must comply with the following requirements. Note that these requirements can increase
if you use custom e-mail messages and custom configurations (Table 1).
ESP 2003 simulates users using non-MAPI protocols, also named Internet protocols. ESP 2003 cannot
simulate MAPI stress.
Important
ESP 2003 should be used only in a test environment not connected to the production environment.
ESP 2003 runs only on Windows® 2000 operating system, Windows® XP operating system, and
Windows Server™ 2003.
Exchange Server Stress and Performance 2003 Tool 3
To install ESP
1. In the Setup folder on the ESP download package, run MSETUP.EXE.
2. In ESP Setup, under Destination Folder, note the default location to which ESP 2003 will be installed.
To change the location, click Browse, and then navigate to the location that you want.
3. To begin the setup process, in ESP Setup, click Install.
4. In ESP Service Account, type a password for the ESP service account that will be created during ESP
Setup, and then click Continue.
5. In ESP Setup, click OK to the message indicating that ESP components have been installed on your
computer.
Note
If you plan to run ESP modules remotely on Windows 2000 computers, you will also have to run
DCOMCNFG.EXE to manually configure DCOM settings. See the README.TXT for details. The ESP
Module Wizard requires Visual C++ 6.0 or later, Enterprise or Professional editions.
The ESP user interface is used to manage, configure, and run the Exchange COM tools components.
To start ESP 2003
1. Log on the computer where ESP 2003 is installed.
2. Start ESP 2003 (esp.exe). Click Start, point to All Programs, point to ESP, and then click ESP. ESP
opens showing an unsaved workspace named untitled.ini.
Figure 1 is an example of what the console pane of an ESP 2003 workspace looks like after saving the
workspace with a specific name and adding four host computers to the configuration. The workspace name
kevb.INI refers to the top-level object. The objects under the top-level object represent host computers that run
ESP modules (Figure 1).
2. In Name, type the name of the computer that you want to add as a host to the workspace. Alternatively,
click Browse, and then navigate to the computer that you want to add.
3. Click OK.
To remove a host computer from a workspace
1. In ESP 2003, in the console pane, select the host that you want to remove.
2. Right-click that host, and then click Delete.
Note
If you remove a host that is currently connected to a workspace, the host will be disconnected
immediately and all of its active test modules will be stopped.
Exchange Server Stress and Performance 2003 Tool 5
Establishing Connections
After adding hosts to a workspace, you must manually connect to the host computer. Once a connection has
been established, you can add ESP modules and configure them to run on the host computer.
To connect to a host computer
1. In ESP 2003, select the host computer to which you want to connect.
2. On the Host menu, click Connect. The <Host Computer Name> dialog box appears, which you can use
to configure the selected host computer.
Note
After you establish a connection to a host computer, the host computer name is displayed in bold
in the console tree of ESP 2003.
Configuring Hosts
To configure each host computer in a workspace, you use the property tabs in the <Host Computer Name>
dialog box. This dialog box displays automatically after you add a host to a workspace. You can also display
the properties of a host if you right-click a host computer in the console tree of ESP, and then click Properties.
The <Host Computer Name> dialog box includes the following tabs:
• Available Modules tab
• Target Host tab
• Options tab
Figure 3 The Available Modules tab of the member properties dialog box
3. To add additional modules, repeat the previous step until you have added all of the required modules. You
can remove a module that you have added by selecting it and clicking Remove. You can clear all of the
added modules by clicking Clear.
4. Click Apply.
3. Under Test Duration, click Fixed (minutes), and then type a value if you want a test to run only for a
specific amount of time. If you do not select this option, the test will continue to run until it is finished.
4. Select Reconnect at Startup if you want the host to be connected automatically when the workspace is
opened.
5. Click Apply.
Figure 5 The Options tab of a of the properties dialog box for a workspace
3. Type the value for the parameter that you want to modify.
Note
If you are specifying the Log File Path, you can either type the path directly or click the
Browse button and navigate to the location that you want to specify.
4. Click Apply to save your changes.
The host computer tries to accept the new settings and to put the changes into effect. If you apply changes
while any test modules are running, the host automatically determines whether it needs to restart the modules.
Stopping Modules
After your modules have started, you can stop an individual module or all of the modules.
To stop all modules for a specific host
1. In the console tree, select the host that contains the modules that you want to stop.
2. Right-click that host, and then click Stop All. Alternatively, you can select a host and then use the red
traffic light icon on the tool bar to stop a test.
To stop an individual module
1. In the console tree, expand the host computer that includes the module that you want to stop.
2. Right-click the module that you want to stop, and then click Stop. Alternatively, you can select a module
and then use the red traffic light icon on the tool bar to stop the module.
To set up a realistic test, you need to create users and populate mailboxes with e-mail messages. ESP cannot
simulate users, so it is recommended that you use it with tools that have this capability, such as LoadSim 2003
to leverage the capability of creating users and populating mailboxes. For example, if you are using
LoadSim 2003 with ESP 2003, it is possible to export a list of users created with LoadSim 2003 from Active
Directory® directory service.
To export a list of users from Active Directory
1. Start Active Directory Users and Computers.
2. Expand the Active Directory Users and Computers console tree to display the Active Directory containers
that include the user names that you want to export.
3. Right-click a container for which you want to export user names, click Export, and then save the user
names to a file.
4. Open the file to which you exported user names.
5. In that file, delete all data other than the user names. The correct syntax is that only one user name should
be listed per line.
6. Repeat Steps 3 through 5 for each Active Directory container for which you want to export the list of
users.
ESP Modules
ESP provides a common script language that can be used for all scripts. It also enables each module to extend
the language for its own needs.
14 Exchange Server Stress and Performance 2003 Tool
Common Infrastructure
The script verbs shown in Table 3 are common to all ESP modules.
during a test run. You can also log client actions and server responses during a test run. You cannot configure
the events that are logged.
Important
This module requires the use of a specific set of additional script files not required by other
modules. These are known as Outlook Web Access suite files. These files are in the
C:\Medusa\OWASuite subfolder, where C:\ is the location to which you extracted the ESP 2003 tool
(by running Medusa.exe).
For more information about these files, see "Sample Suites" later in this section.
Run-time Parameters
The run-time parameters of Outlook Web Access and a description of each are shown in Table 4.
Configuration
1. Start ESP 2003 (esp.exe). Click Start, point to All Programs, point to ESP, and then click ESP.
2. From the File menu, click Add Host.
3. In Name, type the name of the host computer, and then click Connect Host.
4. On the Available Modules tab, add a DAV module instance, and then click OK.
5. In the console tree, right-click the DAV module just created, and then click Properties.
6. Configure the module to your specifications. For example, enter the server, script instances, authentication
method, and script file. You can also change other fields (Figure 9). For example, you can change the
value for the parameter "Close connection on wakeup" from YES to NO. Authentication method should be
set as NTLM or BASIC.
Statistics
Table 5 describes the run-time statistics that are reported to the ESP user interface and an explanation of each.
Statistic Description
BDELETE Requests Total number of BDELETE requests
BMOVE Requests Total number of BMOVE requests
BCOPY Requests Total number of BCOPY requests
Unknown Requests Total number of unknown requests
100 Level Status Total number of 100 status-level responses received by the server
200 Level Status Total number of 200 status-level responses received by the server
300 Level Status Total number of 300 status-level responses received by the server
400 Level Status Total number of 400 status-level responses received by the server
500 Level Status Total number of 500 status-level responses received by the server
Unknown Level Status Total number of unknown status-level responses received by the server
Successful Shutdowns Total number of script instances (or users) that were successfully
shutdown
Failed Shutdowns Total number of script instances (or users) that did not successfully shut
down. If this number is greater than 0, you must quit the ESP user-
interface application and restart…$bug$ in the Internet transport used.
DELHEADER Connection:
or
DELHEADER Connection: close
20 Exchange Server Stress and Performance 2003 Tool
SKIP 1
SLEEP SLEEP <value> Causes the script execution to
pause.
SLEEP 15000
-Or-
SLEEP RANDNUMBER(180000,290000)
Parameter1 is always assumed to be some resource on the server and is optional. Parameter2 is assumed to be a
path + filename that can be local or UNC and is optional. In keeping with this convention, you should not
assume that this test module does not support new WebDAV verbs not discussed in this document.
WebDAV Headers
You add headers to a server request by using the ADDHEADER reserved word. To add headers to a server
request, add all of the headers before the request. All headers that are added with an ADDHEADER are sent
with all server requests until the header is removed. To remove headers from a server request, use the
DELHEADER reserved word.
Authentication
1. In the ESP UI, specify the authentication method by using the Authentication Method parameter.
2. In the ESP UI, specify the encryption method by using the Encryption Type parameter (if applicable).
3. In your script, ensure that one of the following exists:
SET $AUTHORIZATION$ <domain\user> <pwd>
or
SET $AUTHORIZATION$ SEQULIST(<path/UNC to list of users in a file formed like
<domain\user> <pwd>)
26 Exchange Server Stress and Performance 2003 Tool
or
SET $AUTHORIZATION$ RANDLIST(<path/UNC to list of users in a file formed like
<domain\user> <pwd>)
When the domain\user and pwd are parsed, the reserved variable $USER$ will be set to user, and the
reserved variable $PWD$ will be set to the password.
4. Send your WebDAV verb. If the server returns a 401 status code, ESP prompts to authenticate the user.
Here is an example script:
SET $AUTHORIZATION$ domain1\user1 password
ADDHEADER Host: server1
ADDHEADER Depth: 1
ADDHEADER Content-type: text/xml
PROPFIND /exchange/$USER$/Inbox D:\text.txt
DELHEADER Depth:
DELHEADER Content-type:
SLEEP 1000
ADDHEADER Destination:
/exchange/user1/dest.txt
COPY /exchange/user1/src.txt
DELETE DELETE <url> Used to delete a resource.
Exchange Server Stress and Performance 2003 Tool 27
ADDHEADER Destination:
/exchange/user1/dest.txt
MOVE /exchange/user1/src.txt
OPTIONS OPTIONS <url> Used to see what options the server
supports.
TRACE TRACE <url> Repeats the command sent to the
server.
LOCK LOCK <url> <path to xml lock body> Used to lock a resource on the
server.
Sample Suites
Table 9 shows three sample suites to help you immediately start stress testing your servers and topologies.
These three suites model many user interactions and cover the scenario in which a user has no cached items,
thereby necessitating the download of every item every time a user session is initiated. The suites are labeled
small, medium, and large. You can use one suite or a combination of the suites to provide the best model of
your users. In the suites described in Table 9, no sleep requests are inserted in order to accurately model a
realistic pattern of usage. Instead, the suites are aimed at applying the largest amount of load in the shortest
period of time.
Important
By default, the files that make up the sample suites used throughout this section are in the
C:\Medusa\OWASuite subfolder, where C:\ is the location to which you extracted the ESP 2003
tool (by running Medusa.exe). The description of each of these files is shown in Table 9, Table 14,
and Table 15 later in this section.
Although not required, it is recommended that you copy the OWASuite folder to C:\ folder, where
C:\ is the location to which you installed ESP 2003. The important consideration is that you must
correctly reference the location of the Outlook Web Access suite script files when configuring the
$filepath$ variable in the script files shown in Table 9.
For additional information about configuring your HTTP/DAV ESP 2003 test, see the Readme text
file, located in the OWASuite folder.
Suite Description
OWA_medium.txt This is an Outlook Web Access scalability script to simulate a companion
user, in other words, one who uses Outlook Web Access as a companion.
It sends 10 messages, sends a message with an attachment, creates an
appointment, sends a recurring meeting request, checks the calendar, checks
for new messages, reads 12 messages, forwards four messages, deletes 4
messages, empties the deleted items folder, and opens a new contact and
saves it.
OWA_large.txt This is an Outlook Web Access scalability script to simulate a heavy user
who uses Outlook Web Access as their main client.
It sends 30 messages, sends a message with an attachment, creates an
appointment, sends 2 recurring meeting requests, creates a new contact,
creates a rule, checks the calendar, checks for new messages, reads 12
messages, creates another new contact, forwards 20 messages, sends a
message to trigger a rule, spell checks one 2 KB message, creates a task,
deletes 36 items, searches for three items, marks task as complete, empties
the deleted items folder, deletes another item, and then deletes that item
from the Dumpster.
You need to configure several variables to run the suites in your environment. The variables below are
examples, and you might need to change them if the default is not appropriate (Table 10).
Table 10 Variables for the sample suites in Table 9 that might need to be changed
Variable Description
$host$ Name of target server, for example, OWAserver1
$FullSMTP$ SMTP address to be appended to username, for example,
@domain.company.com
$filepath$ Location of files. The default assumption is c:\OWASuite.
$build$ Build of Exchange. The default is ***.
$theme$ Theme to use. The default is 0.
$authorization$ User account to log in to with password. The default is to select a random
user for the list in file C:\OWASuite\users.txt.
$senduser1$ - $senduser4$ Recipients to send mail to .Default is to select a random user for the list in
file C:\OWASuite\recipients.txt.
$folders$ Folders to create. The default is to select a random name from
C:\OWASuite\folders.txt.
$mailbox$ The virtual server name to log in to. The default is Exchange.
$Inbox$ Name of the Inbox folder. The default is Inbox (must be URL escaped).
$Calendar$ Name of the Calendar folder. The default is Calendar (must be URL
escaped).
$Contacts$ Name of the Contacts folder. The default is Contacts (must be URL
escaped).
$Drafts$ Name of the Drafts folder. The default is Drafts (must be URL escaped).
30 Exchange Server Stress and Performance 2003 Tool
Variable Description
$Deleted%20Items$ Name of the Deleted Items folder. The default is Deleted%20Items (must
be URL escaped).
$Tasks$ Name of the Tasks folder. The default is Tasks (must be URL escaped).
$dlname$ Name of the distribution list. The default is currently set to
tempdlRANDNUMBER(0,99).
$pfolder$ Name of public folder. The default is currently set to folder-$USER$.
$User-Agent$ User-Agent string to be sent up to server. The default is Mozilla/4.0
(compatible, MSIE 6.0, Windows NT® 5.1, Microsoft Internet Explorer
update 328970 required "328970 - MS02-066: November, 2002,
Cumulative Patch for Internet Explorer."
$Accept-Language$ Accept-language string to pass to server. The default is en-us.
$protocol$ Protocol to pass to server. The default is HTTP.
Several variables are set by default and you should not need to configure them to run the suites in your
environment.
Table 11 Variables for the sample suites in Table 9 that should not need to be
changed.
Variable Description
$xml$ new XMLList
$timenow$ current datetime
$time+3mo$ $timenow$ ADDTIME $time+3mo$ 129600
$time-3mo$ $timenow$ ADDTIME $time-3mo$ -129600
$time+1hr$ $timenow$ ADDTIME $time+1hr$ 60
$dismisstime$ 4501-01-01T00:00:00.000Z
$dayofweek$ RANDNUMBER(1,127)
$cookie$ RESPHEADER(Set-Cookie)
Several variables are set by default but you can configure them to your preferences, because not all variables
are in all suites (Table 12).
Task Variables
Table 12 Outlook Web Access Task Variables
Variable Default
$tasksubject$ Tasksubject
$taskcompanies$ Taskcompanies
$taskbilling$ Taskbilling
$taskmileage$ Taskmileage
Exchange Server Stress and Performance 2003 Tool 31
Variable Default
$taskdetails$ Taskdetails
Contact Variables
Table 13 Outlook Web Access contact variables
Variable Default
$businesshomepage$ http://businesswebpage.com-automation
$callbackphone$ 555-1212-automation
$co$ Country-USA-automation
$department$ Department-automation
$email1addrtype$ SMTP
$email2addrtype$ SMTP
$email3addrtype$ SMTP
$emailemailaddress$ automation@mail.com
$email2emailaddress$ automation2@mail.com
$email3emailaddress$ automation3@mail.com
$email1displayname$ DisplayNameAutomation
$email1originaldisplayname$ Email@automation.com
$email2displayname$ DisplayName2Automation
$email2originaldisplayname$ Email2@automation.com
$email3displayname$ DisplayName3Automation
$email3originaldisplayname$ Email3@automation.com
$emaillisttype$ 1
$facsimiletelephonenumber$ faxnumber-automation
$fileas$ 1
$givenName$ Firstnameautomation
$homeCity$ Homecityautomation
$homeCountry$ Homecountryautomation
$homefax$ Homefaxautomation
$homePhone$ Homephoneautomation
$homePostalCode$ Homepostalcode
$homeState$ Homestateautomation
$homeStreet$ Homestreetautomation
$internationalisdnnumber$ Homeisdnnumberautomation
32 Exchange Server Stress and Performance 2003 Tool
Variable Default
$1$ CityAutomation
$mailingaddressid$ 2
$manager$ Managerautomation
$middlename$ Middlenameautomation
$mobile$ Mobileautomation
$nickname$ Nicknameautomation
$o$ Companyautomation
$organizationmainphone$ Organizationmainphoneautomation
$othercity$ Othercityautomation
$othercountry$ Othercountryautomation
$otherfax$ Otherfaxautomation
$othermobile$ Othermobileautomation
$otherpostalcode$ Otherpostalcodeautomation
$otherstate$ Otherstateautomation
$otherstreet$ Otherstreetautomation
$otherTelephone$ OtherTelephoneautomation
$pager$ Pagerautomation
$postalcode$ Postalcodeautomation
$profession$ Professionautomation
$roomnumber$ Roomnumberautomation
$secretarycn$ Secretarycnautomation
$secretaryphone$ Secretaryphoneautomation
$sn$ SnLastNameautomation
$spousecn$ Spousecnautomation
$state$ Stateautomation
$street$ Streetautomation
$subject$ Subjectautomation
$telephoneNumber$ TelephoneNumberautomation
$telephonenumber2$ telephonenumber2automation
$title$ Titleautomation
$fburl$ Fburlautomation
Exchange Server Stress and Performance 2003 Tool 33
There are other Outlook Web Access suite files that you will want to change to fit your own environment
(Table 14).
Table 14 Outlook Web Access suite files that you need to change
File Content
users.txt Names, domain, and password for all of the users to be used.
Format of each must be in domain\user password. Each subsequent set of
credentials goes on a new line.
recipients.txt Alias for mail to be sent to
Format is in the form of user. Each subsequent user name goes on a new
line.
Folders.txt Name of folder to be created.
Format is in the form of "foldername." Each subsequent folder goes on a
new line.
Table 15 shows the additional Outlook Web Access suite script files that are used when running your
HTTP/DAV ESP 2003 test. For additional information about configuring your HTTP/DAV ESP 2003 test,
including information about which files are required for each Outlook Web Access suite, see the readme text
file located in the OWASuite folder.
Table 15 List of files required to use the Outlook Web Access suite
File
Appointment.1
Check_rule.1
checkmail.xml
contact_new.1
Delete_task.1
DeleteFromDumpster.1
Deletemessage1.1
Deletemessage2.1
Deletemessage3.1
Deletemessage4.1
Deletemessage5.1
Deletemessage6.1
desc.xml
folders.txt
forward.1
MeetingRequest.1
postwithatt.1
34 Exchange Server Stress and Performance 2003 Tool
File
recipients.txt
save_rule.1
SaveWithAttachment.1
Search_contact.1
Search_mailbox.1
Search_mailbox.2
Search_mailbox.3
Search_tasks.1
SearchAfterDel.1
SearchCalendar.1
SearchDel.1
SearchDeletedItems.1
SearchInbox.1
SendMsgTo4Data.1
SendMsgTo4Data.10
SendMsgTo4Data.11
SendMsgTo4Data.2
SendMsgTo4Data.3
SendMsgTo4Data.4
SendMsgTo4Data.5
SendMsgTo4Data.6
SendMsgTo4Data.7
SendMsgTo4Data.8
SendMsgTo4Data.9
SendMsgTo4Data.RULE
SendWithAttachment.1
spellcheck_text.1
Users.txt
Exchange Server Stress and Performance 2003 Tool 35
Variable Description
$host$ Name of target server, for example, OWAserver1.
$FullSMTP$ SMTP address to be appended to user name, for example,
@domain.company.com.
$filepath$ Location of files. The default assumption is c:\OWASuite.
$build$ Build number for Exchange. The default is ***.
To successfully run the suites, you must create the following files (Table 17).
Table 17 Outlook Web Access Suite files that need to be created
File Content
users.txt Aliases, domain, and password for all of the users.
Format of each must be in domain\user password. Each subsequent set of
credentials goes on a new line.
recipients.txt Alias for mail to be sent to.
Format is in the form of user. Each subsequent user name goes on a new
line.
36 Exchange Server Stress and Performance 2003 Tool
File Content
folders.txt Name of folder to be created.
Format is in the form of "foldername." Each subsequent folder goes on a
new line.
For the purposes of this verification, you should start with a single user in the users.txt file that will be logged
into. Likewise, if you list the same user in the recipients.txt file, you ensure that you have isolated your testing
to a single user who should be sending and receiving all messages. Initially, you want to reduce complexity to
verify that you can run these suites.
You might need to update other variables to run the suites, or the defaults may run successfully for you. The
variables listed above are variables that you definitely need to change. For a list of other potential changes, see
the section on Setting up the Test later in the document.
Step 4: Run
When you have configured your suites and ESP, you are ready to run them. Click the green traffic light icon to
start running the scripts. The script will loop as long as you allow it to run. It should only take a few seconds to
loop at least once. If the Successful Connections value is at least 5, then it has looped more than once. Finer
granulation is difficult without applying sleep requests, and it is unnecessary for this purpose.
Run-time Parameters
The following are the run-time parameters shown in ESP UI and an explanation of each (Table 18).
Statistics
The following are the run-time statistics that are reported to the ESP UI and an explanation of each (Table 19).
Statistic Description
UIDSEARCH Number of UIDSEARCH commands
UIDSTORE Number of UIDSTORE commands
UNSUBSCRIBE Number of UNSUBSCRIBE commands
DONE Number of DONE commands
DELETE "mytestfolder1"
EXAMINE EXAMINE <mailbox name> Examines a specified mailbox.
CREATE "INBOX/folder1"
RENAME RENAME <mailbox name> <new Renames a specified mailbox.
mailbox name>
SUBSCRIBE "Drafts"
UNSUBSCRIBE UNSUBSCRIBE <mailboxname> Unsubscribes from the specified
mailbox.
FETCH 1 RFC822
For more information on types
of msg data items, refer to
FETCH 1:4 RFC3501.
BODY[HEADER.FIELDS(subject
from)]
Example Scripts
Exchange Server Stress and Performance 2003 Tool 45
AUTHENTICATE SEQULIST(userlist.txt)
LOOP 10
APPEND "INBOX" MyDataFile.eml
ENDLOOP
LOGOUT
REM # Sleep for one day
SLEEP 86400000
The SEQULIST (userlist.txt) command walks through the userlist.txt file that you created earlier. Each "User
Instance" of the script represents a different entry in the list. Therefore, if you have 100 mailboxes that you
want to populate, you should have 100 entries in your userlist.txt file and 100 User Instances when you start
the ESP script.
The APPEND "INBOX" MyDataFile.eml appends the contents of MyDataFile.eml to the user's inbox (local
path relative to the location of the ESP Script), and the LOOP 10 … ENDLOOP combination will run through
the APPEND command 10 times.
The APPEND command will generate messages in a way that is similar to local SMTP delivery. If you want to
test your enterprise using predominantly MAPI clients (Outlook), consider a tool such as LoadSim, for
generating mailbox content.
The SLEEP command is used to prevent the script from running again. (Without the SLEEP command, ESP
will automatically start a script from the beginning after it has finished running.)
A variation on this is to use a SEQULIST or RANDLIST option for the list of files, such as:
LOOP 10
APPEND "INBOX" SEQULIST(imap4messages.txt)
APPEND "INBOX" SEQULIST(imap4messages.txt)
ENDLOOP
Where imap4message.txt is a text file that contains a single message file name on each line.
When ESP runs this block, it replaces the listing in the imap4messages.txt file at runtime and appends that file
to the Inbox. In this way, you can maintain one file that represents your message set, in case you want to
add/remove messages in the future. Also, if you use RANDLIST instead of SEQULIST, you can obtain
random message coverage.
Tip
To avoid confusion when you try to locate files from scripts, put all files (Workspace.ini files, ESP
scripts, associated list files, and message data files) in a local directory while you work. If you want
to use relative paths, they must be relative to the script file.
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 2 "Other Mail"
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
CHECK
SLEEP RANDNUMBER(1000,2000)
NOOP
FETCH LAST 1 (UID)
UIDCOPY LAST 2 "Other Mail"
UIDSTORE LAST 2 +FLAGS (\Deleted)
CLOSE
SELECT "Other Mail"
FETCHUID
UIDFETCH 1:* (FLAGS)
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
UIDFETCH FIRST 1 (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
FETCHUID
UIDCOPY LAST 4 "Trash"
UIDSTORE LAST 4 +FLAGS (\Deleted)
SLEEP RANDNUMBER(1000,2000)
CLOSE
SELECT "INBOX"
FETCHUID
UIDFETCH 1:10 (FLAGS)
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
SLEEP RANDNUMBER(1000,2000)
UIDCOPY LAST 5 "Trash"
UIDSTORE LAST 5 +FLAGS (\Deleted)
EXPUNGE
CLOSE
SELECT "TRASH"
Exchange Server Stress and Performance 2003 Tool 49
Step 3: Run
Select all the counters under the MSExchangeIMAP4 that pertain to your script. Some helpful counters are:
• Connections Current
• Connections Total
• CAPABILITY Total
• LOGOUT Total (Compare this to Connections Total and Capability Total to ensure that all of the users are
completing the scripts.)
• UID or FETCH Rate (Several factors affect this such as server load, message size, and the type of item
requested.)
Note
Any UID commands display under the UID counters. For example, a UIDFETCH in the script appears
under the UID Perfmon counters, not under the FETCH counters.
Parameters
Table 22 lists the run-time parameters shown in the ESP UI and an explanation of each.
Statistics
The following are the run-time statistics that are reported to the ESP UI and an explanation of each (Table 23).
Statistic Description
Delete Commands Number of ldap_delete_ext calls
Compare Commands Number of ldap_compare_ext calls
Rename Commands Number of ldap_rename_ext calls
Quit Commands Number of ldap_unbind calls
Errors Number of errors
Invoked by the script command COMPARE, where m_pLdapClient is the LDAP connection pointer from
ldap_open; szDN is a pointer to the string that contains the distinguished name; szAttrib a pointer to the string
that contains the attribute name; szValue a pointer to the string that contains the attribute value.
ldap_delete_ext(m_pLdapClient, szDN, NULL, NULL, &m_msgid);
Invoked by the script command DELETE, where m_pLdapClient is the LDAP connection pointer from
ldap_open, and szDN is a pointer to the string that contains the distinguished name to be deleted.
ldap_unbind(m_pLdapClient);
Invoked by the script command QUIT, where m_pLdapClient is the LDAP connection pointer from ldap_open.
Exchange Server Stress and Performance 2003 Tool 57
Example Script
Table 25 LDAP module example script
Test Case Description
CONNECT Conducts 1000
searches for
BINDSIMPLE ANONYMOUS
users against a
LOOP 1000 directory
SEARCH SUBTREE RETURN cn,mailNickName,objectGuid DN=dc=server,dc=com; service.
FILTER=(&(displayName=userRANDNUMBER(1,1000))(objectClass=user));
SLEEP 100
ENDLOOP
QUIT
CONNECT Modifies a
user's data.
BINDSIMPLE dn=cn=administrator,cn=users,dc=server,dc=com; user name=administrator;
password=; domain=mydomain;
MODIFY DN=CN=user1,CN=Users,dc=server,dc=com; sn=RANDALPHA(10):R &&
phone=555-1212:R
QUIT
CONNECT Conditionally
modifies a set of
BINDSIMPLE dn=cn=administrator,cn=users,dc=server,dc=com; user name=administrator;
distinguished
password=; domain=mydomain;
names.
LOOP 100
IF DN=CN=userSEQUNUMBER(1,100,1),CN=Users,dc=server,dc=com;
FILTER=(objectClass=contact); MODIFY
DN=CN=userSAMESEQUNUMBER(1,100,1),CN=Users,dc=server,dc=com;
sn=RANDALPHA(10):R && phone=555-1212:R
QUIT
Run-time Parameters
The following are the run-time parameters shown in ESP UI and an explanation of each (Table 26).
SETVAR PrivateURL=File://./BackofficeStorage/
%UserDNSDomain%/MBX/TestUser1
CREATECOLLECTION %PrivateURL%/Inbox/FooFolder1
CREATERESOU CREATERESOURCE {URL/ResourceName} {optional file to Creates a resource
RCE stream in} object in the store.
SETVAR PrivateURL=File://./BackofficeStorage/
%UserDNSDomain%/MBX/TestUser1
CREATERESOURCE %PrivateURL%/FooMessage1
CREATERESOURCE %PrivateURL%/FooMessage2
MessageBody.Txt
Exchange Server Stress and Performance 2003 Tool 59
SETVAR PrivateURL=File://./BackofficeStorage/
%UserDNSDomain%/MBX/TestUser1
DELETEPROP %PrivateURL%/Inbox/FooMessage2
mapi:0x0037001f
GETMESSAGE GETMESSAGE {URL/Message} {Optional Output File} Binds to a specified
resource and
retrieves the
SETVAR PrivateURL=File://./BackofficeStorage/ resource from a
%UserDNSDomain%/MBX/TestUser1 stream object.
GETMESSAGE %PrivateURL%/Inbox/FooMessage2
GETMESSAGE %PrivateURL%/Inbox/FooMessage2
C:\TEMP\MsgOutput.Txt
GETPROP GETPROP {URL} {Property Name} {Property Type} {Output Reads a property
file} from a row.
SETVAR PrivateURL=File://./BackofficeStorage/
%UserDNSDomain%/MBX/TestUser1
GETPROP %PrivateURL%/Inbox/FooMessage3
mapi:0x0037001f STRING
GETPROP %PrivateURL%/Inbox/FooMessage3
mapi:0x00170003 INT
GETPROP %PrivateURL%/Inbox/FooMessage3
DAV:displayname STRING D:\Property1.Txt
MSGBOX $$The name of the message is %PROPVALUE%$$
GETPROP %PrivateURL%/Inbox/FooMessage3
DAV:getcontentlength INT D:\Property2.Txt
MSGBOX $$The size of the message is %PROPVALUE%$$
Note
Property Type can be [STRING | INT | BINARY]
Properties that are INT and STRING types are stored in the
system variable PROPVALUE. Each call to GETPROP replaces
the last value stored in the variable "PROPVALUE"
60 Exchange Server Stress and Performance 2003 Tool
MSGBOX $$%FooVar%$$
SETVAR X = Hi
MSGBOX %X%
Note
Any text that includes spaces must be enclosed in "$$." This also
includes variables in which the value contains spaces.
SAVEROWSET SAVEROWSET { ON | OFF} Turns ON or OFF
the persistence of an
IRowset object.
SAVEROWSET ON
SELECT $$SELECT "DAV:displayname" FROM
SCOPE('SHALLOW TRAVERSAL OF "%PrivateURL
%/INBOX/"')$$
ITERATE 100
Note
Used in conjunction with ITERATE.
Exchange Server Stress and Performance 2003 Tool 63
SETBINDFLAGS DBBINDURLFLAG_READ
DBBINDURLFLAG_WRITE
SETBINDFLAGS DBBINDURLFLAG_READWRITE
DBBINDURLFLAG_OVERWRITE
SETBINDFLAGS NULL
Note
NULL Sets the value of the flag to zero
Default value: 0
64 Exchange Server Stress and Performance 2003 Tool
SETVAR SLEEPCOMMIT=0 *** This will cause the module to not wait at all.
SETVAR SLEEPCOMMIT=250 *** This will cause the module to wait 1/4 second before
committing.
PROBBUFFSIZE Sets the amount of memory allocated each time a property is set or got via SETPROP or
GETPROP
SETVAR PROBBUFFSIZE=1024 *** Allocates 1024 bytes for SETing/GETing properties
SETVAR PROBBUFFSIZE=10000 *** Allocates 10000 bytes for SETing/GETing properties
COMPUTERNAME System variable that contains the same value as the environment variable
COMPUTERNAME
USERDNSDOMAIN System variable that contains the same value as the environment variable
USERDNSDOMAIN
HRESULT System variable that contains the last HRESULT return value from an OLEDB API call
PROPVALUE Contains the value of the last property retrieved via GETPROP
Run-time Parameters
The following are the run-time parameters shown in ESP UI and an explanation of each (Table 28).
Statistics
The following are the run-time statistics that are reported to the ESP UI and an explanation of each (Table 29).
Statistic Description
RSET Commands Number of RSET Commands
STAT Commands Number of STAT Commands
TOP Commands Number of TOP Commands
UIDL Commands Number of UIDL Commands
USER Commands Number of USER Commands
RETR 4
TOP TOP <msgnum> <numOfLines> Returns the top n number of
lines of the body from the
specified message. (Value 0
TOP 1 10 returns no body lines, only the
TOP 255 0 headers.)
Example Scripts
Table 31 POP3 module example scripts
Test Case Description
CONNECT This script connects to a user's Inbox, reads all
the messages in the Inbox, and logs out.
MAILBOX "mydom1\myuser1" mypass1
LIST
RETR ALL
QUIT
SLEEP 60000
CONNECT This script logs a series of users and deletes the
first five messages.
MAILBOX SEQULIST(myusers.txt)
LOOP 5
DELE SEQUNUMBER(1,5,1)
ENDLOOP
QUIT
There are two common methods for iterating through userlist.txt files. The first is a SEQULIST macro, and the
second is a RANDLIST macro. SEQULIST maintains a proper state of mailbox connections throughout the
test (because, unlike RANDLIST, you ensure only one client connection to any one mailbox). RANDLIST can
be useful for simulating more "real world" scenarios and gives you an additional benefit if your mailboxes are
populated with messages of varying sizes and types.
It is important to note that, although it is simple, the RETR ALL command can cause significant DISK I/O on
single-spindle systems. It is also important to note when testing a POP3 system that the typical POP3 client is
set up by default to remove all of the messages from the server after retrieving them.
NOOP
SLEEP RANDNUMBER(100,120)
%90 RSET
SLEEP RANDNUMBER(100,120)
STAT
QUIT
SLEEP RANDNUMBER(1000,2000)
The "%90" tag indicates a 90 percent chance that this command will be run.
Step 3: Run
Select all the counters under the MSExchangePOP3 that pertain to your script. Some helpful counters are:
• Connections Current
• Connections Total
• STAT Total
• QUIT Total (Compare this to STAT Total and Connections Total to ensure that all of the users are
completing the scripts.)
• RETR Rate (Several factors affect this such as server load, but also message size, and the type of item
requested.)
Run-time Parameters
The following are the run-time parameters shown in ESP UI and an explanation of each (Table 32).
Statistics
The following are the run-time statistics that are reported to the ESP UI and an explanation of each (Table 33).
-Or-
"DATA"
*(<DATASTRING command> | <DATAFILE command>)
<ENDDATA command>
where <filename> represents the file that contains the message to be sent. This file must contain the
CRLF.CRLF that is to be sent at the end of the message.
DATSTRING, DATAFILE, and ENDDATA commands are described below.
Description: if <filename> is specified, the command translates into the following SMTP exchange:
C: DATA
S: 354 …
C: <contents of file "filename"> // only if server has given the Ok
S: 250 …
If the response to "DATA" is an error, the module will not attempt to send the message body.
If <filename> is not specified, it is assumed that the message is sent in several chunks and that the ENDDATA
command specifies the end of the message. Any combination of DATASTRING and DATAFILE commands
can be between "DATA" and the ENDDATA command.
The SMTP exchange is:
C: DATA
S: 354 …
C: <send body chunk>
C: <send body chunk>
C: <send last body chunk>
S: 250 …
BDAT
Syntax: "BDAT" <filename>
Description: Sends the contents of <filename> as the message body. A server response is expected after
message is sent.
The SMTP exchange is:
C: BDAT <no_of_bytes_in_filename> LAST
C: <send contents of file "filename">
S: 250 …
Example Scripts
The following SMTP commands are described in RFC 821 (see http://www.ietf.org):
HELO
EHLO
QUIT
DATA
BDAT
MAIL
RCPT
AUTH
STARTTLS
VRFY
RSET
Example 1
Send a message with one recipient. The message body is in file body.txt. Sleep between 3 and 5 seconds
afterwards.
CONNECT
EHLO
MAIL FROM: <me>
RCPT TO: someone@somewhere
DATA body.txt
QUIT
SLEEP RANDNUMBER(3000, 5000)
Note
body.txt ends with CRLF.CRLF. You can also use BDAT instead of DATA.
Exchange Server Stress and Performance 2003 Tool 83
Example 2
Send a message with a random number of recipients. Each recipient has a random name and a random domain.
Each message has a random body file.
CONNECT
EHLO
MAIL FROM: <me>
LOOP RANDNUMBER(100, 1000)
RCPT TO: rcptRANDNUMBER(1, 20)@RANDLIST(domains.txt)
ENDLOOP
DATA RANDLIST(bodies.txt)
QUIT
Where: domains.txt contains the domains to chose from (one domain per line), and bodies.txt contains the
file names to chose from (one line name per line).
Each file listed in bodies.txt ends with CRLF.CRLF. You can also use BDAT instead of DATA. Each recipient
name is in the form: rcptX, where X is a number between 1 and 20.
Example 3
Send a message with headers generated programmatically.
CONNECT
EHLO
MAIL FROM: <me>
RCPT TO: <you>
DATA
DATASTRING From: me\nTo: you\n
DATASTRING Subject: test message #SEQUNUMBER(1, 100000, 10)\n
DATASTRING X-MsgId: SAMESEQUNUMBER(1, 100000, 10)\n\n
DATAFILE <chunk1.txt>
DATAFILE <chunk2.txt>
DATASTRING \n.\n
ENDDATA
QUIT
Neither chunk1.txt nor chunk2.txt contains the sequence CRLF.CRLF. In this example, the ending sequence is
sent explicitly. BDAT does not support this format.
84 Exchange Server Stress and Performance 2003 Tool
Example 4
Send a message on a secure line and authenticate.
CONNECT
EHLO
STARTTLS
AUTHENTICATE user "password"
MAIL FROM: <me>
RCPT TO: <you>
DATA body.txt
QUIT
The user name and password can be unquoted if they consist of only one word. An empty password is
represented as "".
Step 3: Run
Select all of the counters under the SMTP Server that pertain to your particular script. Some useful counters are
as follows:
• Connections Current
• Local Queue Length
• NDRs Generated
• Remote Queue Length
• Messages Delivered/sec
• Messages Sent/sec
• Messages Received/sec
Exchange Server Stress and Performance 2003 Tool 85
Run-time Parameters
The following are the run-time parameters shown in ESP UI and an explanation of each (Table 35).
Statistics
The following are the run-time statistics that are reported to the ESP UI and an explanation of each (Table 36).
Article number
Article message-id
Auth Auth user [password] Authenticates using the specified
user and password. If a password is
not specified, the username is used.
Sleep Sleep msec Sleeps for the specified number of
milliseconds.
Exit Exit Stops the running of the script
instance.
Any other NNTP command Any other NNTP command is sent
as a single line and expects a single
line response.
Exchange Server Stress and Performance 2003 Tool 89
Sample Script
The following is a simple sample script. First, it connects to the computer and performs a group command on a
random group. Next, it issues an xover on the entire article range, before cross-posting an article in the current
newsgroup and in two additional random newsgroups. After that, it sleeps for a time between 100 and 600
milliseconds. Finally, it retrieves a random article and sleeps for 10 milliseconds. For example:
Connect
group RANDOM
xover ALL
post c:\esp\scripts\post.txt 2
sleep RANDNUMBER(100,600)
article RAND
sleep 10
Installation
Important
The Mobile Browse module differs from the other protocol modules because it is written in managed
code and therefore requires the Microsoft .NET Frameworks V1.1.
90 Exchange Server Stress and Performance 2003 Tool
C:\WINNT\Microsoft.NET\Framework\v1.1.4322>regasm.exe c:\esp\TestMan_NET2.dll
Microsoft (R) .NET Framework Assembly Registration Utility 1.1.4322.573
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.
If an error occurs, check your .NET installation and reinstall or update them according to the requirements
specified above. Ensure that you are in the correct directory and that you have specified the path to the ESP
module DLL files to avoid additional potential problems.
To complete the process, close ESP, if it is open, and then restart the application.
92 Exchange Server Stress and Performance 2003 Tool
Run-time Parameters
The following are the run-time parameters shown in ESP UI and an explanation of each (Table 37).
Statistics
The following are the run-time statistics that are shown in the ESP UI and an explanation of each (Table 38).
Statistic Description
Unknown Commands Number of Unknown commands executed
AUTH user10@omatest.com
myPassword
LOGIN No Parameters Finishes the Logon process and
establishes the user session.
CLICKLINK CLICKLINK <Link Name> Sends a request to follow the link
specified by <Link Name>.
CLICKITEM No Parameters Selects a random item from the
current folder.
User Agents
User agents determine the rendering and format of the responses returned to the client. The ESP Mobile
Browse module currently supports only HTML. The only HTML browsers Outlook Web Access supports are
Pocket IE 3.02 and 4.01. Other HTML browsers, such as IE 6, can be used, but they will generate unsupported
device warning messages when the script is run, and an additional line must be added to the script to handle
this condition. Outlook Web Access is not guaranteed to function properly when using an unsupported device.
Script Body
The Mobile Browse module implements a simple UI-based scripting model, which simulates a user following
links on their device. The script must be written in a linear, step-by-step fashion. You cannot jump directly to a
location or action, and only the links visible to the user can be selected at any time. If you attempt to follow
nonexistent links, this will result in errors.
The parameter to the CLICKLINK keyword is the link that the user wants to follow. The script engine uses
text matching to determine which link is to be selected and sent in the next request. The parameter must be in
the form of the complete first word of the target string or in the form of multiple complete words. The string to
be matched is the folder name when viewing a folder list, the command name when following an action link, or
the subject line of an item within a folder.
96 Exchange Server Stress and Performance 2003 Tool
For example, when currently in the Inbox, the command CLICKLINK test will match messages with subjects
such as test message, testing another test item, and so on. Matching is case sensitive. In the case of multiple
matches, a link to follow will be selected randomly. If there are no matches, a script error will occur, and that
user instance will stop and restart with a new user, as specified by the AUTH command.
You can use the CLICKITEM keyword in place of the CLICKLINK keyword when inside a folder. It requires
no parameters and returns a random selection from the available items regardless of the subject line. If the
folder is empty, a warning, instead of an error, will be reported to the ESP UI. The user instance will still stop
and restart.
Good scripting form uses CLICKLINK for folders and actions and CLICKITEM for items. This requires both
the script and the user data to be created in such a way that all subsequent actions will be valid on any
randomly selected folder item. If a particular folder item is required, it must have a unique subject line.
Fields that require user input, such as creating items or entering search strings, can be scripted by using the
CLICKLINK keyword, followed by the link string OK, followed by the string representing the user input to the
text box.
Example Script
The following script provides an example of creating a Mobile Browse session by randomly selecting a user in
the test domain with a password of pwd. The script logs in the user and performs some actions on the mailbox.
SET $OMADIR$ OMA
SET $OMAHOME$ oma.aspx
REM SET $LOGREQUEST$ TRUE
REM SET $LOGRESPONSE$ TRUE
REM SET $INFOREPORT$ TRUE
REM~~~~~~~Inbox Actions~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CLICKLINK Inbox
CLICKLINK Test
CLICKLINK Delete
CLICKLINK Close
CLICKITEM
CLICKLINK Reply
CLICKLINK Message:
CLICKLINK Ok This is my reply to your message
CLICKLINK Send
Exchange Server Stress and Performance 2003 Tool 97
CLICKLINK Close
CLICKLINK Folders
CLICKLINK MySubFolder
CLICKLINK Test
CLICKLINK Home
SLEEP 3000
REM~~~~~~~Calendar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%50 SKIP 8
CLICKLINK Calendar
CLICKLINK Go To Day
CLICKLINK <
CLICKLINK 22
CLICKITEM
CLICKLINK Details
CLICKLINK Home
SLEEP 3000
REM~~~~~~~End Calendar~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SKIP 8
Step 3: Run
Run the written script. If the test is running correctly, you will see the counters incrementing upward in the
ESP statistics pane. If you see the number of errors incrementing, this indicates a script problem. Additionally
if HTTP 500s are being returned, you must verify that the Exchange Vroot is running and that you can access
Exchange Server Stress and Performance 2003 Tool 99
Outlook Mobile Access through Internet Explorer. For more information, see "Debugging Script Errors" earlier
in this document.
Run-time Parameters
The following are the run-time parameters shown in the ESP user interface and an explanation of each
(Table 40).
100 Exchange Server Stress and Performance 2003 Tool
Statistics
The following are the run-time statistics that are reported to the ESP user interface and an explanation of each
(Table 41).
Statistic Description
100 Level Status Total number of 100 status-level responses received from the server
200 Level Status Total number of 200 status-level responses received from the server
300 Level Status Total number of 300 status-level responses received from the server
400 Level Status Total number of 400 status-level responses received from the server
500 Level Status Total number of 500 status-level responses received from the server
Unknown Level Status Total number of unknown status level responses received by the server
AUTHENTICATE Command Total number of AUTHENTICATE requests
GETHIERARCHY Command Total number of GETHIERARCHY and FOLDERSYNC requests
GETESTIMATE Command Total number of GETESTIMATE requests
SYNC Command Total number of SYNC requests
SYNCADD Command Total number of SYNCADD requests
SYNCDEL Command Total number of SYNCDEL requests
SYNCCHANGE Command Total number of SYNCCHANGE requests
SYNCFETCH Command Total number of SYNCFETCH requests
SENDMAIL Command Total number of SENDMAIL requests
SLEEP Command Total number of SLEEP requests
SETDEVICETYPE Command Total number of SETDEVICETYPE requests
SETDEVICEID Command Total number of SETDEVICEID and SETDEVICEID2 requests
SETEMAILTRUNCATION Total number of SETEMAILTRUNCATION requests
Command
SETEMAILFILTER Command Total number of SETEMAILFILTER requests
SETCALENDARFILTER Total number of SETCALENDARFILTER requests
Command
FOLDERCREATE Command Total number of FOLDERCREATE requests
FOLDERDELETE Command Total number of FOLDERDELETE requests
NOTIFY Command Total number of NOTIFYPROVISION and NOTIFYBINDING
requests
FOLDERDELETE test
NOTIFYPROVISION NOTIFYPROVISION "<device smtp Provisions the device for
address>" notification.
NOTIFYPROVISION
"4251234567@carrier.com"
NOTIFYBINDING NOTIFYBINDING <folder binding life Sets up folder bindings for
time in minutes> [ default | none] notification.
The lifetime value must be between 0 and Can only be called after
9999. provisioning the device. That
is, after calling
If the optional parameter is not specified,
NOTIFYPROVISION.
it sets the binding for all possible folders.
When the optional parameter is set to:
Default – it sets the binding for only
inbox/contacts/calendar folders.
None - all folder binding will be deleted.
NOTIFYBINDING 100
NOTIFYBINDING 200 default
Exchange Server Stress and Performance 2003 Tool 103
SETDEVICETYPE PocketPC
SETEMAILFILTER SETEMAILFILTER <filter value> Sets the e-mail filter for the e-
mail SYNC operation.
The filter value can be one of the
following: The default filter is 1WEEK.
1DAY
3DAYS
1WEEK
2WEEKS
1MONTH
3MONTHS
SETEMAILFILTER 1MONTH
104 Exchange Server Stress and Performance 2003 Tool
SETEMAILTRUNCATION 5K
SETCALENDARFILTER SETCALENDARFILTER <filter value> Sets the calendar filter for the
calendar SYNC operation.
The filter value can be one of the
following: The default filter is 2WEEKS.
1DAY
3DAYS
1WEEK
2WEEKS
1MONTH
3MONTHS
SETCALENDARFILTER 1MONTH
SETSYNCWINDOWSIZE SETSYNCWINDOWSIZE <window Sets the window size for the
size> SYNC operations.
The Window Size must be an integer
value between 10 and 2000.
SETSYNCWINDOWSIZE 100
SYNC SYNC <folder name> Performs the Nexus Sync
command on the specified
folder.
SYNC Inbox
Exchange Server Stress and Performance 2003 Tool 105
SYNCDEL Inbox.RND
SYNCCHANGE SYNCCHANGE <folder name>.<script Performs a change to an item
function> ["<filename>"] in a specified folder. If no file
is provided, the module will
The first parameter indicates the folder in
change it to a certain item.
which you want to edit an item.
The change will be effective
The second parameter is a script function
only after a SYNC is called on
that indicates the item to be changed.
the folder.
The optional parameter is a file containing
an iCal or a vCard, depending on the first
parameter to which the current item will
be changed.
SYNCCHANGE Calendar.FIRST
SYNCCHANGE Contacts.RND
"updatedcontact.vcf"
SYNCFETCH SYNCFETCH <folder name>.<script Performs a fetch on an item in
function> a specified folder.
The first parameter indicates the folder in The fetch will be effective
which you want to fetch an item. only after a SYNC is called on
the folder.
The second parameter is a script function
that indicates the item to be fetched.
SYNCFETCH Calendar .FIRST
SENDMAIL SENDMAIL "<message file path>" Sends an e-mail message
represented by the message
The message file must have an RFC822
file.
message
SENDMAIL "c:\temp\msg-1k.txt"
106 Exchange Server Stress and Performance 2003 Tool
ADDMAILRECIPIENT If ADDMAILRECIPIENT
"test1@microsoft.com" command is not called before a
SENDMAIL command, the
mail is sent to the recipient in
the message file.
The next SENDMAIL
command will clear the
previously added recipients.
Script Functions
The following reserved word variables act as script functions that traversal and item access mechanism. These
script functions are named and described below (Table 43).
Script Object
The module employs a script object reserved by the name FOLDER to allow the script user to perform
manipulation on individual folder(s) and folder items.
The FOLDER object is used as a parameter for the script verbs that need folder information, for example,
SYNC FOLDER("Inbox").
When the Script functions are used on the FOLDER object, together they allow the script user to do traversal,
access, and manipulation of folder(s) and folder item(s), for example, FOLDER.FIRST, FOLDER.NEXT,
SYNC (FOLDER #8).
Example Script
Table 44 Mobile Synch module example script
Test Case Description
AUTHENTICATE RANDLIST(C:\users.txt ) Gets a random user credential from
the user's text file.
SLEEP RANDNUMBER(1000,2000)
GETHIERARCHY Gets the user's folder hierarchy.
NOTIFYPROVISION SEQUNUMBER(1,30000)@remote.com" Provisions device for notifications and
binds default folders
NOTIFYBINDING 60 default
(inbox/contacts/calendar) for one
hour.
SLEEP RANDNUMBER(60000,180000) Syncs each folder for the first time to
set up partnership. No item is synced
SYNC calendar
down yet.
SYNC contacts
SYNC inbox
GETESTIMATE calendar Gets number of items that will be
synced in each folder.
GETESTIMATE contacts
GETESTIMATE inbox
108 Exchange Server Stress and Performance 2003 Tool
Step 3: Run
To successfully run the suites in your environment, you must create the following files (Table 45).
Exchange Server Stress and Performance 2003 Tool 109
For the purposes of this verification, start with a single user in the users.txt file that will be logged in to.
Likewise, listing the same user in the recipients.txt file will ensure that testing has been isolated to a single user
who should be sending and receiving all messages. To start, the goal is to reduce complexity so that you can
verify that these suites can be run.
Other variables and script entries may need to be updated to run required scenarios, but the defaults should run
successfully. For a list of other potential changes, see the section titled "ESP Modules."
Additional Resources
For the latest documentation about Microsoft Exchange Server 2003, go to the Microsoft Exchange Technical
Library at http://www.microsoft.com/exchange/library. The Microsoft Knowledge Base articles
provide additional information that will help you use ESP 2003.
110 Exchange Server Stress and Performance 2003 Tool
Does this tools document help you? Give us your feedback. On a scale of 1 (poor) to 5 (excellent), how do
you rate this book?
Mail feedback to exchdocs@microsoft.com.