Simulate Concurrent Usage

The Simulate Concurrent Usage REST API executes different concurrent operations on an environment by simulating users. It can be used to validate the performance of the environment to verify that the response time is acceptable when the service is under the load during specific operations run by a specific number of users. For example, it can be used to measure performance when 50 users simultaneously open a form using different POVs. It allows the self-service load testing of environments.

This REST API performs the simulation by executing the specified operations for a given number of users and iterations. It runs multiple iterations to calculate the minimum time, the maximum time and the average time for a particular operation. It supports these operations to perform concurrent usage load testing:

  • Open forms

  • Save forms

  • Run business rules

  • Run data rules

  • Open ad hoc grids

  • Execute report

  • Execute book

Note:

This API executes the specified operations on the current environment and may, depending on the operation, update the data in the environment. Run this API on test environments. Running this API on production environments is not advised.

This REST API accepts a ZIP file, that must already have been uploaded to the environment, as input. The ZIP file contains one requirement.csv file, and the input files that support the use cases included in requirement.csv. It can also optionally contain a userVarMemberMapping.csv file to provide user variable member mapping and an options.xml file to provide Smart View options for some use cases. The REST API then simulates the use cases and creates a report that may be emailed to one or more recipients.

This REST API is version v1.

Required Roles

Service Administrator (Identity Domain Administrator is also required to use testModes 0, 1, and 2.)

REST Resource

POST /interop/rest/v1/concurrentusage/run

Supported Media Types: application/json

Note:

Before using the REST resources, you must understand how to access the REST resources and other important concepts. See Implementation Best Practices for EPM Cloud REST APIs. Using this REST API requires prerequisites. See Prerequisites.

The following table summarizes the request parameters.

Table 13-2 Parameters

Name Description Type Data Type Required Default
inputFile

The name of the zip file that contains concurrent usage test cases. The zip file should contain a file named requirement.csv, which contains the details of all the operations to execute for this simulation test, and the input files that contain the details of each operation. It can also optionally contain a userVarMemberMapping.csv file to provide user variable member mapping and an options.xml file to provide Smart View options for some use cases.

For information on how to create these files, see Preparing to Run the simulateConcurrentUsage Command in Working with EPM Automate for Oracle Enterprise Performance Management Cloud.

Use the Upload REST API to upload the zip file to the environment prior to calling this REST API.

Payload String Yes None
numberOfIterations Number of iterations each use case identified in requirement.csv has to run to measure the response time. Payload Integer No 1
notificationEmails Email addresses of the recipients to whom the result will be sent at the end of the concurrent usage simulation. The emails must be separated by semi-colons and enclosed in double quotes. For example: "jdoe@example.com;jane.doe@example.com". Payload String No Email of the user who executed the API
lagTime Number of seconds (5 seconds or more) between the execution of each use case in requirement.csv. Payload Integer No 5
testMode

Mode in which concurrent usages simulation has to run. Possible values are 0, 1, 2 and 3.

  • 0 – Default mode: Adds simulated users to the environment and assigns them the Service Administrator role, runs the simulation, and then deletes the simulated users. This mode is useful if you want to run the test only one time. The simulated users have these properties:

    • First Name: testuser1, testuser2, and so on

    • Last Name: testuser1, testuser2, and so on

    • Email Address: testuser1@example.oracle.com, testuser2@example.oracle.com, and so on

    • Username: testuser1, testuser2, and so on

  • 1 – Add Users Only: Adds simulated users to the environment and assigns them the Service Administrator role, but does not run the simulation or delete the simulated users.

  • 2 – Delete Users Only: Deletes simulated users created in a previous concurrent usage simulation run. Does not create users or run the simulation.

  • 3 – Simulation Only: Runs the simulation using already existing simulated users without adding or deleting users.

  • 4 – Use Existing Users: Includes users defined in the users.csv file included in the input ZIP file. In this mode, the simulated users are not created.

Payload Integer No 0

Example URL and Payload

https://<BASE URL>/interop/rest/v1/concurrentusage/run
{
	"inputFile": "<ZIP_FILE_NAME>",
	"numberOfIterations": 1,
	"testMode": 0,
	"notificationEmails": "<EMAIL_ADDRESS>",
	"lagTime": 5
}

Sample Request

{
    "inputFile" : "InputFiles2.zip",
    "numberOfIterations" : 1,
    "testMode" : 0,
    "notificationEmails" : "abc@example.oracle.com",
    "lagTime" : 10
}

Response

Supported Media Types: application/json

Table 13-3 Parameters

Name Description
details In the case of errors, details are published with the error string
status See Migration Status Codes
links Detailed information about the link
href Links to API call or status API
action The HTTP call type
rel Possible values: self or Job Status. If the value is set to Job Status, you can use the href to get the status
data null

Example of Response Body

Example 1: Error Case

{
	"details": "InputFile is missing in request body",
	"status": 1,
	"items": null,
	"links": [{
		"href": "https://<BASE URL>/interop/rest/v1/concurrentusage/run",
		"action": "POST",
		"rel": "self",
		"data": {
			"jobType": "RUN_CONCURRENTUSAGE",
			"numberOfIterations": 2,
			"testMode": 0,
			"lagTime": 5,
			"inputfile": "",
			"notificationEmails": "abc@example.oracle.com"
		}
	}]
}

Example 2: Success Case

{
	"details": null,
	"status": -1,
	"items": null,
	"links": [{
		"href": "https://<BASE URL>/interop/rest/v1/concurrentusage/run",
		"action": "POST",
		"rel": "self",
		"data": {
			"jobType": "RUN_CONCURRENTUSAGE",
			"numberOfIterations": 2,
			"testMode": 0,
			"lagTime": 5,
			"inputfile": "InputFiles2.zip",
			"notificationEmails": "abc@example.oracle.com"
		    }
	        },
		{
			"href": "https://<BASE URL>/interop/rest/v1/concurrentusage/jobs/437838742934700",
			"action": "GET",
			"rel": "Job Status",
			"data": null
		}
	]
}