2 - Remote User API
Portal Server Remote User API Specification
Generating an Authentication Token
To perform a Remote User API call, you must first sign in into the portal and generate an “API Authentication Token”.
When generating the token you can enter a purpose (only used as information) and also restrict the remote IP addresses for which the token is valid.


API Functions
The API supports the following functions (so-called “actions”):
Common Functions:
- getUserAccountInfo (Get information about the own user account)
- getPricePlanInfo (Get information about the current price plan)
Projects, Resource Sets and Files Functions:
- getProjectTree (Get the project tree inclusive all resource sets and all file information)
- createProject (Create a new project)
- deleteProject (Delete a project)
- getResourceSetsOfProject (Get all resource sets of a project, inclusive all file information)
- createResourceSet (Create a new resource set)
- deleteResourceSet (Delete a resource set)
- getFilesInfoOfResourceSet (Get all files information of a resource set)
- createFile (Create or overwrite a file)
- getFile (Get the content of a file and the file information)
- deleteFile (Delete a file)
Measuring Agents Functions:
- getMeasuringAgents (Get all defined measuring agents)
- getMinRequiredMeasuringAgentVersion (Get the minimum required measuring agent version)
- addMeasuringAgent (Add a new measuring agent)
- pingMeasuringAgent (Ping a measuring agent)
- setMeasuringAgentActive (Set the state of a measuring agent to active or inactive)
- deleteMeasuringAgent (Delete a measuring agent)
Measuring Agent Cluster Functions:
- getMeasuringAgentClusters (Get all defined measuring agent clusters)
- getClusterControllers (Get all cluster controllers and for each cluster controller a list of measuring agent clusters which are referencing the cluster controller)
- getMinRequiredClusterControllerVersion (Get the minimum required cluster controller version)
- pingClusterController (Ping a cluster controller)
- addMeasuringAgentCluster (Add a new measuring agent cluster)
- addMemberToMeasuringAgentCluster (Add a member to a measuring agent cluster)
- removeMemberFromMeasuringAgentCluster (Remove a member from a measuring agent cluster)
- pingMeasuringAgentClusterMembers (Ping the cluster members of a measuring agent cluster via cluster controller)
- setMeasuringAgentClusterActive (Set the state of a measuring agent cluster to active or inactive)
- deleteMeasuringAgentCluster (Delete a measuring agent cluster)
HTTP/S Remote Proxy Recorders Functions:
- getProxyRecorders (Get all defined HTTP/S proxy recorders)
- getMinRequiredProxyRecorderVersion (Get the minimum required HTTP/S proxy recorder version)
- addProxyRecorder (Add a new HTTP/S proxy recorder)
- pingProxyRecorder (Ping a HTTP/S proxy recorder)
- deleteProxyRecorder (Delete a HTTP/S proxy recorder)
- getProxyRecordersClientCertificates (Get all client certificates for HTTP/S proxy recorders)
- addProxyRecordersClientCertificate (Add a client certificate for HTTP/S proxy recorders)
- setProxyRecordersClientCertificateActive (Set a client certificate for HTTP/S proxy recorders to active or inactive)
- modifyProxyRecordersClientCertificate (Modify a client certificate for HTTP/S proxy recorders)
- deleteProxyRecordersClientCertificate (Delete a client certificate for HTTP/S proxy recorders)
Load Test Jobs Functions:
- getTestjobTemplates (Get all test job templates)
- defineNewTestjobFromTemplate (Define new test job from template)
- submitTestjob (Submit a ‘defined’ test job to the measuring agent or to the cluster controller)
- makeTestjobReadyToRun (Turn a remote test job which is in the state ‘submitted’ into the state ‘ready to run’)
- startTestjob (Turn a remote test job which is in the state ‘ready to run’ into the state ‘running’)
- getMeasuringAgentTestjobs (Get from a measuring agent all testjobs, inclusive their states)
- getTestjobOutDirectoryFilesInfo (Get from testjob information about all files located in a measuring agent job or cluster controller job ‘out’ subdirectory)
- getTestjobOutDirectoryFile (Get from a measuring agent or from a cluster controller the content of a file located in a testjob/cluster-job out subdirectory in base64 format)
- saveTestjobOutDirectoryFileToProjectTree (Get from a measuring agent or from a cluster controller the content of a file located in a testjob/cluster-job out subdirectory and save it in a resource set of the project tree)
- deleteTestjob (Delete a testjob locally and also on the measuring agent or cluster controller)
Example
API HTTP/S Request
curl -v --request POST --header "Content-Type: application/json" --data {\"authTokenValue\":\"jPmFClqeDUXaEk8Q274q\",\"action\":\"getUserAccountInfo\"} https://portal.realload.com/RemoteUserAPI
API Request Data
{
"authTokenValue": "jPmFClqeDUXaEk8Q274q",
"action": "getUserAccountInfo"
}
API Response Data
{
"userAccountInfo":{
"userId":48,
"nickname":"BET",
"firstName":"Bettina",
"lastName":"MeierHans",
"primaryEmail":"bettina@meierhans.id.au",
"primarySMSPhone":"+61401111111",
"secondaryEmail":"",
"secondarySMSPhone":"",
"accountBlocked":false,
"accountCreateTime":1623719604561,
"lastLoginTime":1625348376450,
"lastLoginIP":"127.0.0.1",
"pricePlanId":6,
"accountExpiresTime":1625953109397,
"pricePlanTitle":"BASIC1"
},
"isError":false
}
If the API call is successful, then the response field “isError” is false.
If a numeric field has a value of -1 (minus one), this means “no data” or “unlimited” depending on the context.
getUserAccountInfo
Specific Request Fields:
Specific Error Flags:
getPricePlanInfo
Specific Request Fields:
Specific Error Flags:
JSON Response Example:
{
"pricePlanInfo":{
"pricePlanId":6,
"title":"BASIC1",
"description":"",
"isDeprecated":false,
"lastModified":1625348413042,
"maxDiskSpaceMB":1024,
"maxSubUserAccounts":0,
"maxMeasuringAgentsOwnedByUser":3,
"maxRemoteProxyRecordersOwnedByUser":3,
"executeLoadJobsEnabled":true,
"executeMonitoringJobsEnabled":false,
"apiAccessEnabled":true,
"maxStartLoadJobsLast24h":24,
"maxUsersPerLoadJob":500,
"maxDurationPerLoadJob":1800
},
"isError":false
}
The unit for “maxDurationPerLoadJob” is seconds.
getProjectTree
Specific Request Fields:
Specific Error Flags:
JSON Response Example:
{
"projectsArray": [
{
"projectId": 97,
"projectName": "Common",
"projectDescription": "",
"resourceSetsArray": [
{
"resourceSetId": 154,
"resourceSetName": "Input Files",
"resourceSetDescription": "",
"filesArray": [
{
"fileName": "InputFile.txt",
"fileSize": 233,
"fileHashCode": 1873256029,
"fileLastModified": 1613835992073
}
]
},
{
"resourceSetId": 155,
"resourceSetName": "Jar Files",
"resourceSetDescription": "",
"filesArray": [
{
"fileName": "com.dkfqs.tools.jar",
"fileSize": 578087,
"fileHashCode": -2033420926,
"fileLastModified": 1613838181727
}
]
},
{
"resourceSetId": 156,
"resourceSetName": "Plug-Ins",
"resourceSetDescription": "",
"filesArray": [
{
"fileName": "HttpSessionPlugin_ChangeCopyright.json",
"fileSize": 5321,
"fileHashCode": 1958407366,
"fileLastModified": 1613838287871
}
]
}
]
},
...
...
...
],
"isError": false
}
createProject
Specific Request Fields:
- projectName
- projectDescription (optional)
Response Fields:
Specific Error Flags:
- projectNameError
- diskSpaceLimitExceededError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"createProject",
"projectName":"My New Project",
"projectDescription": "Created by API call"
}
JSON Response Example (Success Case):
{"projectId":113,"isError":false}
JSON Response Example (Error Case):
{"isError":true,"genericErrorText":"","diskSpaceLimitExceededError":false,"projectNameError":true}
deleteProject
Specific Request Fields:
- projectId
- moveToTrash (optional, default: false)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteProject",
"projectId":113,
"moveToTrash":false
}
getResourceSetsOfProject
Specific Request Fields:
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getResourceSetsOfProject",
"projectId":97
}
JSON Response Example (Success Case):
{
"resourceSetsArray": [
{
"resourceSetId": 154,
"resourceSetName": "Input Files",
"resourceSetDescription": "",
"filesArray": [
{
"fileName": "InputFile.txt",
"fileSize": 233,
"fileHashCode": 1873256029,
"fileLastModified": 1613835992073
}
]
},
{
"resourceSetId": 155,
"resourceSetName": "Jar Files",
"resourceSetDescription": "",
"filesArray": [
{
"fileName": "com.dkfqs.tools.jar",
"fileSize": 578087,
"fileHashCode": -2033420926,
"fileLastModified": 1613838181727
}
]
},
{
"resourceSetId": 156,
"resourceSetName": "Plug-Ins",
"resourceSetDescription": "",
"filesArray": [
{
"fileName": "HttpSessionPlugin_ChangeCopyright.json",
"fileSize": 5321,
"fileHashCode": 1958407366,
"fileLastModified": 1613838287871
}
]
}
],
"isError": false
}
createResourceSet
Specific Request Fields:
- projectId
- resourceSetName
- resourceSetDescription (optional)
Response Fields:
Specific Error Flags:
- projectIdError
- resourceSetNameError
- diskSpaceLimitExceededError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"createResourceSet",
"projectId":97,
"resourceSetName":"My New Resource Set",
"resourceSetDescription": "Created by API call"
}
JSON Response Example (Success Case):
{"resourceSetId":172,"isError":false}
JSON Response Example (Error Case):
{"isError":true,"genericErrorText":"","resourceSetNameError":true,"projectIdError":false,"diskSpaceLimitExceededError":false}
deleteResourceSet
Specific Request Fields:
- projectId
- resourceSetId
- moveToTrash (optional, default: false)
Specific Error Flags:
- projectIdError
- resourceSetIdError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteResourceSet",
"projectId":97,
"resourceSetId":172,
"moveToTrash":false
}
getFilesInfoOfResourceSet
Specific Request Fields:
Specific Error Flags:
- projectIdError
- resourceSetIdError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getFilesInfoOfResourceSet",
"projectId":23,
"resourceSetId":143
}
JSON Response Example:
{
"filesArray": [
{
"fileName": "DKFQSLibrary2.psm1",
"fileSize": 16339,
"fileHashCode": -1503445747,
"fileLastModified": 1603566144851
},
{
"fileName": "powershell-http-bern2.ps1",
"fileSize": 12900,
"fileHashCode": -1174212096,
"fileLastModified": 1603566162094
},
{
"fileName": "TestResult_powershell-http-bern2Neu_2020-10-24@21-06-04.json",
"fileSize": 14395,
"fileHashCode": -951574615,
"fileLastModified": 1603566379097
},
{
"fileName": "TestResult_powershell-http-bern2Neu_2020-10-24@21-09-45.json",
"fileSize": 55128,
"fileHashCode": 1499924815,
"fileLastModified": 1603566591322
}
],
"isError": false
}
createFile
Specific Request Fields:
- projectId
- resourceSetId
- fileName
- fileContentB64 (the content of the file, in Base64 format)
Response Fields:
- fileName
- fileSize
- fileHashCode
- fileLastModified
Specific Error Flags:
- projectIdError
- resourceSetIdError
- fileNameError
- diskSpaceLimitExceededError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"createFile",
"projectId":23,
"resourceSetId":143,
"fileName":"test.txt",
"fileContentB64":"VGhpcyBpcyB0aGUgY29udGVudCBvZiB0aGUgZmlsZS4="
}
JSON Response Example (Success Case):
{
"fileName":"test.txt",
"fileSize":32,
"fileHashCode":-1460278014,
"fileLastModified":1625423562384,
"isError":false
}
JSON Response Example (Error Case):
{"isError":true,"genericErrorText":"","projectIdError":false,"resourceSetIdError":false,"diskSpaceLimitExceededError":false,"fileNameError":true}
getFile
Specific Request Fields:
- projectId
- resourceSetId
- fileName
Response Fields:
- fileName
- fileContentB64 (the content of the file, in Base64 format)
- fileSize
- fileHashCode
- fileLastModified
Specific Error Flags:
- projectIdError
- resourceSetIdError
- fileNameError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getFile",
"projectId":23,
"resourceSetId":143,
"fileName":"test.txt"
}
JSON Response Example (Success Case):
{
"fileName":"test.txt",
"fileContentB64":"VGhpcyBpcyB0aGUgY29udGVudCBvZiB0aGUgZmlsZS4=",
"fileSize":32,
"fileHashCode":-1460278014,
"fileLastModified":1625423562384,
"isError":false
}
deleteFile
Specific Request Fields:
- projectId
- resourceSetId
- fileName
- moveToTrash (optional, default: false)
Response Fields:
- fileDeleted (a flag which is true if the file was deleted)
Specific Error Flags:
- projectIdError
- resourceSetIdError
- fileNameError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteFile",
"projectId":23,
"resourceSetId":143,
"fileName":"test.txt",
"moveToTrash":false
}
JSON Response Example (Success Case):
{"fileDeleted":true,"isError":false}
JSON Response Example (Error Case):
{"isError":true,"genericErrorText":"","projectIdError":false,"resourceSetIdError":false,"fileNameError":true}
getMeasuringAgents
Specific Request Fields:
Response Fields:
- agentId (the unique measuring agent id)
- createdBySystem (normally false, true = the user cannot modify or delete the measuring agent)
- ownerUserId (always the same as the user account id)
- agentActive (flag: if false then the availability of the measuring agent is not monitored)
- agentDescription
- agentHost
- agentPort
- authToken (the authentication token to access the measuring agent, or an empty string = no access protection | don’t confuse it with the API authTokenValue)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getMeasuringAgents"
}
JSON Response Example (Success Case):
{
"measuringAgentsArray": [
{
"agentId": 46,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Local Agent",
"agentHost": "127.0.0.1",
"agentPort": 8080,
"authToken": "OrKmpkbyNWEHok"
},
{
"agentId": 49,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": false,
"agentDescription": "Rasberry 1",
"agentHost": "192.168.0.51",
"agentPort": 8080,
"authToken": ""
},
{
"agentId": 50,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Ubuntu 10",
"agentHost": "192.168.0.110",
"agentPort": 8080,
"authToken": ""
},
{
"agentId": 51,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Ubuntu 11",
"agentHost": "192.168.0.111",
"agentPort": 8080,
"authToken": ""
}
],
"isError": false
}
getMinRequiredMeasuringAgentVersion
Specific Request Fields:
Response Fields:
- minRequiredMeasuringAgentVersion (the minimum required measuring agent version)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getMinRequiredMeasuringAgentVersion"
}
JSON Response Example (Success Case):
{
"minRequiredMeasuringAgentVersion":"3.9.34",
"isError":false
}
addMeasuringAgent
Specific Request Fields:
- agentDescription (must be unique across all measuring agents of the user, cannot be an empty string)
- agentHost
- agentPort
- agentActive (flag: if false then the availability of the measuring agent is not monitored)
- agentAuthToken (the authentication token to access the measuring agent, or an empty string = no access protection)
Response Fields (JSON object “measuringAgent”):
- agentId (the unique measuring agent id)
- createdBySystem (always false for this function)
- ownerUserId (always the same as the user account id)
- agentActive (flag: if false then the availability of the measuring agent is not monitored)
- agentDescription
- agentHost
- agentPort
- authToken (the authentication token to access the measuring agent, or an empty string = no access protection)
Specific Error Flags:
- agentDescriptionError
- agentHostError
- agentPortError
- maxNumberMeasuringAgentsLimitExceededError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"addMeasuringAgent",
"agentDescription":"Ubuntu 12",
"agentHost":"192.168.0.112",
"agentPort":8080,
"agentActive": true,
"agentAuthToken": "nixda"
}
JSON Response Example (Success Case):
{
"measuringAgent": {
"agentId": 53,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Ubuntu 12",
"agentHost": "192.168.0.112",
"agentPort": 8080,
"authToken": "nixda"
},
"isError": false
}
pingMeasuringAgent
Specific Request Fields:
Response Fields (JSON object “agentResponse”):
- pingFromRemoteIp
- pingFromRemoteUserId
- productVersion (measuring agent version | don’t confuse with portal server version)
- limitMaxUsersPerJob (limit of the measuring agent, -1 = unlimited | don’t confuse with price plan limit)
- limitMaxJobDurationSeconds (limit of the measuring agent, -1 = unlimited | don’t confuse with price plan limit)
- osName
- osVersion
- javaVersion
- javaVendor
- javaMaxMemory
- systemTime
- deltaTimeMillis
- agentStartupTimeStamp
- httpExecuteTimeMillis
Specific Error Flags:
- agentIdError
- agentAccessDeniedError
- agentVersionOutdatedError
- agentNotReachableError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"pingMeasuringAgent",
"agentId":48
}
JSON Response Example (Success Case):
{
"agentResponse": {
"pingFromRemoteIp": "83.150.39.44",
"pingFromRemoteUserId": 13,
"productVersion": "3.9.30",
"limitMaxUsersPerJob": 500,
"limitMaxJobDurationSeconds": 300,
"osName": "Linux",
"osVersion": "4.15.0-136-generic",
"javaVersion": "11.0.1",
"javaVendor": "Oracle Corporation",
"javaMaxMemory":"2048 MB",
"systemTime": 1625513238236,
"deltaTimeMillis": 841,
"agentStartupTimeStamp": 1622836702172,
"httpExecuteTimeMillis": 247
},
"isError": false
}
JSON Response Example (Error Case 1):
{
"isError": true,
"genericErrorText": "API V1 request to 192.168.0.51:8080 timed out",
"agentIdError": false,
"agentAccessDeniedError": false,
"agentNotReachableError": true,
"agentVersionOutdatedError": false
}
JSON Response Example (Error Case 2):
{
"isError": true,
"genericErrorText": "Min. measuring agent version required: 3.9.30",
"agentIdError": false,
"agentAccessDeniedError": false,
"agentNotReachableError": false,
"agentVersionOutdatedError": true
}
setMeasuringAgentActive
Specific Request Fields:
Response Fields:
Specific Error Flags:
- agentIdError
- agentAccessDeniedError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"setMeasuringAgentActive",
"agentId":46,
"agentActive":false
}
JSON Response Example (Success Case):
deleteMeasuringAgent
Specific Request Fields:
Response Fields:
Specific Error Flags:
- agentIdError
- agentAccessDeniedError
- agentDeleteDeniedError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteMeasuringAgent",
"agentId":54
}
JSON Response Example (Success Case):
getMeasuringAgentClusters
Specific Request Fields:
Response Fields (JSON array “measuringAgentClustersArray”):
- clusterId (the unique cluster id)
- createdBySystem (normally false, true = the user cannot modify or delete the cluster)
- ownerUserId (always the same as the user account id)
- clusterActive (flag: if false then the availability of the cluster is not monitored)
- clusterDescription
- controllerHost (the hostname or IP address of the cluster controller)
- controllerPort (the IP port of the cluster controller)
- controllerAuthToken (the authentication token to access the cluster controller, or an empty string = no access protection | don’t confuse it with the API authTokenValue)
- clusterMembersArray
- clusterMemberId (the unique cluster member id)
- loadFactor (integer 0..100: the default load factor of this cluster member)
- agentId (the referenced measuring agent id)
- agentActive (flag: if false then the availability of the measuring agent is not monitored)
- agentDescription
- agentHost
- agentPort
- agentAuthToken (the authentication token to access the measuring agent, or an empty string = no access protection | don’t confuse it with the API authTokenValue)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getMeasuringAgentClusters"
}
JSON Response Example:
{
"measuringAgentClustersArray": [
{
"clusterId": 11,
"createdBySystem": false,
"ownerUserId": 13,
"clusterActive": true,
"clusterDescription": "C1",
"controllerHost": "192.168.0.50",
"controllerPort": 8083,
"controllerAuthToken": "aberaber",
"clusterMembersArray": [
{
"clusterMemberId": 59,
"loadFactor": 1,
"agentId": 64,
"agentActive": true,
"agentDescription": "Agent 1",
"agentHost": "192.168.0.10",
"agentPort": 8080,
"agentAuthToken": "OrKmAAbyNWEHok"
},
{
"clusterMemberId": 60,
"loadFactor": 1,
"agentId": 59,
"agentActive": true,
"agentDescription": "Ubuntu 10",
"agentHost": "192.168.0.110",
"agentPort": 8080,
"agentAuthToken": "asc7jhacab"
},
{
"clusterMemberId": 61,
"loadFactor": 1,
"agentId": 60,
"agentActive": true,
"agentDescription": "Ubuntu 11",
"agentHost": "192.168.0.111",
"agentPort": 8080,
"agentAuthToken": "66ascascsdac"
}
]
},
{
"clusterId": 14,
"createdBySystem": false,
"ownerUserId": 13,
"clusterActive": true,
"clusterDescription": "C2",
"controllerHost": "192.168.0.50",
"controllerPort": 8083,
"controllerAuthToken": "aberaber",
"clusterMembersArray": [
{
"clusterMemberId": 66,
"loadFactor": 1,
"agentId": 56,
"agentActive": true,
"agentDescription": "Test System",
"agentHost": "192.168.0.60",
"agentPort": 8080,
"agentAuthToken": "aberdoch"
},
{
"clusterMemberId": 67,
"loadFactor": 1,
"agentId": 59,
"agentActive": true,
"agentDescription": "Ubuntu 10",
"agentHost": "192.168.0.110",
"agentPort": 8080,
"agentAuthToken": "asc7jhacab"
}
]
}
],
"isError": false
}
getClusterControllers
Specific Request Fields:
Response Fields (JSON array “clusterControllersArray”):
- controllerHost (the hostname or IP address of the cluster controller)
- controllerPort (the IP port of the cluster controller)
- controllerAuthToken (the authentication token to access the cluster controller)
- measuringAgentClustersArray (an array of measuring agent clusters which are referencing this cluster controller)
- clusterId
- clusterDescription
- clusterActive
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getClusterControllers"
}
JSON Response Example:
{
"clusterControllersArray": [
{
"controllerHost": "192.168.0.33",
"controllerPort": 8083,
"controllerAuthToken": "2fasdtfffe",
"measuringAgentClustersArray": [
{
"clusterId": 11,
"clusterDescription": "C1",
"clusterActive": 1
},
{
"clusterId": 13,
"clusterDescription": "C2",
"clusterActive": 1
},
{
"clusterId": 14,
"clusterDescription": "C3",
"clusterActive": 1
}
]
},
{
"controllerHost": "192.168.0.50",
"controllerPort": 8083,
"controllerAuthToken": "asfsdgh763",
"measuringAgentClustersArray": [
{
"clusterId": 15,
"clusterDescription": "C4",
"clusterActive": 1
},
{
"clusterId": 16,
"clusterDescription": "C7",
"clusterActive": 1
}
]
}
],
"isError": false
}
getMinRequiredClusterControllerVersion
Specific Request Fields:
Response Fields:
- minRequiredClusterControllerVersion (the minimum required cluster controller version)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getMinRequiredClusterControllerVersion"
}
JSON Response Example:
{
"minRequiredClusterControllerVersion":"4.0.4",
"isError":false
}
pingClusterController
Specific Request Fields:
- controllerHost (the cluster controller host name or IP address)
- controllerPort (the cluster controller IP port)
- controllerAuthToken (the authentication token to access the cluster controller, or an empty string = no access protection)
Response Fields (JSON object “controllerResponse”):
- pingFromRemoteIp
- pingFromRemoteUserId
- productVersion (cluster controller version | don’t confuse with portal server version)
- osName
- osVersion
- javaVersion
- javaVendor
- javaMaxMemory
- systemTime
- deltaTimeMillis
- controllerStartupTimeStamp
- httpExecuteTimeMillis
- clusterControllerOutdated
Specific Error Flags:
- controllerHostError
- controllerPortError
- controllerVersionOutdatedError
- controllerNotReachableError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"pingClusterController",
"controllerHost":"192.168.0.50",
"controllerPort":8083,
"controllerAuthToken":"hagsajjs99"
}
JSON Response Example (Success Case):
{
"controllerResponse": {
"pingFromRemoteIp": "192.168.0.100",
"pingFromRemoteUserId": 13,
"productVersion": "4.0.4",
"osName": "Linux",
"osVersion": "4.15.0-135-generic",
"javaVersion": "11.0.1",
"javaVendor": "Oracle Corporation",
"javaMaxMemory": "512 MB",
"systemTime": 1643406118552,
"deltaTimeMillis": 1120,
"controllerStartupTimeStamp": 1643322597013,
"httpExecuteTimeMillis": 249,
"clusterControllerOutdated": false
},
"isError": false
}
JSON Response Example (Error Case 1):
{
"isError": true,
"genericErrorText": "API call pingGetControllerInfo failed. Error code = 18, Error message = Invalid authentication token",
"controllerHostError": false,
"controllerVersionOutdatedError": false,
"controllerNotReachableError": true,
"controllerPortError": false
}
JSON Response Example (Error Case 2):
{
"isError": true,
"genericErrorText": "Min. cluster controller version required: 4.0.4",
"controllerHostError": false,
"controllerVersionOutdatedError": true,
"controllerNotReachableError": false,
"controllerPortError": false
}
addMeasuringAgentCluster
Specific Request Fields:
- clusterActive (flag: if false then the availability of the cluster is not monitored)
- clusterDescription (must be unique across all measuring agent clusters and all measuring agents of the user, cannot be an empty string)
- controllerHost (the cluster controller host name or IP address)
- controllerPort (the cluster controller IP port)
- controllerAuthToken (the authentication token to access the cluster controller, or an empty string = no access protection)
- clusterMembersArray (an array of cluster members - can also be empty)
- agentId (the referenced measuring agent id)
- loadFactor (integer 0..100: the load factor of this cluster member, recommended value = 1)
Response Fields:
- clusterId (the unique cluster id)
- clusterMembersArray (the array of cluster members)
- clusterMemberId (the unique cluster member id)
- agentId (the referenced measuring agent id)
- loadFactor (integer 0..100: the load factor of this cluster member)
Specific Error Flags:
- clusterDescriptionError
- controllerHostError
- controllerPortError
- agentIdError
- loadFactorError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"addMeasuringAgentCluster",
"clusterActive":true,
"clusterDescription":"C7",
"controllerHost":"192.168.0.50",
"controllerPort":8083,
"controllerAuthToken":"aberaber",
"clusterMembersArray":[
{
"agentId":59,
"loadFactor":1
},
{
"agentId":60,
"loadFactor":1
}
]
}
JSON Response Example (Success Case):
{
"clusterId":16,
"clusterMembersArray":[
{
"clusterMemberId":71,
"agentId":59,
"loadFactor":1
},
{
"clusterMemberId":72,
"agentId":60,
"loadFactor":1
}
],
"isError":false
}
JSON Response Example (Error Case):
{
"isError": true,
"genericErrorText": "Invalid agentId = 101",
"controllerHostError": false,
"agentIdError": true,
"controllerPortError": false,
"loadFactorError": false,
"clusterDescriptionError": false
}
addMemberToMeasuringAgentCluster
Specific Request Fields:
- clusterId
- agentId (the referenced measuring agent id)
- loadFactor (integer 0..100: the load factor of this cluster member, recommended value = 1)
Response Fields (JSON object “clusterMember”):
- clusterMemberId (the unique cluster member id)
- agentId
- loadFactor
Specific Error Flags:
- clusterIdError
- clusterAccessDeniedError
- clusterModifyDeniedError
- agentIdError
- agentAccessDeniedError
- loadFactorError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"addMemberToMeasuringAgentCluster",
"clusterId":17,
"agentId":64,
"loadFactor":1
}
JSON Response Example:
{
"clusterMember": {
"clusterMemberId": 75,
"agentId": 64,
"loadFactor": 1
},
"isError": false
}
removeMemberFromMeasuringAgentCluster
Specific Request Fields:
- clusterId
- clusterMemberId
Response Fields:
Specific Error Flags:
- clusterIdError
- clusterAccessDeniedError
- clusterModifyDeniedError
- clusterMemberIdError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"removeMemberFromMeasuringAgentCluster",
"clusterId":17,
"clusterMemberId":75
}
JSON Response Example:
pingMeasuringAgentClusterMembers
Specific Request Fields:
Response Fields (JSON object “controllerResponse”):
- productVersion (cluster controller version)
- clusterConnectResult (the connect information to the cluster members)
- measuringAgentClusterMemberArray (the array of cluster members)
- clusterMemberId
- loadFactor
- agentId
- agentActive
- agentDescription
- agentHost
- agentPort
- agentAuthToken
- connectSuccessfulClusterMemberArray (the array of cluster member ids to which the connection was successful established)
- connectFailedClusterMemberArray (the array of cluster members to which the connection has failed)
- clusterMemberId
- errorMessage
- clusterConnectStartTimestamp
- clusterConnectDurationMillis
- clusterActionResult (the ping result of the cluster members)
- actionSuccessfulClusterMemberArray (the array of cluster member ids which have performed the ping to the measuring agent)
- actionFailedClusterMemberArray (the array of cluster members which have not performed the ping to the measuring agent)
- clusterMemberId
- errorMessage
- jsonResponseClusterMemberArray (the array of cluster member which have performed the ping)
- clusterMemberId
- jsonResponseObject (the pong response of the cluster member)
- productVersion (measuring agent product version)
- systemTime
- deltaTimeMillis (the OS time difference in milliseconds between the cluster controller and the measuring agent)
- osName
- osVersion
- javaVersion
- javaVendor
- javaMaxMemory
- samplingGranularityMillis (the data collector sampling granularity in milliseconds)
- isError (boolean flag, normally always false)
- measuringAgentOutdated (a boolean flag, true = measuring agent product version is outdated)
- clusterActionStartTimestamp
- clusterActionDurationMillis
- httpExecuteTimeMillis
- clusterControllerOutdated
Specific Error Flags:
- clusterIdError
- clusterAccessDeniedError
- controllerVersionOutdatedError
- controllerNotReachableError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"pingMeasuringAgentClusterMembers",
"clusterId":16
}
JSON Response Example (Success Case):
{
"controllerResponse": {
"productVersion": "4.0.4",
"clusterConnectResult": {
"measuringAgentClusterMemberArray": [
{
"clusterMemberId": 71,
"loadFactor": 1,
"agentId": 59,
"agentActive": true,
"agentDescription": "Ubuntu 10",
"agentHost": "192.168.0.110",
"agentPort": 8080,
"agentAuthToken": "agsdhagsj"
},
{
"clusterMemberId": 72,
"loadFactor": 1,
"agentId": 60,
"agentActive": true,
"agentDescription": "Ubuntu 11",
"agentHost": "192.168.0.111",
"agentPort": 8080,
"agentAuthToken": "nvbjnvbnn"
}
],
"connectSuccessfulClusterMemberArray": [
71,
72
],
"connectFailedClusterMemberArray": [],
"clusterConnectStartTimestamp": 1643410829270,
"clusterConnectDurationMillis": 79
},
"clusterActionResult": {
"actionSuccessfulClusterMemberArray": [
71,
72
],
"actionFailedClusterMemberArray": [],
"jsonResponseClusterMemberArray": [
{
"clusterMemberId": 71,
"jsonResponseObject": {
"productVersion": "4.0.4",
"systemTime": 1643410829340,
"deltaTimeMillis": -10,
"osName": "Linux",
"osVersion": "5.4.0-92-generic",
"javaVersion": "11.0.1",
"javaVendor": "Oracle Corporation",
"javaMaxMemory": "2048 MB",
"samplingGranularityMillis": 4000,
"isError": false,
"measuringAgentOutdated": false
}
},
{
"clusterMemberId": 72,
"jsonResponseObject": {
"productVersion": "4.0.4",
"systemTime": 1643410829351,
"deltaTimeMillis": -10,
"osName": "Linux",
"osVersion": "5.4.0-92-generic",
"javaVersion": "11.0.1",
"javaVendor": "Oracle Corporation",
"javaMaxMemory": "2048 MB",
"samplingGranularityMillis": 4000,
"isError": false,
"measuringAgentOutdated": false
}
}
],
"clusterActionStartTimestamp": 1643410829349,
"clusterActionDurationMillis": 43
},
"httpExecuteTimeMillis": 1778,
"clusterControllerOutdated": false
},
"isError": false
}
JSON Response Example (Error Case / Partly failed):
{
"controllerResponse": {
"productVersion": "4.0.4",
"clusterConnectResult": {
"measuringAgentClusterMemberArray": [
{
"clusterMemberId": 71,
"loadFactor": 1,
"agentId": 59,
"agentActive": true,
"agentDescription": "Ubuntu 10",
"agentHost": "192.168.0.110",
"agentPort": 8080,
"agentAuthToken": "marderzahn"
},
{
"clusterMemberId": 72,
"loadFactor": 1,
"agentId": 60,
"agentActive": true,
"agentDescription": "Ubuntu 11",
"agentHost": "192.168.0.111",
"agentPort": 8080,
"agentAuthToken": "marderzahn"
}
],
"connectSuccessfulClusterMemberArray": [
72
],
"connectFailedClusterMemberArray": [
{
"clusterMemberId": 71,
"errorMessage": "Connection refused (Connection refused)"
}
],
"clusterConnectStartTimestamp": 1643414272214,
"clusterConnectDurationMillis": 97
},
"clusterActionResult": {
"actionSuccessfulClusterMemberArray": [
72
],
"actionFailedClusterMemberArray": [],
"jsonResponseClusterMemberArray": [
{
"clusterMemberId": 72,
"jsonResponseObject": {
"productVersion": "4.0.4",
"systemTime": 1643414272310,
"deltaTimeMillis": -8,
"osName": "Linux",
"osVersion": "5.4.0-92-generic",
"javaVersion": "11.0.1",
"javaVendor": "Oracle Corporation",
"javaMaxMemory": "2048 MB",
"samplingGranularityMillis": 4000,
"isError": false,
"measuringAgentOutdated": false
}
}
],
"clusterActionStartTimestamp": 1643414272311,
"clusterActionDurationMillis": 21
},
"httpExecuteTimeMillis": 1769,
"clusterControllerOutdated": false
}
}
setMeasuringAgentClusterActive
Specific Request Fields:
Response Fields:
Specific Error Flags:
- clusterIdError
- clusterAccessDeniedError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"setMeasuringAgentClusterActive",
"clusterId":16,
"clusterActive":true
}
JSON Response Example (Success Case):
deleteMeasuringAgentCluster
Specific Request Fields:
Response Fields:
Specific Error Flags:
- clusterIdError
- clusterAccessDeniedError
- clusterDeleteDeniedError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteMeasuringAgentCluster",
"clusterId":16
}
JSON Response Example (Success Case):
getProxyRecorders
Specific Request Fields:
Response Fields (JSON array “proxyRecordersArray”):
- recorderId (the unique proxy recorder id)
- createdBySystem (normally false, true = the user cannot modify or delete the proxy recorder)
- ownerUserId (always the same as the user account id)
- recorderDescription
- recorderProxyHost
- recorderProxyPort (HTTP and HTTPS port of the proxy)
- recorderProxyAuthUsername (proxy authentication username, or an empty string = no proxy authentication required)
- recorderProxyAuthPassword (proxy authentication password)
- recorderControlPort (the proxy recorder control port)
- recorderControlAuthToken (the authentication token to access the proxy recorder control port, or an empty string = no access protection | don’t confuse it with the API authTokenValue)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getProxyRecorders"
}
JSON Response Example:
{
"proxyRecordersArray": [
{
"recorderId": 3,
"createdBySystem": false,
"ownerUserId": 13,
"recorderDescription": "Erster",
"recorderProxyHost": "192.168.0.40",
"recorderProxyPort": 8082,
"recorderProxyAuthUsername": "",
"recorderProxyAuthPassword": "",
"recorderControlPort": 8081,
"recorderControlAuthToken": ""
},
{
"recorderId": 4,
"createdBySystem": false,
"ownerUserId": 13,
"recorderDescription": "proxy.realload.com",
"recorderProxyHost": "proxy.realload.com",
"recorderProxyPort": 8082,
"recorderProxyAuthUsername": "max.meier",
"recorderProxyAuthPassword": "123456",
"recorderControlPort": 8081,
"recorderControlAuthToken": "aZujkl97zuwert"
}
],
"isError": false
}
getMinRequiredProxyRecorderVersion
Specific Request Fields:
Response Fields:
- minRequiredProxyRecorderVersion (the minimum required HTTP/S proxy recorder version)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getMinRequiredProxyRecorderVersion"
}
JSON Response Example (Success Case):
{
"minRequiredProxyRecorderVersion":"0.2.2",
"isError":false
}
addProxyRecorder
Specific Request Fields:
- recorderDescription (must be unique across all HTTP/S proxy recorders of the user, cannot be an empty string)
- recorderProxyHost
- recorderProxyPort (HTTP and HTTPS port of the proxy)
- recorderProxyAuthUsername (proxy authentication username, or an empty string = no proxy authentication required)
- recorderProxyAuthPassword (proxy authentication password, applied if recorderProxyAuthUsername is not an empty string)
- recorderControlPort (the proxy recorder control port)
- recorderControlAuthToken (the authentication token to access the proxy recorder control port, or an empty string = no access protection)
Response Fields (JSON object “proxyRecorder”):
- recorderId (the unique HTTP/S proxy recorder id)
- createdBySystem (always false for this function)
- ownerUserId (always the same as the user account id)
- recorderDescription
- recorderProxyHost
- recorderProxyPort
- recorderProxyAuthUsername
- recorderProxyAuthPassword
- recorderControlPort
- recorderControlAuthToken
Specific Error Flags:
- recorderDescriptionError
- recorderProxyHostError
- recorderProxyPortError
- recorderControlPortError
- maxNumberProxyRecordersLimitExceededError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"addProxyRecorder",
"recorderDescription":"My New Proxy Recorder",
"recorderProxyHost":"192.168.0.148",
"recorderProxyPort":8082,
"recorderProxyAuthUsername":"max.meier",
"recorderProxyAuthPassword":"123456",
"recorderControlPort":8081,
"recorderControlAuthToken":"aZujkl97zuwert"
}
JSON Response Example (Success Case):
{
"proxyRecorder": {
"recorderId": 10,
"createdBySystem": false,
"ownerUserId": 13,
"recorderDescription": "My New Proxy Recorder",
"recorderProxyHost": "192.168.0.148",
"recorderProxyPort": 8082,
"recorderProxyAuthUsername": "max.meier",
"recorderProxyAuthPassword": "123456",
"recorderControlPort": 8081,
"recorderControlAuthToken": "aZujkl97zuwert"
},
"isError": false
}
pingProxyRecorder
Specific Request Fields:
Response Fields (JSON object “pongResponse”):
- pingFromRemoteIp
- pingFromRemoteUserId
- productVersion (the remote proxy recorder version | don’t confuse with portal server version)
- recorderComponentVersion (the proxy recorder component version | don’t confuse with portal server version)
- isRecording
- recordHostFilter
- numRecordedElements
- osName
- osVersion
- javaMemoryMB
- javaVersion
- javaVendor
- systemTime
- deltaTimeMillis
- httpExecuteTimeMillis
Specific Error Flags:
- recorderIdError
- recorderAccessDeniedError
- recorderNotReachableError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"pingProxyRecorder",
"recorderId":4
}
JSON Response Example (Success Case):
{
"pongResponse": {
"pingFromRemoteIp": "83.150.39.44",
"pingFromRemoteUserId": 13,
"productVersion": "0.2.0",
"recorderComponentVersion": "1.1.0",
"isRecording": false,
"recordHostFilter": "www.dkfqa.com",
"numRecordedElements": 0,
"osName": "Linux",
"osVersion": "5.4.0-74-generic",
"javaMemoryMB": 2048,
"javaVersion": "11.0.1",
"javaVendor": "Oracle Corporation",
"systemTime": 1625529858405,
"deltaTimeMillis": 790,
"httpExecuteTimeMillis": 88
},
"isError": false
}
JSON Response Example (Error Case):
{
"isError": true,
"genericErrorText": "connect timed out",
"recorderNotReachableError": true,
"recorderIdError": false,
"recorderAccessDeniedError": false
}
deleteProxyRecorder
Specific Request Fields:
Response Fields:
Specific Error Flags:
- recorderIdError
- recorderAccessDeniedError
- recorderDeleteDeniedError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteProxyRecorder",
"recorderId":10
}
JSON Response Example (Success Case):
getProxyRecordersClientCertificates
Specific Request Fields:
Response Fields:
- certificateId (unique ID)
- ownerUserId (always the own user ID)
- recorderId (always -1 = apply for all proxy recorders)
- originalCertFileName (without disk path)
- certFileType (always PKCS#12)
- certFileDataB64 (the file data in base64 format)
- certPassword
- certDescription
- certActive (if false then do not transmit the certificate to the proxy recorders)
- applyForHost
- applyForPort
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getProxyRecordersClientCertificates"
}
JSON Response Example (Success Case):
{
"clientCertificatesArray": [
{
"certificateId": 1,
"ownerUserId": 13,
"recorderId": -1,
"originalCertFileName": "fischer@dkfqa.com.p12",
"certFileType": "PKCS#12",
"certFileDataB64": "MIIRQQ.....CAA=",
"certPassword": "12345678",
"certDescription": "Fischer's Cert",
"certActive": true,
"applyForHost": "192.168.0.100",
"applyForPort": 499
},
{
"certificateId": 3,
"ownerUserId": 13,
"recorderId": -1,
"originalCertFileName": "miller@dkfqa.com.p12",
"certFileType": "PKCS#12",
"certFileDataB64": "MIIRXB.....CCAA=",
"certPassword": "abcdefgh",
"certDescription": "",
"certActive": false,
"applyForHost": "www.werwaswo.com",
"applyForPort": 443
}
],
"isError": false
}
addProxyRecordersClientCertificate
Specific Request Fields:
- recorderId (always -1 = apply for all proxy recorders)
- certFileName (without disk path)
- certFileType (always PKCS#12)
- certFileDataB64 (the file data in base64 format)
- certPassword
- certDescription (optional, but not null)
- certActive (if false then do not transmit the certificate to the proxy recorders)
- applyForHost
- applyForPort
Response Fields:
- certificateId (the new unique ID)
- ownerUserId (always the own user ID)
- recorderId (always -1 = apply for all proxy recorders)
- originalCertFileName (without disk path)
- certFileType (always PKCS#12)
- certDescription
- certActive
- applyForHost
- applyForPort
Specific Error Flags:
- certDescriptionError
- applyForHostError
- applyForPortError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"addProxyRecordersClientCertificate",
"recorderId": -1,
"certFileName": "felix@dkfqa.com.p12",
"certFileType": "PKCS#12",
"certFileDataB64": "MIIRQQIBAzCCEQ.....3dUWQICCAA=",
"certPassword": "mammamia",
"certDescription":"",
"certActive": true,
"applyForHost": "www.dkfqa.com",
"applyForPort": 443
}
JSON Response Example (Success Case):
{
"addedClientCertificate": {
"certificateId": 5,
"ownerUserId": 13,
"recorderId": -1,
"originalCertFileName": "felix@dkfqa.com.p12",
"certFileType": "PKCS#12",
"certDescription": "",
"certActive": true,
"applyForHost": "www.dkfqa.com",
"applyForPort": 443
},
"isError": false
}
setProxyRecordersClientCertificateActive
Specific Request Fields:
- certificateId
- certActive (if false then do not transmit the certificate to the proxy recorders)
Response Fields:
- certificateId
- ownerUserId (always the own user ID)
- recorderId (always -1 = apply for all proxy recorders)
- originalCertFileName (without disk path)
- certFileType (always PKCS#12)
- certDescription
- certActive
- applyForHost
- applyForPort
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"setProxyRecordersClientCertificateActive",
"certificateId": 5,
"certActive": false
}
JSON Response Example (Success Case):
{
"updatedClientCertificate": {
"certificateId": 5,
"ownerUserId": 13,
"recorderId": -1,
"originalCertFileName": "felix@dkfqa.com.p12",
"certFileType": "PKCS#12",
"certDescription": "",
"certActive": false,
"applyForHost": "www.dkfqa.com",
"applyForPort": 443
},
"isError": false
}
modifyProxyRecordersClientCertificate
Specific Request Fields:
- certificateId
- certDescription (optional but not null)
- applyForHost (required)
- applyForPort (required)
Response Fields:
- certificateId
- ownerUserId (always the own user ID)
- recorderId (always -1 = apply for all proxy recorders)
- originalCertFileName (without disk path)
- certFileType (always PKCS#12)
- certDescription
- certActive
- applyForHost
- applyForPort
Specific Error Flags:
- certDescriptionError
- applyForHostError
- applyForPortError
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"modifyProxyRecordersClientCertificate",
"certificateId": 5,
"certDescription": "My Cert",
"applyForHost": "www.dkfqa.com",
"applyForPort": 444
}
JSON Response Example (Success Case):
{
"updatedClientCertificate": {
"certificateId": 5,
"ownerUserId": 13,
"recorderId": -1,
"originalCertFileName": "felix@dkfqa.com.p12",
"certFileType": "PKCS#12",
"certDescription": "My Cert",
"certActive": false,
"applyForHost": "www.dkfqa.com",
"applyForPort": 444
},
"isError": false
}
deleteProxyRecordersClientCertificate
Specific Request Fields:
Response Fields:
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteProxyRecordersClientCertificate",
"certificateId": 5
}
JSON Response Example (Success Case):
JSON Response Example (Error Case):
{"isError": true, "genericErrorText": "Invalid certificate Id"}
getTestjobTemplates
Specific Request Fields:
Response Fields:
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getTestjobTemplates"
}
JSON Response Example (Success Case):
{
"testjobTemplatesArray": [
{
"testjobTemplate": {
"templateId": 10,
"templateName": "SimpleTest 1VU",
"templateDescription": "",
"testjobProperties": {
"testjobResultFileName": "",
"executeMeasuringAgentClusterInfo": "",
"testjobConcurrentUsers": "1",
"testjobDescription": "SimpleTest",
"testjobDebugMeasuring": "false",
"testjobMaxTestDuration": "30",
"isClusterJob": "",
"testjobRampUpTime": "10",
"localTestjobId": "",
"testjobMaxLoopsPerUser": "1",
"productVersion": "4.8.23",
"remoteTestjobId": "",
"testjobAdditionalArguments": "",
"definedFromTestId": "384",
"testjobSignature": "",
"testjobDelayPerLoop": "1000",
"testjobExitCode": "",
"createTimeStamp": "1694549684261",
"userInputFieldsFileName": "",
"testjobType": "load test",
"enableAutomaticFileSync": "true",
"testjobState": "invalid",
"isClusterControllerJobProperties": "",
"testjobDebugExecution": "false",
"executeOnUserMeasuringAgentId": "",
"definedFromTimeZoneId": "Europe/Berlin",
"executeMeasuringAgentInfo": "",
"executeOnMeasuringAgentClusterId": ""
},
"hasUserInputFields": false
},
"testIsHealthy": true
},
{
"testjobTemplate": {
"templateId": 11,
"templateName": "SimpleTestWithInputFields 10VU",
"templateDescription": "",
"testjobProperties": {
"testjobResultFileName": "",
"executeMeasuringAgentClusterInfo": "",
"testjobConcurrentUsers": "10",
"testjobDescription": "SimpleTestWithInputFields",
"testjobDebugMeasuring": "false",
"testjobMaxTestDuration": "60",
"isClusterJob": "",
"testjobRampUpTime": "10",
"localTestjobId": "",
"testjobMaxLoopsPerUser": "5",
"productVersion": "4.8.23",
"remoteTestjobId": "",
"testjobAdditionalArguments": "",
"definedFromTestId": "385",
"testjobSignature": "",
"testjobDelayPerLoop": "1000",
"testjobExitCode": "",
"createTimeStamp": "1695047319785",
"userInputFieldsFileName": "InputFields_SimpleTestWithInputFields.json",
"testjobType": "load test",
"enableAutomaticFileSync": "true",
"testjobState": "invalid",
"isClusterControllerJobProperties": "",
"testjobDebugExecution": "true",
"executeOnUserMeasuringAgentId": "",
"definedFromTimeZoneId": "Europe/Berlin",
"executeMeasuringAgentInfo": "",
"executeOnMeasuringAgentClusterId": ""
},
"hasUserInputFields": true,
"userInputFieldsFile": {
"useShortNames": false,
"magicPattern": "UserInputFields",
"productVersion": "4.8.23",
"userInputFieldsArray": [
{
"useShortNames": false,
"productVersion": "4.8.23",
"label": "Input Host",
"variableName": "vHost",
"inputType": "string",
"defaultValue": "126.3.4.5",
"currentValue": "126.3.4.5"
},
{
"useShortNames": false,
"productVersion": "4.8.23",
"label": "Input Port",
"variableName": "vPort",
"inputType": "integer",
"defaultValue": "444",
"currentValue": "444"
}
]
}
},
"testIsHealthy": true
}
],
"isError": false
}
defineNewTestjobFromTemplate
Specific Request Fields:
- templateId
- measuringAgentOrClusterId
- isCluster (boolean)
- jobDescription
Response Fields:
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"defineNewTestjobFromTemplate",
"templateId":10,
"measuringAgentOrClusterId":65,
"isCluster":false,
"jobDescription": "Simple Test"
}
JSON Response Example (Success Case):
{
"newTestjobId":33533,
"isError":false
}
submitTestjob
Specific Request Fields:
Response Fields:
- agentResponse (for measuring agents), or
- controllerResponse (for cluster controllers)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"submitTestjob",
"localTestjobId":33534
}
JSON Response Example (Success Case):
{
"isClusterJob": false,
"agentResponse": {
"remoteTestjobId": 24129,
"httpExecuteTimeMillis": 338
},
"isError": false
}
makeTestjobReadyToRun
Specific Request Fields:
Response Fields:
- agentResponse (for measuring agents), or
- controllerResponse (for cluster controllers)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"makeTestjobReadyToRun",
"localTestjobId":33534
}
JSON Response Example (Success Case):
{
"isClusterJob": false,
"agentResponse": {
"testjobProperties": {
"testjobResultFileName": "",
"executeMeasuringAgentClusterInfo": "",
"testjobConcurrentUsers": "1",
"testjobDescription": "Simple Test",
"testjobDebugMeasuring": "false",
"testjobMaxTestDuration": "30",
"isClusterJob": "false",
"testjobRampUpTime": "10",
"localTestjobId": "33534",
"testjobMaxLoopsPerUser": "1",
"productVersion": "4.8.18",
"remoteTestjobId": "24129",
"testjobAdditionalArguments": "",
"definedFromTestId": "384",
"testjobSignature": "Z9B963yIj232nht1DIX5aSRt8m77QuXpvVA5736Tl9Wc7UZ7jOiU3l6UC7y3Nx6CXDDZB4qUg4FHDtTuHsD9xd0T/CSq/g==",
"testjobDelayPerLoop": "1000",
"testjobExitCode": "",
"createTimeStamp": "1695050460395",
"userInputFieldsFileName": "",
"testjobType": "load test",
"enableAutomaticFileSync": "true",
"testjobState": "ready to run",
"isClusterControllerJobProperties": "",
"testjobDebugExecution": "false",
"executeOnUserMeasuringAgentId": "65",
"definedFromTimeZoneId": "Europe/Berlin",
"executeMeasuringAgentInfo": "agent2.realload.com:8080",
"executeOnMeasuringAgentClusterId": ""
},
"httpExecuteTimeMillis": 2871
},
"isError": false
}
startTestjob
Specific Request Fields:
Response Fields:
- agentResponse (for measuring agents), or
- controllerResponse (for cluster controllers)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"startTestjob",
"localTestjobId":33534
}
JSON Response Example (Success Case):
{
"isClusterJob": false,
"agentResponse": {
"testjobProperties": {
"testjobResultFileName": "",
"executeMeasuringAgentClusterInfo": "",
"testjobConcurrentUsers": "1",
"testjobDescription": "Simple Test",
"testjobDebugMeasuring": "false",
"testjobMaxTestDuration": "30",
"isClusterJob": "false",
"testjobRampUpTime": "10",
"localTestjobId": "33534",
"testjobMaxLoopsPerUser": "1",
"productVersion": "4.8.18",
"remoteTestjobId": "24129",
"testjobAdditionalArguments": "",
"definedFromTestId": "384",
"testjobSignature": "Z9B963yIj232nht1DIX5aSRt8m77QuXpvVA5736Tl9Wc7UZ7jOiU3l6UC7y3Nx6CXDDZB4qUg4FHDtTuHsD9xd0T/CSq/g==",
"testjobDelayPerLoop": "1000",
"testjobExitCode": "",
"createTimeStamp": "1695050460395",
"userInputFieldsFileName": "",
"testjobType": "load test",
"enableAutomaticFileSync": "true",
"testjobState": "running",
"isClusterControllerJobProperties": "",
"testjobDebugExecution": "false",
"executeOnUserMeasuringAgentId": "65",
"definedFromTimeZoneId": "Europe/Berlin",
"executeMeasuringAgentInfo": "agent2.realload.com:8080",
"executeOnMeasuringAgentClusterId": ""
},
"httpExecuteTimeMillis": 249
},
"isError": false
}
getMeasuringAgentTestjobs
Specific Request Fields:
- measuringAgentId
- synchronizeLocalTestjobsState (boolean)
Response Fields:
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getMeasuringAgentTestjobs",
"measuringAgentId":65,
"synchronizeLocalTestjobsState":true
}
JSON Response Example (Success Case):
{
"agentResponse": {
"allTestjobsArray": [
{
"testjobProperties": {
"testjobResultFileName": "TestResult_RealloadTest_2023-09-09@23-45-34.json",
"executeMeasuringAgentClusterInfo": "",
"testjobConcurrentUsers": "1",
"testjobDescription": "RealloadTest",
"testjobDebugMeasuring": "false",
"testjobMaxTestDuration": "60",
"isClusterJob": "false",
"testjobRampUpTime": "10",
"localTestjobId": "30717",
"testjobMaxLoopsPerUser": "1",
"productVersion": "4.8.18",
"remoteTestjobId": "15240",
"testjobAdditionalArguments": "",
"definedFromTestId": "379",
"testjobSignature": "NeYJG4vf8/joAwz4nR4Fie3W0Qr7ijps25ONuk6F5BLghuD8/clPL9mBKc/ogQiic7wI8OXOf53Mi4YDCpg4dQzuaWQ==",
"testjobDelayPerLoop": "1000",
"testjobExitCode": "0",
"createTimeStamp": "1694295923799",
"userInputFieldsFileName": "",
"testjobType": "load test",
"enableAutomaticFileSync": "true",
"testjobState": "completed",
"isClusterControllerJobProperties": "",
"testjobDebugExecution": "true",
"executeOnUserMeasuringAgentId": "65",
"definedFromTimeZoneId": "Europe/Berlin",
"executeMeasuringAgentInfo": "agent2.realload.com:8080",
"executeOnMeasuringAgentClusterId": ""
},
"testProperties": {
"referencedResourceFilesList": [
{
"projectId": 130,
"testplanId": 203,
"fileName": "com.dkfqs.selenium.jar"
},
{
"projectId": 130,
"testplanId": 203,
"fileName": "commons-io-2.13.0.jar"
},
{
"projectId": 130,
"testplanId": 203,
"fileName": "hamcrest-core-1.3.jar"
},
{
"projectId": 130,
"testplanId": 203,
"fileName": "com.dkfqs.tools.jar"
},
{
"projectId": 130,
"testplanId": 203,
"fileName": "junit-4.13.2.jar"
},
{
"projectId": 130,
"testplanId": 203,
"fileName": "selenium_bundle-4.12.1.jar"
}
],
"jsonConfigObject": {
"productVersion": "4.8.20",
"jUnitConfigExecutionClassArray": [
{
"productVersion": "4.8.20",
"executingClassName": "RealloadTest",
"testMethodNamesArray": [
"realload"
]
}
],
"seleniumWebBrowserType": "Firefox"
},
"executingScript": "RealloadTest.jar",
"executingScriptResourceFileList": "",
"createTimeStamp": "1694293491984",
"testDescription": "",
"definedFromTestplanId": "251",
"productVersion": "4.8.20",
"definedFromProjectId": "137",
"visibleTestName": "RealloadTest",
"scriptType": "Selenium4byJUnit4",
"testId": "379"
}
},
{
"testjobProperties": {
"testjobResultFileName": "TestResult_SimpleTest_2023-09-18@17-01-08.json",
"executeMeasuringAgentClusterInfo": "",
"testjobConcurrentUsers": "1",
"testjobDescription": "Simple Test",
"testjobDebugMeasuring": "false",
"testjobMaxTestDuration": "30",
"isClusterJob": "false",
"testjobRampUpTime": "10",
"localTestjobId": "33533",
"testjobMaxLoopsPerUser": "1",
"productVersion": "4.8.18",
"remoteTestjobId": "24112",
"testjobAdditionalArguments": "",
"definedFromTestId": "384",
"testjobSignature": "JYstx+myVNqbyVMr24u4Pi8IXkLGH0iXUquRh5+NL0veKs4DRJX/w2ZT77wLXF70J9YmTPzR7g==",
"testjobDelayPerLoop": "1000",
"testjobExitCode": "0",
"createTimeStamp": "1695049264730",
"userInputFieldsFileName": "",
"testjobType": "load test",
"enableAutomaticFileSync": "true",
"testjobState": "completed",
"isClusterControllerJobProperties": "",
"testjobDebugExecution": "false",
"executeOnUserMeasuringAgentId": "65",
"definedFromTimeZoneId": "Europe/Berlin",
"executeMeasuringAgentInfo": "agent2.realload.com:8080",
"executeOnMeasuringAgentClusterId": ""
},
"testProperties": {
"referencedResourceFilesList": [
{
"projectId": 130,
"testplanId": 203,
"fileName": "com.dkfqs.tools.jar"
}
],
"jsonConfigObject": {},
"executingScript": "SimpleTest.jar",
"executingScriptResourceFileList": "",
"createTimeStamp": "1694549112155",
"testDescription": "",
"definedFromTestplanId": "251",
"productVersion": "4.8.21",
"definedFromProjectId": "137",
"visibleTestName": "SimpleTest",
"scriptType": "OpenJDK11Jar",
"testId": "384"
}
},
{
"testjobProperties": {
"testjobResultFileName": "TestResult_SimpleTest_2023-09-18@17-51-53.json",
"executeMeasuringAgentClusterInfo": "",
"testjobConcurrentUsers": "1",
"testjobDescription": "Simple Test",
"testjobDebugMeasuring": "false",
"testjobMaxTestDuration": "30",
"isClusterJob": "false",
"testjobRampUpTime": "10",
"localTestjobId": "33534",
"testjobMaxLoopsPerUser": "1",
"productVersion": "4.8.18",
"remoteTestjobId": "24129",
"testjobAdditionalArguments": "",
"definedFromTestId": "384",
"testjobSignature": "Z9B963yIj232nht1DIX5aSRt8m77QuXYjP9rn4OBSq/g==",
"testjobDelayPerLoop": "1000",
"testjobExitCode": "0",
"createTimeStamp": "1695050460395",
"userInputFieldsFileName": "",
"testjobType": "load test",
"enableAutomaticFileSync": "true",
"testjobState": "completed",
"isClusterControllerJobProperties": "",
"testjobDebugExecution": "false",
"executeOnUserMeasuringAgentId": "65",
"definedFromTimeZoneId": "Europe/Berlin",
"executeMeasuringAgentInfo": "agent2.realload.com:8080",
"executeOnMeasuringAgentClusterId": ""
},
"testProperties": {
"referencedResourceFilesList": [
{
"projectId": 130,
"testplanId": 203,
"fileName": "com.dkfqs.tools.jar"
}
],
"jsonConfigObject": {},
"executingScript": "SimpleTest.jar",
"executingScriptResourceFileList": "",
"createTimeStamp": "1694549112155",
"testDescription": "",
"definedFromTestplanId": "251",
"productVersion": "4.8.21",
"definedFromProjectId": "137",
"visibleTestName": "SimpleTest",
"scriptType": "OpenJDK11Jar",
"testId": "384"
}
}
],
"httpExecuteTimeMillis": 141
},
"isError": false
}
getTestjobOutDirectoryFilesInfo
Specific Request Fields:
Response Fields:
- filesInfoArray (for measuring agents), or
- controllerResponse (for cluster controllers)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getTestjobOutDirectoryFilesInfo",
"localTestjobId":33534
}
JSON Response Example (Success Case):
{
"isClusterJob": false,
"measuringAgentData": {
"agentId": 65,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Demo Agent 2",
"agentHost": "agent2.realload.com",
"agentPort": 8080,
"authToken": "************",
"sharedMeasuringAgentTemplateId": -1,
"isLaunchedByCloudCredits": false
},
"filesInfoArray": [
{
"fileName": "DataCollector.err",
"fileSize": 0,
"lastModified": 1695051456261,
"mimeType": "application/octet-stream"
},
{
"fileName": "DataCollector.out",
"fileSize": 5647,
"lastModified": 1695052318516,
"mimeType": "application/octet-stream"
},
{
"fileName": "DataCollector.pid",
"fileSize": 8,
"lastModified": 1695051456273,
"mimeType": "application/octet-stream"
},
{
"fileName": "DataCollector.port",
"fileSize": 6,
"lastModified": 1695051457729,
"mimeType": "application/octet-stream"
},
{
"fileName": "DataCollector.state",
"fileSize": 2,
"lastModified": 1695052318512,
"mimeType": "application/octet-stream"
},
{
"fileName": "TestResult_SimpleTest_2023-09-18@17-51-53.json",
"fileSize": 7421,
"lastModified": 1695052315488,
"mimeType": "application/json"
},
{
"fileName": "user_1_statistics.out",
"fileSize": 5037,
"lastModified": 1695052313788,
"mimeType": "application/octet-stream"
},
{
"fileName": "users.out",
"fileSize": 1923,
"lastModified": 1695052314000,
"mimeType": "application/octet-stream"
}
],
"isError": false
}
getTestjobOutDirectoryFile
Specific Request Fields:
- localTestjobId
- clusterMemberId (optional, -1 = no cluster member file)
- fileName
Response Fields:
- filesInfoArray (for measuring agents), or
- controllerResponse (for cluster controllers)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"getTestjobOutDirectoryFile",
"localTestjobId":33534,
"fileName":"users.out"
}
JSON Response Example (Success Case):
{
"isClusterJob": false,
"measuringAgentData": {
"agentId": 65,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Demo Agent 2",
"agentHost": "agent2.realload.com",
"agentPort": 8080,
"authToken": "************",
"sharedMeasuringAgentTemplateId": -1,
"isLaunchedByCloudCredits": false
},
"fileContentB64": "MjAyMy0wOS0xOCAxNTo1MTo1Mi42MjYgfCBtYWluIHwgSU5GTyB8IE1heC4gSmF2YSBNZW1vcnkgPSAzMzAwIE1CCjIwMjMtMDktMTggMTU6NTE6NTIuNjU1IHwgbWFpbiB8IElORk8gfCBUaW1lIFpvbmUgPSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSArMDA6MDAKMjAyMy0wOS0xOCAxNTo1MTo1Mi42NjggfCBtYWluIHwgSU5GTyB8IC0tLSB2dnYgLS0tIHJlc291cmNlIGZpbGVzIC0tLSB2dnYgLS0tCjIwMjMtMDktMTggMTU6NTE6NTIuNjY5IHwgbWFpbiB8IElORk8gfCAtLS0gXl5eIC0tLSByZXNvdXJjZSBmaWxlcyAtLS0gXl5eIC0tLQoyMDIzLTA5LTE4IDE1OjUxOjUyLjY2OSB8IG1haW4gfCBJTkZPIHwgLS0tIHZ2diAtLS0gZ2VuZXJpYyBhcmd1bWVudHMgLS0tIHZ2diAtLS0KMjAyMy0wOS0xOCAxNTo1MTo1Mi42NjkgfCBtYWluIHwgSU5GTyB8IHVzZXJzID0gMQoyMDIzLTA5LTE4IDE1OjUxOjUyLjY2OSB8IG1haW4gfCBJTkZPIHwgZHVyYXRpb24gPSAzMAoyMDIzLTA5LTE4IDE1OjUxOjUyLjY3MCB8IG1haW4gfCBJTkZPIHwgbWF4TG9vcHMgPSAxCjIwMjMtMDktMTggMTU6NTE6NTIuNjcwIHwgbWFpbiB8IElORk8gfCBkZWxheVBlckxvb3AgPSAxMDAwCjIwMjMtMDktMTggMTU6NTE6NTIuNjcwIHwgbWFpbiB8IElORk8gfCByYW1wdXBUaW1lID0gMTAKMjAyMy0wOS0xOCAxNTo1MTo1Mi42NzAgfCBtYWluIHwgSU5GTyB8IGRhdGFPdXRwdXREaXIgPSAvaG9tZS9ka2Zxcy9hZ2VudC91c2Vyc0RhdGEvVXNlcl8xMy9UZXN0Sm9icy9UZXN0am9iXzI0MTI5L291dAoyMDIzLTA5LTE4IDE1OjUxOjUyLjY3MCB8IG1haW4gfCBJTkZPIHwgZGVidWdFeGVjID0gZmFsc2UKMjAyMy0wOS0xOCAxNTo1MTo1Mi42NzEgfCBtYWluIHwgSU5GTyB8IGRlYnVnRGF0YSA9IGZhbHNlCjIwMjMtMDktMTggMTU6NTE6NTIuNjcxIHwgbWFpbiB8IElORk8gfCBkZXNjcmlwdGlvbiA9IFNpbXBsZSBUZXN0CjIwMjMtMDktMTggMTU6NTE6NTIuNjcxIHwgbWFpbiB8IElORk8gfCAtLS0gXl5eIC0tLSBnZW5lcmljIGFyZ3VtZW50cyAtLS0gXl5eIC0tLQoyMDIzLTA5LTE4IDE1OjUxOjUyLjkyMSB8IG1haW4gfCBJTkZPIHwgSlZNIFdhcm11cCBwZXJmb3JtZWQgaW4gMjM2IG1zCjIwMjMtMDktMTggMTU6NTE6NTIuOTc3IHwgbWFpbiB8IElORk8gfCAtLS0gdnZ2IC0tLSBzcGVjaWZpYyBhcmd1bWVudHMgLS0tIHZ2diAtLS0KMjAyMy0wOS0xOCAxNTo1MTo1Mi45OTQgfCBtYWluIHwgSU5GTyB8IHRjcFRpbWVvdXQgPSAxMDAwMAoyMDIzLTA5LTE4IDE1OjUxOjUyLjk5NSB8IG1haW4gfCBJTkZPIHwgc3NsVGltZW91dCA9IDUwMDAKMjAyMy0wOS0xOCAxNTo1MTo1Mi45OTcgfCBtYWluIHwgSU5GTyB8IGh0dHBUaW1lb3V0ID0gMzAwMDAKMjAyMy0wOS0xOCAxNTo1MTo1Mi45OTcgfCBtYWluIHwgSU5GTyB8IC0tLSBeXl4gLS0tIHNwZWNpZmljIGFyZ3VtZW50cyAtLS0gXl5eIC0tLQoyMDIzLTA5LTE4IDE1OjUxOjUzLjAwMiB8IG1haW4gfCBJTkZPIHwgW1N0YXJ0IG9mIFRlc3RdCjIwMjMtMDktMTggMTU6NTE6NTMuMDAzIHwgVXNlci0xIHwgSU5GTyB8IFVzZXIgc3RhcnRlZAoyMDIzLTA5LTE4IDE1OjUxOjUzLjAyNiB8IHBlcmlvZGljLXRocmVhZCB8IElORk8gfCBUaHJlYWQgc3RhcnRlZAoyMDIzLTA5LTE4IDE1OjUxOjUzLjAyNiB8IFVzZXItMSB8IElORk8gfCBTdGFydCBleGVjdXRlIHNlc3Npb24gbm8uIDEgLi4uCjIwMjMtMDktMTggMTU6NTE6NTMuNTk3IHwgVXNlci0xIHwgSU5GTyB8IC4uLiBFbmQgZXhlY3V0ZSBzZXNzaW9uIG5vLiAxIHN1Y2Nlc3NmdWwgcGFzc2VkCjIwMjMtMDktMTggMTU6NTE6NTMuNjQ5IHwgVXNlci0xIHwgSU5GTyB8IFVzZXIgbm9ybWFsIHRlcm1pbmF0ZWQKMjAyMy0wOS0xOCAxNTo1MTo1NC4wMDMgfCBtYWluIHwgSU5GTyB8IFtFbmQgb2YgVGVzdF0K",
"isError": false
}
saveTestjobOutDirectoryFileToProjectTree
Specific Request Fields:
- localTestjobId
- clusterMemberId (optional, -1 = no cluster member file)
- fileName
- saveAsFileName
- projectId
- resourceSetId
Response Fields:
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"saveTestjobOutDirectoryFileToProjectTree",
"localTestjobId":33534,
"fileName":"users.out",
"saveAsFileName":"users.out",
"projectId":137,
"resourceSetId":251
}
JSON Response Example (Success Case):
{
"isClusterJob": false,
"fileHashCode": 4557110,
"isError": false
}
deleteTestjob
Specific Request Fields:
- localTestjobId
- deleteAlsoRemoteTestjob (boolean)
Response Fields:
- localTestjobState (before the testjob was delete)
- agentResponse (for measuring agents), or
- controllerResponse (for cluster controllers)
Specific Error Flags:
JSON Request Example:
{
"authTokenValue":"jPmFClqeDUXaEk8Q274q",
"action":"deleteTestjob",
"localTestjobId":33534,
"deleteAlsoRemoteTestjob":true
}
JSON Response Example (Success Case):
{
"isClusterJob": false,
"localTestjobState": "completed",
"agentResponse": {
"httpExecuteTimeMillis": 143
},
"isError": false
}
3 - Remote User Monitoring API
Portal Server Remote User Monitoring API Specification
Abstract
The “Remote User Monitoring API” is a WebSocket API that supports developers to implement their own version of a Synthetic Monitoring “Real Time Dashboard”.
Similar to the Remote User API there is also an “API Authentication Token” required to access the API.

API Functions
The API supports the following functions (so-called “actions”):
- subscribeToHeartbeat : Subscribe to a periodic timestamp which is received every second.
- subscribeToRealtimeMonitor : Subscribe to events when a Monitoring Group or a Monitoring Job is created, modified or deleted, and subscribe to be notified each time when a Monitoring Group or a Monitoring Job is executed.
WebSocket URL |
wss://portal.realload.com/RemoteUserMonitoringAPI |
HTTP Request Header Fields |
|
x-api-key: <API Authentication Token> |
required |
subscribeToHeartbeat: true |
optional |
subscribeToRealtimeMonitor: true |
optional |
The subscribed data are received in JSON format. The received JSON values are never null.
subscribeToHeartbeat
- Received action: “heartbeat”
{
"action":"heartbeat",
"timestamp":1677521478771,
"isError":false
}
subscribeToRealtimeMonitor
As first you will receive instantly the data of all already defined Monitoring Groups and Monitoring Jobs, and also the data of the last Execution Result of the Monitoring Groups and Monitoring Jobs (if they have been executed in the past).
After that you will receive update information of all Monitoring Groups and Monitoring Jobs when they are new-defined/modified/deleted, and you will receive also update information about the result of executed Monitoring Groups and Monitoring Jobs.
Notifications for Monitoring Groups
- Received action: “onMonitoringGroupEvent”
- monitoringGroupAction: “groupExists”, “groupAdded”, “groupModified” or “groupDeleted”
{
"action":"onMonitoringGroupEvent",
"monitoringGroupId":17,
"monitoringEvent":
{
"eventTimestamp":1677522195873,
"monitoringGroup":
{
"monitoringGroupId":17,
"ownerUserId":13,
"title":"Group 1",
"description":"My First Group",
"maxDataStorageDays":14,
"agentType":"agent",
"executionEnabled":false,
"executionInterval":180,
"executionTimeout":300,
"currentExecutionState":"dormant",
"lastExecutionStartTime":1677506934041
},
"monitoringGroupAction":"groupExists"
},
"isError":false
}
The executionInterval and the executionTimeout are in seconds.
The lastExecutionStartTime has a value of -1 (minus one) if the Monitoring Group was never executed. The agentType has currently no meaning.
Any modification of a Monitoring Group made by the Portal Server Web Interface such as modify executionEnabled or title effects that a “groupModified” action is released.
Notification for Monitoring Jobs
- Received action: “onMonitoringJobEvent”
- monitoringJobAction: “jobExists”, “jobAdded”, “jobModified”, or “jobDeleted”
{
"action":"onMonitoringJobEvent",
"monitoringGroupId":17,
"monitoringJobId":39,
"monitoringEvent":
{
"eventTimestamp":1677522195875,
"monitoringJobProperties":
{
"enableJobExecution":"true",
"testjobConcurrentUsers":"1",
"testjobDelayPerLoop":"1000",
"testjobDebugMeasuring":"false",
"enableAutomaticFileSync":"false",
"testjobMaxTestDuration":"60",
"testjobDebugExecution":"false",
"testjobRampUpTime":"5",
"definedFromMonitoringGroupId":"17",
"testjobMaxLoopsPerUser":"1",
"productVersion":"4.8.3",
"monitoringJobId":"39",
"monitoringJobTitle":"SimpleTest",
"lastExecutionStartTime":"1677506934086",
"testjobAdditionalArguments":"",
"definedFromTestId":"311",
"testjobUserInputFieldsValuesJsonArray":"[]",
"monitoringJobDescription":""
},
"monitoringTestProperties":
{
"referencedResourceFilesList":[{"projectId":130,"testplanId":203,"fileName":"com.dkfqs.tools.jar"}],
"productVersion":"4.7.14",
"executingScript":"SimpleTest.jar",
"definedFromProjectId":"137",
"executingScriptResourceFileList":"",
"visibleTestName":"SimpleTest",
"scriptType":"OpenJDK11Jar",
"createTimeStamp":"1675464639177",
"testId":"311",
"testDescription":"",
"definedFromTestplanId":"251"
},
"monitoringTestIsHealthy":true,
"monitoringJobAction":"jobExists"
},
"isError":false
}
The testjobMaxTestDuration and the testjobRampUpTime are in seconds. The testjobDelayPerLoop are in milliseconds.
The lastExecutionStartTime has a value of -1 (minus one) if the Monitoring Job was never executed.
Any modification of a Monitoring Job made by the Portal Server Web Interface such as modify enableJobExecution or monitoringJobTitle effects that a “jobModified” action is released.
Notification for Monitoring Group Execution
- Received action: “onMonitoringGroupExecuted”
- oldEvent: true or false | Note: the oldEvent is false at the first time (if the monitoring group was executed in the past) and then will always be true each time when the monitoring group is executed.
{
"action":"onMonitoringGroupExecuted",
"monitoringGroupId":17,
"monitoringEvent":
{"
eventTimestamp":1677522195877,
"oldEvent":true,
"groupExecutionResult":
{
"magicPattern":"MonitoringGroupExecutionResult",
"productVersion":"4.8.3",
"userId":13,
"monitoringGroupId":17,
"groupExecutionId":2430,
"resultTimestamp":1677506950103,
"monitoringJobIdToLocalTestjobIdArray":[{"monitoringJobId":39,"localTestjobId":5015}],
"groupSystemStatus":0,
"groupCombinedTestjobState":"completed",
"groupExecutionLogArray":[
"2023-02-27 15:08:54.067 | | INFO | Monitoring Group Execution Thread started",
"2023-02-27 15:09:10.102 | | INFO | Monitoring Job Id 39 executed",
"2023-02-27 15:09:10.103 | | INFO | Monitoring Group Execution Thread terminated"],
"numberOfPassedSamples":6,
"numberOfFailedSamples":0,
"numberOfPassedLoops":2,
"numberOfFailedLoops":0,
"sumErrorsSeverityWarning":0,
"sumErrorsSeverityError":0,
"sumErrorsSeverityFatal":0
}
},
"isError":false
}
groupSystemStatus:
- 0: Healthy = All monitoring jobs of the monitoring group have been started on all measuring agents.
- -1 (minus one): Partial Malfunction = Some monitoring jobs of the monitoring group have not been started on some measuring agents.
- -2 (minus two): Malfunction = No monitoring jobs of the monitoring group have been started on any measuring agent.
groupCombinedTestjobState
- “completed”: All testjobs of the monitoring group have been successfully executed on all measuring agents.
- “partial failed”: The execution of some of the testjobs of the monitoring group did fail on some measuring agents.
- “failed”: The execution of all of the testjobs of the monitoring group did fail on all measuring agents.
Hint for groupCombinedTestjobState : Note that is value does not reflect if any warnings or errors have been measured by the testjobs.
The Reference Implementation on the Real Load Portal Server shows the measured (sumErrorsSeverityError + sumErrorsSeverityFatal) simple as “number of measured errors”.
Notification for Monitoring Job Execution
- Received action: “onMonitoringJobExecuted”
- oldEvent: true or false | Note: the oldEvent is false at the first time (if the monitoring job was executed in the past) and then will always be true each time when the monitoring job is executed.
{
"action": "onMonitoringJobExecuted",
"monitoringGroupId": 17,
"monitoringJobId": 39,
"monitoringEvent": {
"eventTimestamp": 1677522195878,
"oldEvent": true,
"jobExecutionResult": {
"magicPattern": "MonitoringJobExecutionResult",
"productVersion": "4.8.3",
"userId": 13,
"monitoringGroupId": 17,
"groupExecutionId": 2430,
"monitoringJobId": 39,
"localTestjobId": 5015,
"resultTimestamp": 1677506949101,
"systemStatus": 0,
"jobExecutionLogArray": [
"2023-02-27 15:08:54.085 | | INFO | Monitoring Job Execution Thread started",
"2023-02-27 15:08:54.436 | Ubuntu 10 | INFO | Job submitted to measuring agent",
"2023-02-27 15:08:59.854 | Ubuntu 10 | INFO | Job executed on measuring agent, exit code = process executed successfully",
"2023-02-27 15:09:01.847 | Ubuntu 11 | INFO | Job submitted to measuring agent",
"2023-02-27 15:09:07.438 | Ubuntu 11 | INFO | Job executed on measuring agent, exit code = process executed successfully",
"2023-02-27 15:09:09.101 | | INFO | Monitoring Job Execution Thread terminated"
],
"combinedTestjobState": "completed",
"hasCombinedTestResult": true,
"combinedTestResultFileName": "TestResult_MonitoringJob_39_2023-02-27@15-09-09.json",
"combinedTestResultSummaryStatistic": {
"productVersion": "4.8.3",
"localTestjobId": 5015,
"remoteTestjobId": 2430,
"samplingGranularity": 4000,
"jobStartTimestamp": 1677506938135,
"jobEndTimestamp": 1677506945975,
"osCpuLoadPercent": -1,
"numberOfPassedLoopsTimeSum": 506,
"numberOfConcurrentUsers": 0,
"currentlyPendingSamples": -1,
"numberOfPassedSamples": 6,
"numberOfFailedSamples": 0,
"numberOfPassedLoops": 2,
"numberOfFailedLoops": 0
},
"averagePassedLoopTime": 266,
"sumErrorsSeverityWarning": 0,
"sumErrorsSeverityError": 0,
"sumErrorsSeverityFatal": 0,
"measuringAgentResultArray": [
{
"userId": 13,
"monitoringGroupId": 17,
"groupExecutionId": 2430,
"monitoringJobId": 39,
"localTestjobId": 5015,
"resultTimestamp": 1677506949076,
"measuringAgent": {
"agentId": 69,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Ubuntu 10",
"agentHost": "192.168.0.110",
"agentPort": 8080
},
"systemStatus": 0,
"testjobState": "completed",
"testjobExitCode": 0,
"remoteTestjobId": 2169,
"testjobResultFileName": "TestResult_SimpleTest_2023-02-27@15-08-58.json",
"averagePassedLoopTime": 232,
"sumErrorsSeverityWarning": 0,
"sumErrorsSeverityError": 0,
"sumErrorsSeverityFatal": 0,
"additionalTextFilesArray": [
{
"fileName": ".testjob.properties",
"fileLinesArray": [
"#Test Job Properties",
"#Mon Feb 27 15:08:59 CET 2023",
"testjobResultFileName=TestResult_SimpleTest_2023-02-27@15-08-58.json",
"testjobConcurrentUsers=1",
"testjobDescription=SimpleTest",
"testjobDebugMeasuring=false",
"testjobMaxTestDuration=60",
"testjobRampUpTime=5",
"isClusterJob=false",
"localTestjobId=5015",
"testjobMaxLoopsPerUser=1",
"productVersion=4.8.3",
"remoteTestjobId=2169",
"testjobAdditionalArguments=",
"definedFromTestId=311",
"testjobSignature=T9E26sxc4yzIxFsaV3J8nn9XJIbBX137/GMDJODyGQG73pES7iSopralt4rTLoqq9VG/cMFiTxexzCLYksYlF2w8sMls+9oWkPk/Yd0cjSAZgUO24gr7pCjJfU+GuJ6uJ/ts5XeHUSXPqFWiNh0SJG2dBx5wnuyGbvlsYKuUck6c51+6pjz1EaO3k+1eVgri9oREDBZEMOIf4ePlrbmgEf+Y9/X/dm0+PjdxZoi+AKKhK+TpXiWpmyyiw8X6RrckznJ3z/XhRFxcAAzurcz7qxa7Qjb2z64lO0lMMelLjXnTXRgSCVhYngKq6HWvoFUclGK8Z1Ju3cgiGtKT3Bn/mw\\=\\=",
"testjobDelayPerLoop=1000",
"testjobExitCode=0",
"userInputFieldsFileName=",
"createTimeStamp=1677506934097",
"testjobType=monitoring",
"enableAutomaticFileSync=false",
"testjobState=completed",
"testjobDebugExecution=false",
"executeOnUserMeasuringAgentId=69",
"definedFromTimeZoneId=Europe/Berlin",
"executeMeasuringAgentInfo=192.168.0.110\\:8080"
]
},
{
"fileName": "DataCollector.err",
"fileLinesArray": []
},
{
"fileName": "DataCollector.out",
"fileLinesArray": [
"Max. Java Memory = 128 MB",
"--- vvv --- TestjobProperties --- vvv ---",
"testjobResultFileName=",
"executeMeasuringAgentClusterInfo=",
"testjobConcurrentUsers=1",
"testjobDescription=SimpleTest",
"testjobDebugMeasuring=false",
"testjobMaxTestDuration=60",
"isClusterJob=false",
"testjobRampUpTime=5",
"localTestjobId=5015",
"testjobMaxLoopsPerUser=1",
"productVersion=4.8.1",
"remoteTestjobId=2169",
"testjobAdditionalArguments=",
"definedFromTestId=311",
"testjobSignature=T9E26sxc4yzIxFsaV3J8nn9XJIbBX137/GMDJODyGQG73pES7iSopralt4rTLoqq9VG/cMFiTxexzCLYksYlF2w8sMls+9oWkPk/Yd0cjSAZgUO24gr7pCjJfU+GuJ6uJ/ts5XeHUSXPqFWiNh0SJG2dBx5wnuyGbvlsYKuUck6c51+6pjz1EaO3k+1eVgri9oREDBZEMOIf4ePlrbmgEf+Y9/X/dm0+PjdxZoi+AKKhK+TpXiWpmyyiw8X6RrckznJ3z/XhRFxcAAzurcz7qxa7Qjb2z64lO0lMMelLjXnTXRgSCVhYngKq6HWvoFUclGK8Z1Ju3cgiGtKT3Bn/mw==",
"testjobDelayPerLoop=1000",
"testjobExitCode=",
"createTimeStamp=1677506935549",
"userInputFieldsFileName=",
"testjobType=monitoring",
"enableAutomaticFileSync=false",
"testjobState=submitted",
"isClusterControllerJobProperties=",
"testjobDebugExecution=false",
"executeOnUserMeasuringAgentId=69",
"definedFromTimeZoneId=Europe/Berlin",
"executeMeasuringAgentInfo=192.168.0.110:8080",
"executeOnMeasuringAgentClusterId=",
"--- ^^^ --- TestjobProperties --- ^^^ ---",
"--- vvv --- TestProperties --- vvv ---",
"referencedResourceFilesList=[{\"projectId\":130,\"testplanId\":203,\"fileName\":\"com.dkfqs.tools.jar\"}]",
"productVersion=4.7.14",
"executingScript=SimpleTest.jar",
"definedFromProjectId=137",
"executingScriptResourceFileList=",
"visibleTestName=SimpleTest",
"scriptType=OpenJDK11Jar",
"createTimeStamp=1675464639177",
"testId=311",
"testDescription=",
"definedFromTestplanId=251",
"--- ^^^ --- TestProperties --- ^^^ ---",
"X509 TLS server certificate generated for CN = 127.0.0.1",
"Internal RSA 2048 bit keypair generated in 96 ms",
"2023-02-27 14:08:56.682 | QAHTTPd | WARN | QAHTTPd V1.4-B started",
"2023-02-27 14:08:56.709 | QAHTTPd | INFO | HTTPS server starting at port 44941",
"2023-02-27 14:08:56.727 | QAHTTPd | INFO | HTTPS server ready at port 44941",
"2023-02-27 14:08:57.697 | DataCollector PID 280356 | INFO | Use data collector protocol #1 = \"one output file per user DKFQS tailer\"",
"2023-02-27 14:08:57.711 | DataCollector PID 280356 | INFO | Initialize data collector protocol #1 ...",
"2023-02-27 14:08:57.716 | DataCollector PID 280356 | INFO | Data collector protocol #1 testjob out subdirectory = /home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_2169/out",
"2023-02-27 14:08:57.717 | DataCollector PID 280356 | INFO | Number of concurrent users = 1",
"2023-02-27 14:08:57.726 | DataCollector PID 280356 | INFO | File '/home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_2169/out/user_1_statistics.out' created",
"2023-02-27 14:08:57.726 | DataCollector PID 280356 | INFO | ... Initialize data collector protocol #1 done",
"2023-02-27 14:08:57.777 | 127.0.0.1 : 50610 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:08:57.799 | 127.0.0.1 : 50610 | INFO | InternalApi action = checkStartupCompleted",
"2023-02-27 14:08:57.803 | 127.0.0.1 : 50610 | INFO | HTTP/1.1 200 OK [34 application/json]",
"2023-02-27 14:08:57.899 | 127.0.0.1 : 50612 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:08:57.901 | 127.0.0.1 : 50612 | INFO | InternalApi action = startProtocol",
"2023-02-27 14:08:57.904 | 127.0.0.1 : 50612 | INFO | Start data collector protocol #1",
"2023-02-27 14:08:57.905 | 127.0.0.1 : 50612 | INFO | Tailer delay millis = 500",
"2023-02-27 14:08:57.905 | 127.0.0.1 : 50612 | INFO | Start tailer for user no. 1",
"2023-02-27 14:08:57.911 | SamplingGranularityThread | INFO | SamplingGranularityThread started. Sampling granularity = 4000 ms",
"2023-02-27 14:08:57.962 | 127.0.0.1 : 50612 | INFO | HTTP/1.1 200 OK [11 application/json]",
"2023-02-27 14:08:59.988 | 127.0.0.1 : 50616 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:08:59.990 | 127.0.0.1 : 50616 | INFO | InternalApi action = stopProtocol",
"2023-02-27 14:08:59.990 | 127.0.0.1 : 50616 | INFO | Stop data collector protocol #1",
"2023-02-27 14:09:00.991 | 127.0.0.1 : 50616 | INFO | Stop tailer for user no. 1",
"2023-02-27 14:09:00.996 | SamplingGranularityThread | INFO | SamplingGranularityThread stopped",
"2023-02-27 14:09:00.996 | 127.0.0.1 : 50616 | INFO | HTTP/1.1 200 OK [11 application/json]",
"2023-02-27 14:09:01.017 | 127.0.0.1 : 50618 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:09:01.018 | 127.0.0.1 : 50618 | INFO | InternalApi action = writeTestResultToDisk",
"2023-02-27 14:09:01.033 | 127.0.0.1 : 50618 | INFO | Test result file = TestResult_SimpleTest_2023-02-27@15-08-58.json",
"2023-02-27 14:09:01.039 | 127.0.0.1 : 50618 | INFO | HTTP/1.1 200 OK [80 application/json]"
]
},
{
"fileName": "user_1_statistics.out",
"fileLinesArray": [
"{\"subject\":\"declare-statistic\",\"statistic-id\":0,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"Measurement Group «Group 1»\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Execution Time\",\"unit-text\":\"ms\",\"sort-position\":0,\"add-to-summary-statistic\":false,\"background-color\":\"table-info\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":1,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"GET https://192.168.0.112/\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Response Time\",\"unit-text\":\"ms\",\"sort-position\":1,\"add-to-summary-statistic\":true,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":2,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"GET https://192.168.0.112/images/RealLoadPortal.gif\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Response Time\",\"unit-text\":\"ms\",\"sort-position\":2,\"add-to-summary-statistic\":true,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":3,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"GET https://192.168.0.112/images/QAHTTPd_188x112.gif\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Response Time\",\"unit-text\":\"ms\",\"sort-position\":3,\"add-to-summary-statistic\":true,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100001,\"statistic-type\":\"cumulative-counter-long\",\"statistic-title\":\"Total Bytes Sent\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"Bytes\",\"sort-position\":100001,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100002,\"statistic-type\":\"cumulative-counter-long\",\"statistic-title\":\"Total Bytes Received\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"Bytes\",\"sort-position\":100002,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100003,\"statistic-type\":\"throughput-time-chart\",\"statistic-title\":\"Network Throughput\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Network Throughput\",\"unit-text\":\"Mbps\",\"sort-position\":100003,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100004,\"statistic-type\":\"average-and-current-value\",\"statistic-title\":\"Avg. TCP Connect Time\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"ms\",\"sort-position\":100004,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100005,\"statistic-type\":\"average-and-current-value\",\"statistic-title\":\"Avg. SSL Handshake Time\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"ms\",\"sort-position\":100005,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100006,\"statistic-type\":\"efficiency-ratio-percent\",\"statistic-title\":\"HTTP Keep-Alive Efficiency\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"%\",\"sort-position\":100006,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"register-execute-start\",\"timestamp\":1677506938135}",
"{\"subject\":\"register-loop-start\",\"timestamp\":1677506938136}",
"{\"subject\":\"register-sample-start\",\"statistic-id\":0,\"timestamp\":1677506938136}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":0}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":0}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0,\"timestamp\":1677506938137}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":-1,\"currentValueTimestamp\":-1}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":-1,\"currentValueTimestamp\":-1}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":0,\"inefficiencyDeltaValue\":0}",
"{\"subject\":\"register-sample-start\",\"statistic-id\":1,\"timestamp\":1677506938151}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":1,\"value\":167,\"timestamp\":1677506938335}",
"{\"subject\":\"register-sample-start\",\"statistic-id\":2,\"timestamp\":1677506938336}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":2,\"value\":8,\"timestamp\":1677506938346}",
"{\"subject\":\"register-sample-start\",\"statistic-id\":3,\"timestamp\":1677506938347}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":3,\"value\":4,\"timestamp\":1677506938353}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":0,\"value\":217,\"timestamp\":1677506938353}",
"{\"subject\":\"register-loop-passed\",\"loop-time\":217,\"timestamp\":1677506938353}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":1038}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":48631}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0.397352,\"timestamp\":1677506938389}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":2,\"numValuesDelta\":1,\"currentValue\":2,\"currentValueTimestamp\":1677506938322}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":61,\"numValuesDelta\":1,\"currentValue\":61,\"currentValueTimestamp\":1677506938322}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":2,\"inefficiencyDeltaValue\":1}",
"{\"subject\":\"register-execute-end\",\"timestamp\":1677506938406}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":0}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":0}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0,\"timestamp\":1677506938640}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":2,\"currentValueTimestamp\":1677506938322}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":61,\"currentValueTimestamp\":1677506938322}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":0,\"inefficiencyDeltaValue\":0}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":0}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":0}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0,\"timestamp\":1677506938891}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":2,\"currentValueTimestamp\":1677506938322}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":61,\"currentValueTimestamp\":1677506938322}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":0,\"inefficiencyDeltaValue\":0}"
]
},
{
"fileName": "users.out",
"fileLinesArray": [
"2023-02-27 14:08:58.097 | main | INFO | Max. Java Memory = 256 MB",
"2023-02-27 14:08:58.106 | main | INFO | --- vvv --- resource files --- vvv ---",
"2023-02-27 14:08:58.107 | main | INFO | --- ^^^ --- resource files --- ^^^ ---",
"2023-02-27 14:08:58.107 | main | INFO | --- vvv --- generic arguments --- vvv ---",
"2023-02-27 14:08:58.107 | main | INFO | users = 1",
"2023-02-27 14:08:58.107 | main | INFO | duration = 60",
"2023-02-27 14:08:58.107 | main | INFO | maxLoops = 1",
"2023-02-27 14:08:58.107 | main | INFO | delayPerLoop = 1000",
"2023-02-27 14:08:58.108 | main | INFO | rampupTime = 5",
"2023-02-27 14:08:58.108 | main | INFO | dataOutputDir = /home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_2169/out",
"2023-02-27 14:08:58.108 | main | INFO | debugExec = false",
"2023-02-27 14:08:58.108 | main | INFO | debugData = false",
"2023-02-27 14:08:58.108 | main | INFO | description = SimpleTest",
"2023-02-27 14:08:58.108 | main | INFO | --- ^^^ --- generic arguments --- ^^^ ---",
"2023-02-27 14:08:58.108 | main | INFO | --- vvv --- specific arguments --- vvv ---",
"2023-02-27 14:08:58.114 | main | INFO | tcpTimeout = 10000",
"2023-02-27 14:08:58.114 | main | INFO | sslTimeout = 5000",
"2023-02-27 14:08:58.115 | main | INFO | httpTimeout = 30000",
"2023-02-27 14:08:58.115 | main | INFO | --- ^^^ --- specific arguments --- ^^^ ---",
"2023-02-27 14:08:58.123 | main | INFO | [Start of Test]",
"2023-02-27 14:08:58.124 | User-1 | INFO | User started",
"2023-02-27 14:08:58.136 | periodic-thread | INFO | Thread started",
"2023-02-27 14:08:58.136 | User-1 | INFO | Start execute session no. 1 ...",
"2023-02-27 14:08:58.353 | User-1 | INFO | ... End execute session no. 1 successful passed",
"2023-02-27 14:08:58.406 | User-1 | INFO | User normal terminated",
"2023-02-27 14:08:59.124 | main | INFO | [End of Test]"
]
}
]
},
{
"userId": 13,
"monitoringGroupId": 17,
"groupExecutionId": 2430,
"monitoringJobId": 39,
"localTestjobId": 5015,
"resultTimestamp": 1677506949077,
"measuringAgent": {
"agentId": 70,
"createdBySystem": false,
"ownerUserId": 13,
"agentActive": true,
"agentDescription": "Ubuntu 11",
"agentHost": "192.168.0.111",
"agentPort": 8080
},
"systemStatus": 0,
"testjobState": "completed",
"testjobExitCode": 0,
"remoteTestjobId": 1676,
"testjobResultFileName": "TestResult_SimpleTest_2023-02-27@15-09-05.json",
"averagePassedLoopTime": 299,
"sumErrorsSeverityWarning": 0,
"sumErrorsSeverityError": 0,
"sumErrorsSeverityFatal": 0,
"additionalTextFilesArray": [
{
"fileName": ".testjob.properties",
"fileLinesArray": [
"#Test Job Properties",
"#Mon Feb 27 15:09:07 CET 2023",
"testjobResultFileName=TestResult_SimpleTest_2023-02-27@15-09-05.json",
"testjobConcurrentUsers=1",
"testjobDescription=SimpleTest",
"testjobDebugMeasuring=false",
"testjobMaxTestDuration=60",
"testjobRampUpTime=5",
"isClusterJob=false",
"localTestjobId=5015",
"testjobMaxLoopsPerUser=1",
"productVersion=4.8.3",
"remoteTestjobId=1676",
"testjobAdditionalArguments=",
"definedFromTestId=311",
"testjobSignature=T9E26sxc4yzIxFsaV3J8nn9XJIbBX137/GMDJODyGQG73pES7iSopralt4rTLoqq9VG/cMFiTxexzCLYksYlF2w8sMls+9oWkPk/Yd0cjSAZgUO24gr7pCjJfU+GuJ6uJ/ts5XeHUSXPqFWiNh0SJG2dBx5wnuyGbvlsYKuUck6c51+6pjz1EaO3k+1eVgri9oREDBZEMOIf4ePlrbmgEf+Y9/X/dm0+PjdxZoi+AKKhK+TpXiWpmyyiw8X6RrckznJ3z/XhRFxcAAzurcz7qxa7Qjb2z64lO0lMMelLjXnTXRgSCVhYngKq6HWvoFUclGK8Z1Ju3cgiGtKT3Bn/mw\\=\\=",
"testjobDelayPerLoop=1000",
"testjobExitCode=0",
"userInputFieldsFileName=",
"createTimeStamp=1677506941508",
"testjobType=monitoring",
"enableAutomaticFileSync=false",
"testjobState=completed",
"testjobDebugExecution=false",
"executeOnUserMeasuringAgentId=70",
"definedFromTimeZoneId=Europe/Berlin",
"executeMeasuringAgentInfo=192.168.0.111\\:8080"
]
},
{
"fileName": "DataCollector.err",
"fileLinesArray": []
},
{
"fileName": "DataCollector.out",
"fileLinesArray": [
"Max. Java Memory = 128 MB",
"--- vvv --- TestjobProperties --- vvv ---",
"testjobResultFileName=",
"executeMeasuringAgentClusterInfo=",
"testjobConcurrentUsers=1",
"testjobDescription=SimpleTest",
"testjobDebugMeasuring=false",
"testjobMaxTestDuration=60",
"isClusterJob=false",
"testjobRampUpTime=5",
"localTestjobId=5015",
"testjobMaxLoopsPerUser=1",
"productVersion=4.8.1",
"remoteTestjobId=1676",
"testjobAdditionalArguments=",
"definedFromTestId=311",
"testjobSignature=T9E26sxc4yzIxFsaV3J8nn9XJIbBX137/GMDJODyGQG73pES7iSopralt4rTLoqq9VG/cMFiTxexzCLYksYlF2w8sMls+9oWkPk/Yd0cjSAZgUO24gr7pCjJfU+GuJ6uJ/ts5XeHUSXPqFWiNh0SJG2dBx5wnuyGbvlsYKuUck6c51+6pjz1EaO3k+1eVgri9oREDBZEMOIf4ePlrbmgEf+Y9/X/dm0+PjdxZoi+AKKhK+TpXiWpmyyiw8X6RrckznJ3z/XhRFxcAAzurcz7qxa7Qjb2z64lO0lMMelLjXnTXRgSCVhYngKq6HWvoFUclGK8Z1Ju3cgiGtKT3Bn/mw==",
"testjobDelayPerLoop=1000",
"testjobExitCode=",
"createTimeStamp=1677506942962",
"userInputFieldsFileName=",
"testjobType=monitoring",
"enableAutomaticFileSync=false",
"testjobState=submitted",
"isClusterControllerJobProperties=",
"testjobDebugExecution=false",
"executeOnUserMeasuringAgentId=70",
"definedFromTimeZoneId=Europe/Berlin",
"executeMeasuringAgentInfo=192.168.0.111:8080",
"executeOnMeasuringAgentClusterId=",
"--- ^^^ --- TestjobProperties --- ^^^ ---",
"--- vvv --- TestProperties --- vvv ---",
"referencedResourceFilesList=[{\"projectId\":130,\"testplanId\":203,\"fileName\":\"com.dkfqs.tools.jar\"}]",
"productVersion=4.7.14",
"executingScript=SimpleTest.jar",
"definedFromProjectId=137",
"executingScriptResourceFileList=",
"visibleTestName=SimpleTest",
"scriptType=OpenJDK11Jar",
"createTimeStamp=1675464639177",
"testId=311",
"testDescription=",
"definedFromTestplanId=251",
"--- ^^^ --- TestProperties --- ^^^ ---",
"X509 TLS server certificate generated for CN = 127.0.0.1",
"Internal RSA 2048 bit keypair generated in 58 ms",
"2023-02-27 14:09:04.195 | QAHTTPd | WARN | QAHTTPd V1.4-B started",
"2023-02-27 14:09:04.226 | QAHTTPd | INFO | HTTPS server starting at port 44448",
"2023-02-27 14:09:04.258 | QAHTTPd | INFO | HTTPS server ready at port 44448",
"2023-02-27 14:09:05.189 | DataCollector PID 262208 | INFO | Use data collector protocol #1 = \"one output file per user DKFQS tailer\"",
"2023-02-27 14:09:05.194 | DataCollector PID 262208 | INFO | Initialize data collector protocol #1 ...",
"2023-02-27 14:09:05.197 | DataCollector PID 262208 | INFO | Data collector protocol #1 testjob out subdirectory = /home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_1676/out",
"2023-02-27 14:09:05.198 | DataCollector PID 262208 | INFO | Number of concurrent users = 1",
"2023-02-27 14:09:05.214 | 127.0.0.1 : 50182 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:09:05.215 | DataCollector PID 262208 | INFO | File '/home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_1676/out/user_1_statistics.out' created",
"2023-02-27 14:09:05.218 | DataCollector PID 262208 | INFO | ... Initialize data collector protocol #1 done",
"2023-02-27 14:09:05.249 | 127.0.0.1 : 50182 | INFO | InternalApi action = checkStartupCompleted",
"2023-02-27 14:09:05.257 | 127.0.0.1 : 50182 | INFO | HTTP/1.1 200 OK [34 application/json]",
"2023-02-27 14:09:05.355 | 127.0.0.1 : 50184 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:09:05.359 | 127.0.0.1 : 50184 | INFO | InternalApi action = startProtocol",
"2023-02-27 14:09:05.370 | 127.0.0.1 : 50184 | INFO | Start data collector protocol #1",
"2023-02-27 14:09:05.371 | 127.0.0.1 : 50184 | INFO | Tailer delay millis = 500",
"2023-02-27 14:09:05.371 | 127.0.0.1 : 50184 | INFO | Start tailer for user no. 1",
"2023-02-27 14:09:05.378 | SamplingGranularityThread | INFO | SamplingGranularityThread started. Sampling granularity = 4000 ms",
"2023-02-27 14:09:05.428 | 127.0.0.1 : 50184 | INFO | HTTP/1.1 200 OK [11 application/json]",
"2023-02-27 14:09:05.933 | User 1 | ERROR | Tailer: Failed to parse JSON data at line 22 of file '/home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_1676/out/user_1_statistics.out'",
"2023-02-27 14:09:05.933 | User 1 | ERROR | libs.com.eclipsesource.json.ParseException: Unexpected character at 1:65",
"2023-02-27 14:09:05.933 | User 1 | ERROR | \tat libs.com.eclipsesource.json.JsonParser.error(JsonParser.java:490)",
"2023-02-27 14:09:05.934 | User 1 | ERROR | \tat libs.com.eclipsesource.json.JsonParser.parse(JsonParser.java:155)",
"2023-02-27 14:09:05.934 | User 1 | ERROR | \tat libs.com.eclipsesource.json.JsonParser.parse(JsonParser.java:91)",
"2023-02-27 14:09:05.934 | User 1 | ERROR | \tat libs.com.eclipsesource.json.Json.parse(Json.java:295)",
"2023-02-27 14:09:05.934 | User 1 | ERROR | \tat com.dkfqs.measuringagent.datacollector.ProtocolType1AdapterTailerListener.onExtractLine(ProtocolType1AdapterTailerListener.java:91)",
"2023-02-27 14:09:05.934 | User 1 | ERROR | \tat com.dkfqs.measuringagent.product.DKFQSFileTailerThread.convertOutputBufferToLines(DKFQSFileTailerThread.java:152)",
"2023-02-27 14:09:05.934 | User 1 | ERROR | \tat com.dkfqs.measuringagent.product.DKFQSFileTailerThread.run(DKFQSFileTailerThread.java:86)",
"2023-02-27 14:09:05.934 | User 1 | ERROR | Tailer: Invalid JSON data received at line 23 of file '/home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_1676/out/user_1_statistics.out'",
"2023-02-27 14:09:07.470 | 127.0.0.1 : 50188 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:09:07.472 | 127.0.0.1 : 50188 | INFO | InternalApi action = stopProtocol",
"2023-02-27 14:09:07.472 | 127.0.0.1 : 50188 | INFO | Stop data collector protocol #1",
"2023-02-27 14:09:08.473 | 127.0.0.1 : 50188 | INFO | Stop tailer for user no. 1",
"2023-02-27 14:09:08.475 | 127.0.0.1 : 50188 | INFO | HTTP/1.1 200 OK [11 application/json]",
"2023-02-27 14:09:08.476 | SamplingGranularityThread | INFO | SamplingGranularityThread stopped",
"2023-02-27 14:09:08.512 | 127.0.0.1 : 50190 | INFO | https POST /dataCollectorApi HTTP/1.1",
"2023-02-27 14:09:08.514 | 127.0.0.1 : 50190 | INFO | InternalApi action = writeTestResultToDisk",
"2023-02-27 14:09:08.541 | 127.0.0.1 : 50190 | INFO | Test result file = TestResult_SimpleTest_2023-02-27@15-09-05.json",
"2023-02-27 14:09:08.548 | 127.0.0.1 : 50190 | INFO | HTTP/1.1 200 OK [80 application/json]"
]
},
{
"fileName": "user_1_statistics.out",
"fileLinesArray": [
"{\"subject\":\"declare-statistic\",\"statistic-id\":0,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"Measurement Group «Group 1»\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Execution Time\",\"unit-text\":\"ms\",\"sort-position\":0,\"add-to-summary-statistic\":false,\"background-color\":\"table-info\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":1,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"GET https://192.168.0.112/\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Response Time\",\"unit-text\":\"ms\",\"sort-position\":1,\"add-to-summary-statistic\":true,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":2,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"GET https://192.168.0.112/images/RealLoadPortal.gif\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Response Time\",\"unit-text\":\"ms\",\"sort-position\":2,\"add-to-summary-statistic\":true,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":3,\"statistic-type\":\"sample-event-time-chart\",\"statistic-title\":\"GET https://192.168.0.112/images/QAHTTPd_188x112.gif\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Response Time\",\"unit-text\":\"ms\",\"sort-position\":3,\"add-to-summary-statistic\":true,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100001,\"statistic-type\":\"cumulative-counter-long\",\"statistic-title\":\"Total Bytes Sent\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"Bytes\",\"sort-position\":100001,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100002,\"statistic-type\":\"cumulative-counter-long\",\"statistic-title\":\"Total Bytes Received\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"Bytes\",\"sort-position\":100002,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100003,\"statistic-type\":\"throughput-time-chart\",\"statistic-title\":\"Network Throughput\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"Network Throughput\",\"unit-text\":\"Mbps\",\"sort-position\":100003,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100004,\"statistic-type\":\"average-and-current-value\",\"statistic-title\":\"Avg. TCP Connect Time\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"ms\",\"sort-position\":100004,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100005,\"statistic-type\":\"average-and-current-value\",\"statistic-title\":\"Avg. SSL Handshake Time\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"ms\",\"sort-position\":100005,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"declare-statistic\",\"statistic-id\":100006,\"statistic-type\":\"efficiency-ratio-percent\",\"statistic-title\":\"HTTP Keep-Alive Efficiency\",\"statistic-subtitle\":\"\",\"y-axis-title\":\"\",\"unit-text\":\"%\",\"sort-position\":100006,\"add-to-summary-statistic\":false,\"background-color\":\"\"}",
"{\"subject\":\"register-execute-start\",\"timestamp\":1677506945634}",
"{\"subject\":\"register-loop-start\",\"timestamp\":1677506945635}",
"{\"subject\":\"register-sample-start\",\"statistic-id\":0,\"timestamp\":1677506945635}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":0}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":0}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0,\"timestamp\":1677506945637}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":-1,\"currentValueTimestamp\":-1}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":-1,\"currentValueTimestamp\":-1}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":0,\"inefficiencyDeltaValue\":0}",
"{\"subject\":\"register-sample-start\",\"statistic-id\":1,\"timestamp\":1677506945653}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":1,\"value\":209,\"timestamp\":1677506945886}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":319}{\"subject\":\"register-sample-start\",\"statistic-id\":2,\"timestamp\":1677506945895}",
"",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":2681}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0.024,\"timestamp\":1677506945896}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":2,\"numValuesDelta\":1,\"currentValue\":2,\"currentValueTimestamp\":1677506945867}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":72,\"numValuesDelta\":1,\"currentValue\":72,\"currentValueTimestamp\":1677506945867}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":0,\"inefficiencyDeltaValue\":1}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":2,\"value\":14,\"timestamp\":1677506945911}",
"{\"subject\":\"register-sample-start\",\"statistic-id\":3,\"timestamp\":1677506945912}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":3,\"value\":4,\"timestamp\":1677506945923}",
"{\"subject\":\"add-sample-long\",\"statistic-id\":0,\"value\":288,\"timestamp\":1677506945923}",
"{\"subject\":\"register-loop-passed\",\"loop-time\":289,\"timestamp\":1677506945924}",
"{\"subject\":\"register-execute-end\",\"timestamp\":1677506945975}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":719}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":45950}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0.373352,\"timestamp\":1677506946148}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":2,\"currentValueTimestamp\":1677506945867}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":72,\"currentValueTimestamp\":1677506945867}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":2,\"inefficiencyDeltaValue\":0}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100001,\"value\":0}",
"{\"subject\":\"add-counter-long\",\"statistic-id\":100002,\"value\":0}",
"{\"subject\":\"add-throughput-delta\",\"statistic-id\":100003,\"delta-value\":0,\"timestamp\":1677506946400}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100004,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":2,\"currentValueTimestamp\":1677506945867}",
"{\"subject\":\"add-average-delta-and-current-value\",\"statistic-id\":100005,\"sumValuesDelta\":0,\"numValuesDelta\":0,\"currentValue\":72,\"currentValueTimestamp\":1677506945867}",
"{\"subject\":\"add-efficiency-ratio-delta\",\"statistic-id\":100006,\"efficiencyDeltaValue\":0,\"inefficiencyDeltaValue\":0}"
]
},
{
"fileName": "users.out",
"fileLinesArray": [
"2023-02-27 14:09:05.586 | main | INFO | Max. Java Memory = 256 MB",
"2023-02-27 14:09:05.599 | main | INFO | --- vvv --- resource files --- vvv ---",
"2023-02-27 14:09:05.599 | main | INFO | --- ^^^ --- resource files --- ^^^ ---",
"2023-02-27 14:09:05.599 | main | INFO | --- vvv --- generic arguments --- vvv ---",
"2023-02-27 14:09:05.600 | main | INFO | users = 1",
"2023-02-27 14:09:05.600 | main | INFO | duration = 60",
"2023-02-27 14:09:05.600 | main | INFO | maxLoops = 1",
"2023-02-27 14:09:05.600 | main | INFO | delayPerLoop = 1000",
"2023-02-27 14:09:05.600 | main | INFO | rampupTime = 5",
"2023-02-27 14:09:05.600 | main | INFO | dataOutputDir = /home/dkfqs/agent/usersData/User_13/TestJobs/Testjob_1676/out",
"2023-02-27 14:09:05.601 | main | INFO | debugExec = false",
"2023-02-27 14:09:05.601 | main | INFO | debugData = false",
"2023-02-27 14:09:05.601 | main | INFO | description = SimpleTest",
"2023-02-27 14:09:05.601 | main | INFO | --- ^^^ --- generic arguments --- ^^^ ---",
"2023-02-27 14:09:05.601 | main | INFO | --- vvv --- specific arguments --- vvv ---",
"2023-02-27 14:09:05.609 | main | INFO | tcpTimeout = 10000",
"2023-02-27 14:09:05.609 | main | INFO | sslTimeout = 5000",
"2023-02-27 14:09:05.610 | main | INFO | httpTimeout = 30000",
"2023-02-27 14:09:05.610 | main | INFO | --- ^^^ --- specific arguments --- ^^^ ---",
"2023-02-27 14:09:05.620 | main | INFO | [Start of Test]",
"2023-02-27 14:09:05.621 | User-1 | INFO | User started",
"2023-02-27 14:09:05.635 | periodic-thread | INFO | Thread started",
"2023-02-27 14:09:05.635 | User-1 | INFO | Start execute session no. 1 ...",
"2023-02-27 14:09:05.924 | User-1 | INFO | ... End execute session no. 1 successful passed",
"2023-02-27 14:09:05.975 | User-1 | INFO | User normal terminated",
"2023-02-27 14:09:06.621 | main | INFO | [End of Test]"
]
}
]
}
]
}
},
"isError": false
}
systemStatus:
- 0: Healthy = The monitoring job have been started on all measuring agents.
- -1 (minus one): Partial Malfunction = The monitoring job was not started on some measuring agents.
- -2 (minus two): Malfunction = The monitoring job was not started on any measuring agent.
combinedTestjobState
- “completed”: The testjob was successfully executed on all measuring agents.
- “partial failed”: The execution of the testjob did fail on some measuring agents.
- “failed”: The execution of the testjob did fail on all measuring agents.
Hint for combinedTestjobState : Note that is value does not reflect if any warnings or errors have been measured by the testjobs.
The Reference Implementation on the Real Load Portal Server shows the measured (sumErrorsSeverityError + sumErrorsSeverityFatal) simple as “number of measured errors”.
Other Received Actions
You will also receive other actions than previously described above. These are confirmations that you can ignore. Example:
{
"action":"subscribeToRealtimeMonitor",
"isError":false
}