The concurrency test example is designed to allow any number of test machines to attempt to access a server database at the same time. This tests for problems with concurrency, such as deadlock or out-of-sequence writes.
This example uses only one application. However, it is coded in the style required by the multi-application environment because you will probably want to use an Agent to start and initialize the server during this type of test. There is no requirement in the client/server environment that you use the single-application style of test case just because you are driving only one application. For consistency of coding style, you will probably find it convenient to always use the multi-application files and functions.
For detailed information on the code example, see Concurrency Test Explained.
const ACCEPT_TIMEOUT = 15 multitestcase MyTest (LIST OF STRING lsMachine) STRING sMachine INTEGER iSucceed STRING sError for each sMachine in lsMachine SetUpMachine (sMachine, Personnel) SetMultiAppStates () /*** HAVE EACH MACHINE EDIT THE SAME EMPLOYEE ***/ for each sMachine in lsMachine spawn /*** SET THE CURRENT MACHINE FOR THIS THREAD ***/ SetMachine (sMachine) /*** EDIT THE EMPLOYEE RECORD "John Doe" ***/ Personnel.EmployeeList.Select ("John Doe") Personnel.Employee.Edit.Pick () /*** CHANGE THE SALARY TO A RANDOM NUMBER BETWEEN 50000 AND 70000 ***/ Employee.Salary.SetText ([STRING] RandInt (50000, 70000)) rendezvous /*** ATTEMPT TO HAVE EACH MACHINE SAVE THE EMPLOYEE RECORD ***/ for each sMachine in lsMachine spawn /*** SET THE CURRENT MACHINE FOR THIS THREAD ***/ SetMachine (sMachine) /*** SELECT THE OK BUTTON ***/ Employee.OK.Click () /*** CHECK IF THERE IS A MESSAGE BOX ***/ if (MessageBox.Exists (ACCEPT_TIMEOUT)) SetMachineData (NULL, "sMessage", MessageBox.Message.GetText ()) MessageBox.OK.Click () Employee.Cancel.Click () else if (Employee.Exists ()) AppError ("Employee dialog not dismissed after {ACCEPT_TIMEOUT} seconds") rendezvous /*** VERIFY THE OF NUMBER OF MACHINES WHICH SUCCEEDED ***/ iSucceed = 0 for each sMachine in lsMachine sError = GetMachineData (sMachine, "sMessage") if (sMessage == NULL) iSucceed += 1 else Print ("Machine {sMachine} got message '{sMessage}'") Verify (iSucceed, 1, "number of machines that succeeded")