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.

“alt attribute”

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
}