WARNING: This web is not used anymore. Please use PDBService.OracleRACLoadTesting instead!
 

Introduction

This framework has be created to answer the needs for stress testing and performance benchmarking in the IT/PSS/DP section.

Here is a picture of how the application works :

Architecture

  • 1. The manager script executes via SSH another python script on the different client nodes.
  • 2. The script then spawns several client programs that run against the database.
  • 3. While the test is running each client releases some data in a log file in a shared folder.
  • 4. At any time during or after the test, the user can execute the report generator which gathers information from the log files and generate a web-based report.
  • 5. When the test is running the manager queries the database and gathers information from log files for monitoring purposes.

Installation

Here are the steps to follow to install and configure the framework : OracleRACLoadTestingInstall

Use the scripts

Start a test

The manager script is used with one parameter : the test name.

$ ./startTest.py 2007_12_01_COOL_2_2_2

During the test, some monitoring information is displayed on the output. (number of sessions, objects inserted, RAC CPU stats, wait events stats)

You can also use the script statClients.py to check the sessions on the RAC.

Generate a report

The script reportTest.py needs the same parameter used for startTest.py (the name of the test). You will be asked to fill a little description explaining what is done during this test. Then it will generate a web page you can visit from the website you created previously.

Abort / stop a test

stopTest.py allows you to stops the test whenever you want. The parameter is still the test name but you can also use the word clean to abort the test.

How to create a test case

Input format

The client program may be a Python script or a binary.

If the client program is a binary, you should be sure that all the required environment variables are set correctly on the client machines and 3 parameters will be given to the client as parameters: 1. the ID number of the client, 2. the maximum time between each output, 3. the name of the file where to write the results.

For a Python script you can extend the class Client (client.py). Then the script will have access to the configuration variables : clientId, reportPeriod and logFileModel. They have the same meaning as the parameters provided to the binary version.

The first parameter makes it easier to create a complex scenario when there is a possibility to identify each client and affect different tasks or parameters to them depending on this id.

The second parameter allows you to change the refresh feature directly from the configuration file. It frees the developer from the need of recompiling the client (if in C++ for example) to lower the output frequency. This kind of operation is needed when we do scaling tests, increasing the number of clients after each test iteration.

The last parameter is the beginning of the file name where the client should write. It should append the extension depending on the type of message : .csv for the result file and .err for the error file.

Output format

The specification for the output file is described bellow. It allows the framework to compute this file during the test for monitoring purpose and after for analysis. The client should write the output into the file identified by the third parameter. Note that the AFS operating mode requires the client to open and close the file for each line written into the file so it triggers a synchronisation with the other machines. The CSV format is the most relevant format in this case. It also allows to open the file with a spreadsheet application. The data structure is an array composed of different columns such as:

Timestamp elapsed Time since the last output Metric 1 Metric 2 ... Total Metric 1 Total Metric 2 ...

Note that the total would be an average in case of response time instead of throughput.

A header should be added to the result file, thus it would resemble to something like this:

1178543359.25;0;Num. objects;Total num. objects
1178543369.82;10.567964077;13013;13013
1178543380.03;10.2149808407;18018;31031
1178543390.46;10.4295310974;9009;40040
1178543400.91;10.4497208595;21021;61061
...

Tutorial : testing data insertion with COOL

A quick tutorial explains how to configure and use the framework : OracleRACLoadTestingTuto

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng distributed_struct.png r1 manage 26.1 K 2007-12-07 - 10:12 RomainBasset Architecture
Edit | Attach | Watch | Print version | History: r33 < r32 < r31 < r30 < r29 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r33 - 2007-12-10 - RomainBasset
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    PSSGroup All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback