From 4ba1600656e12d92eab6a029eaa5551e332e2d53 Mon Sep 17 00:00:00 2001 From: Junye Jiang Date: Fri, 10 Jan 2025 13:34:18 +0800 Subject: [PATCH 1/2] In my test experience, when the performance of the system under test is much too fast (for example, when testing Redis), the ms is too large to reflect the performance of the system under test, so the following changes are made: 1. Change the unit of Jmeter Result from ms to ns. 2. Statistical calculations use BigDecimal/BigInteger to make the statistical results more accurate and no overflow. 3. The test report uses ms/ns as the final output unit according to the Properties configuration. --- .../content/js/dashboard.js.fmkr | 2 +- bin/report-template/content/js/graph.js.fmkr | 37 +- bin/reportgenerator.properties | 2 + bin/testfiles/HTMLReportTestFile.csv | 510 +++++++++--------- .../jmeter/visualizers/GraphVisualizer.java | 5 +- .../visualizers/RespTimeGraphVisualizer.java | 7 +- .../jmeter/visualizers/SamplerResultTab.java | 15 +- .../visualizers/StatGraphVisualizer.java | 3 +- .../backend/SamplerMetricFixedModeTest.java | 4 +- .../backend/SamplerMetricTimedModeTest.java | 4 +- .../config/ReportGeneratorConfiguration.java | 4 + .../apache/jmeter/report/core/TimeHelper.java | 2 +- .../dashboard/HtmlTemplateExporter.java | 2 + .../report/dashboard/ReportGenerator.java | 4 +- .../processor/ApdexSummaryConsumer.java | 8 +- .../report/processor/MaxAggregator.java | 4 +- .../report/processor/MeanAggregator.java | 5 +- .../report/processor/MinAggregator.java | 4 +- .../processor/NormalizerSampleConsumer.java | 3 + .../processor/PercentileAggregator.java | 2 +- .../processor/StatisticsSummaryData.java | 12 +- .../report/processor/SumAggregator.java | 10 +- .../graph/AbstractGraphConsumer.java | 3 + .../graph/AbstractOverTimeGraphConsumer.java | 2 +- .../AbstractVersusRequestsGraphConsumer.java | 2 +- .../impl/ActiveThreadsGraphConsumer.java | 14 +- ...ResponseTimeDistributionGraphConsumer.java | 3 +- .../ResponseTimePercentilesGraphConsumer.java | 3 +- ...ResponseTimeDistributionGraphConsumer.java | 21 +- .../reporters/SummariserRunningSample.java | 16 +- .../apache/jmeter/samplers/SampleResult.java | 15 +- .../apache/jmeter/save/CSVSaveService.java | 2 +- .../org/apache/jmeter/util/Calculator.java | 29 +- .../jmeter/visualizers/RunningSample.java | 14 +- .../org/apache/jmeter/visualizers/Sample.java | 2 +- .../visualizers/SamplingStatCalculator.java | 28 +- .../jmeter/visualizers/TableSample.java | 2 +- .../jmeter/resources/messages.properties | 8 +- .../jmeter/samplers/TestSampleResult.java | 8 +- .../org/apache/jmeter/util/CalculatorTest.kt | 34 +- .../jmeter/gui/report/HTMLReportExpect.json | 2 +- .../apache/jorphan/math/StatCalculator.java | 27 +- .../jorphan/math/StatCalculatorLong.java | 18 +- .../jorphan/math/TestStatCalculator.java | 15 +- .../java/sampler/JSR223SamplerTest.java | 2 +- 45 files changed, 487 insertions(+), 432 deletions(-) diff --git a/bin/report-template/content/js/dashboard.js.fmkr b/bin/report-template/content/js/dashboard.js.fmkr index 04a6255fee8..dc6c5cc6f31 100644 --- a/bin/report-template/content/js/dashboard.js.fmkr +++ b/bin/report-template/content/js/dashboard.js.fmkr @@ -41,7 +41,7 @@ function summaryTableHeader(header) { cell = document.createElement('th'); cell.setAttribute("data-sorter", false); cell.colSpan = 7; - cell.innerHTML = "Response Times (ms)"; + cell.innerHTML = "Response Times (${jmeter_reportgenerator_msns})"; newRow.appendChild(cell); cell = document.createElement('th'); diff --git a/bin/report-template/content/js/graph.js.fmkr b/bin/report-template/content/js/graph.js.fmkr index f997e218aa1..7f97ec3ddcb 100644 --- a/bin/report-template/content/js/graph.js.fmkr +++ b/bin/report-template/content/js/graph.js.fmkr @@ -58,7 +58,7 @@ var responseTimePercentilesInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Percentile value in ms", + axisLabel: "Percentile value in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -70,7 +70,7 @@ var responseTimePercentilesInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : %x.2 percentile was %y ms" + content: "%s : %x.2 percentile was %y ${jmeter_reportgenerator_msns}" }, selection: { mode: "xy" }, }; @@ -127,7 +127,7 @@ var responseTimeDistributionInfos = { container: '#legendResponseTimeDistribution' }, xaxis:{ - axisLabel: "Response times in ms", + axisLabel: "Response times in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -151,7 +151,7 @@ var responseTimeDistributionInfos = { tooltip: true, tooltipOpts: { content: function(label, xval, yval, flotItem){ - return yval + " responses for " + label + " were between " + xval + " and " + (xval + granularity) + " ms"; + return yval + " responses for " + label + " were between " + xval + " and " + (xval + granularity) + " ${jmeter_reportgenerator_msns}"; } } }; @@ -355,7 +355,7 @@ var timeVsThreadsInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average response times in ms", + axisLabel: "Average response times in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -370,7 +370,7 @@ var timeVsThreadsInfos = { }, tooltip: true, tooltipOpts: { - content: "%s: At %x.2 active threads, Average response time was %y.2 ms" + content: "%s: At %x.2 active threads, Average response time was %y.2 ${jmeter_reportgenerator_msns}" } }; }, @@ -505,7 +505,7 @@ var responseTimesOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average response time in ms", + axisLabel: "Average response time in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -525,7 +525,7 @@ var responseTimesOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Average response time was %y ms" + content: "%s : at %x Average response time was %y ${jmeter_reportgenerator_msns}" } }; }, @@ -586,7 +586,7 @@ var latenciesOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average response latencies in ms", + axisLabel: "Average response latencies in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -606,7 +606,7 @@ var latenciesOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Average latency was %y ms" + content: "%s : at %x Average latency was %y ${jmeter_reportgenerator_msns}" } }; }, @@ -667,7 +667,7 @@ var connectTimeOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average Connect Time in ms", + axisLabel: "Average Connect Time in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -687,7 +687,7 @@ var connectTimeOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Average connect time was %y ms" + content: "%s : at %x Average connect time was %y ${jmeter_reportgenerator_msns}" } }; }, @@ -749,7 +749,7 @@ var responseTimePercentilesOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Response Time in ms", + axisLabel: "Response Time in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -769,7 +769,7 @@ var responseTimePercentilesOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Response time was %y ms" + content: "%s : at %x Response time was %y ${jmeter_reportgenerator_msns}" } }; }, @@ -825,7 +825,7 @@ var responseTimeVsRequestInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Median Response Time in ms", + axisLabel: "Median Response Time in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -844,7 +844,7 @@ var responseTimeVsRequestInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : Median response time at %x req/s was %y ms" + content: "%s : Median response time at %x req/s was %y ${jmeter_reportgenerator_msns}" }, colors: ["#9ACD32", "#FF6347"] }; @@ -899,7 +899,7 @@ var latenciesVsRequestInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Median Latency in ms", + axisLabel: "Median Latency in ${jmeter_reportgenerator_msns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -914,7 +914,7 @@ var latenciesVsRequestInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : Median Latency time at %x req/s was %y ms" + content: "%s : Median Latency time at %x req/s was %y ${jmeter_reportgenerator_msns}" }, colors: ["#9ACD32", "#FF6347"] }; @@ -1413,4 +1413,3 @@ function toggleAll(id, checked){ }); } } - diff --git a/bin/reportgenerator.properties b/bin/reportgenerator.properties index 68bfbf67a12..aa6a9f3ff61 100644 --- a/bin/reportgenerator.properties +++ b/bin/reportgenerator.properties @@ -34,6 +34,8 @@ # Reporting configuration #--------------------------------------------------------------------------- +jmeter.reportgenerator.msns=ms + # Sets the satisfaction threshold for the APDEX calculation (in milliseconds). #jmeter.reportgenerator.apdex_satisfied_threshold=500 diff --git a/bin/testfiles/HTMLReportTestFile.csv b/bin/testfiles/HTMLReportTestFile.csv index 5cc98daf617..7c096ddc5c4 100644 --- a/bin/testfiles/HTMLReportTestFile.csv +++ b/bin/testfiles/HTMLReportTestFile.csv @@ -1,256 +1,256 @@ timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect -1551783627191,351,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783627543,192,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783627735,131,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783627866,261,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628128,266,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628395,279,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628674,304,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628979,353,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629333,196,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629530,139,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629670,278,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629949,303,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630253,351,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630605,194,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630799,134,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630934,268,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631202,282,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631485,308,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631794,108,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631903,217,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632120,180,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632301,107,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632408,213,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632622,171,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632794,342,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633137,176,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633313,353,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633666,196,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633863,137,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634001,275,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634276,296,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634573,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634910,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635075,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635404,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635552,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635850,338,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636189,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636357,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636695,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636859,329,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 -1551783637189,147,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783637337,296,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783637634,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783637974,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638142,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638480,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638644,329,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638974,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639122,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639420,338,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639759,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639927,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640264,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640429,329,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640758,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640907,295,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783641203,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783641540,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783641705,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642034,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642182,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642480,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642819,169,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642989,338,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643327,166,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643493,333,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643827,156,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643983,313,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644297,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644413,233,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644647,211,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644858,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645027,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645363,163,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645527,325,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645853,142,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645995,285,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646280,315,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646596,120,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646717,241,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646958,227,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647186,200,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647386,146,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647533,292,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647826,331,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648157,152,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648310,304,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648615,353,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648968,199,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649167,142,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649310,284,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649594,314,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649909,118,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650027,238,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650265,220,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650486,185,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650671,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650788,232,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651021,210,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651231,166,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651398,332,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651730,155,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651886,309,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652196,110,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652307,221,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652528,187,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652715,121,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652836,241,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653078,227,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653306,200,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653506,146,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653653,292,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653945,330,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783654275,150,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783654425,300,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783654726,344,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655071,180,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655251,106,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655358,212,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655571,170,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 -1551783655741,340,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656081,171,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656253,342,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656595,174,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656770,348,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657118,189,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657307,123,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657430,245,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657675,235,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657911,215,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658126,176,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658303,352,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658656,195,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658852,136,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658989,272,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783659262,291,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783659553,327,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783659880,145,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660025,290,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660316,324,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660641,140,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660782,281,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661063,307,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661370,105,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661476,210,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661687,166,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661853,333,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662186,157,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662343,313,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662657,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662774,232,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663007,211,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663219,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663387,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663725,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663889,329,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783664218,149,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783664367,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783664664,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665004,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665172,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665510,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665675,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666004,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666152,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666450,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666789,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666958,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667295,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667460,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667789,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667937,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783668234,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783668574,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783668742,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669079,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669244,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669573,147,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669720,295,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670015,335,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670351,162,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670513,324,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670837,137,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670975,274,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783671249,294,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783671544,333,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783671877,157,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672035,314,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672349,118,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672468,237,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672705,220,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672926,185,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673111,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673228,232,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673460,210,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673671,165,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673836,331,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674167,153,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674320,305,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674626,100,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 -1551783674727,201,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674928,149,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675077,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675374,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675714,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675882,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676219,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676384,327,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676712,146,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676859,292,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677152,331,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677484,153,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677638,306,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677945,104,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678050,208,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678259,163,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678422,327,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678750,144,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678894,289,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679183,323,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679507,135,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679643,272,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679915,290,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680205,325,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680530,141,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680671,281,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680952,307,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681260,104,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681365,208,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681574,163,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681738,326,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682065,144,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682209,289,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682499,323,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682822,137,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682960,274,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783683234,293,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783683527,332,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783683859,155,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684014,309,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684323,108,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684432,216,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684648,178,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684827,101,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684928,203,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685132,151,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685283,303,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685587,350,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685938,192,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686130,131,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686261,261,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686523,267,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686790,280,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783687071,305,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627191000000,351000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627543000000,192000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627735000000,131000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627866000000,261000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628128000000,266000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628395000000,279000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628674000000,304000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628979000000,353000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629333000000,196000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629530000000,139000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629670000000,278000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629949000000,303000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630253000000,351000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630605000000,194000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630799000000,134000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630934000000,268000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631202000000,282000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631485000000,308000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631794000000,108000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631903000000,217000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632120000000,180000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632301000000,107000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632408000000,213000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632622000000,171000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632794000000,342000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633137000000,176000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633313000000,353000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633666000000,196000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633863000000,137000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634001000000,275000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634276000000,296000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634573000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634910000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635075000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635404000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635552000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635850000000,338000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636189000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636357000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636695000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636859000000,329000000,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 +1551783637189000000,147000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783637337000000,296000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783637634000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783637974000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638142000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638480000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638644000000,329000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638974000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639122000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639420000000,338000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639759000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639927000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640264000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640429000000,329000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640758000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640907000000,295000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783641203000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783641540000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783641705000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642034000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642182000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642480000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642819000000,169000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642989000000,338000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643327000000,166000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643493000000,333000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643827000000,156000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643983000000,313000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644297000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644413000000,233000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644647000000,211000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644858000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645027000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645363000000,163000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645527000000,325000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645853000000,142000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645995000000,285000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646280000000,315000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646596000000,120000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646717000000,241000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646958000000,227000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647186000000,200000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647386000000,146000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647533000000,292000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647826000000,331000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648157000000,152000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648310000000,304000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648615000000,353000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648968000000,199000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649167000000,142000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649310000000,284000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649594000000,314000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649909000000,118000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650027000000,238000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650265000000,220000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650486000000,185000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650671000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650788000000,232000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651021000000,210000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651231000000,166000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651398000000,332000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651730000000,155000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651886000000,309000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652196000000,110000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652307000000,221000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652528000000,187000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652715000000,121000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652836000000,241000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653078000000,227000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653306000000,200000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653506000000,146000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653653000000,292000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653945000000,330000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783654275000000,150000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783654425000000,300000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783654726000000,344000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655071000000,180000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655251000000,106000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655358000000,212000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655571000000,170000000,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 +1551783655741000000,340000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656081000000,171000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656253000000,342000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656595000000,174000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656770000000,348000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657118000000,189000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657307000000,123000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657430000000,245000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657675000000,235000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657911000000,215000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658126000000,176000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658303000000,352000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658656000000,195000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658852000000,136000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658989000000,272000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783659262000000,291000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783659553000000,327000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783659880000000,145000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660025000000,290000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660316000000,324000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660641000000,140000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660782000000,281000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661063000000,307000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661370000000,105000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661476000000,210000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661687000000,166000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661853000000,333000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662186000000,157000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662343000000,313000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662657000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662774000000,232000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663007000000,211000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663219000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663387000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663725000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663889000000,329000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783664218000000,149000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783664367000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783664664000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665004000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665172000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665510000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665675000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666004000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666152000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666450000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666789000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666958000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667295000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667460000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667789000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667937000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783668234000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783668574000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783668742000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669079000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669244000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669573000000,147000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669720000000,295000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670015000000,335000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670351000000,162000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670513000000,324000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670837000000,137000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670975000000,274000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783671249000000,294000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783671544000000,333000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783671877000000,157000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672035000000,314000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672349000000,118000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672468000000,237000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672705000000,220000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672926000000,185000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673111000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673228000000,232000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673460000000,210000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673671000000,165000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673836000000,331000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674167000000,153000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674320000000,305000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674626000000,100000000,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 +1551783674727000000,201000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674928000000,149000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675077000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675374000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675714000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675882000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676219000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676384000000,327000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676712000000,146000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676859000000,292000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677152000000,331000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677484000000,153000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677638000000,306000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677945000000,104000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678050000000,208000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678259000000,163000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678422000000,327000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678750000000,144000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678894000000,289000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679183000000,323000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679507000000,135000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679643000000,272000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679915000000,290000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680205000000,325000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680530000000,141000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680671000000,281000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680952000000,307000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681260000000,104000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681365000000,208000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681574000000,163000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681738000000,326000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682065000000,144000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682209000000,289000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682499000000,323000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682822000000,137000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682960000000,274000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783683234000000,293000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783683527000000,332000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783683859000000,155000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684014000000,309000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684323000000,108000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684432000000,216000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684648000000,178000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684827000000,101000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684928000000,203000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685132000000,151000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685283000000,303000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685587000000,350000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685938000000,192000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686130000000,131000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686261000000,261000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686523000000,267000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686790000000,280000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783687071000000,305000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java index 90a3af2ced7..a1b177e1451 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java @@ -44,6 +44,7 @@ import org.apache.jmeter.gui.TestElementMetadata; import org.apache.jmeter.gui.util.JMeterColor; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; @@ -255,8 +256,8 @@ private JPanel createYAxis() { maxYField = createYAxisField(5); minYField = createYAxisField(3); - graphYAxisPanel.add(createYAxisPanel("graph_results_ms", maxYField), BorderLayout.NORTH); // $NON-NLS-1$ - graphYAxisPanel.add(createYAxisPanel("graph_results_ms", minYField), BorderLayout.SOUTH); // $NON-NLS-1$ + graphYAxisPanel.add(createYAxisPanel(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "graph_results_ms" : "graph_results_ns", maxYField), BorderLayout.NORTH); // $NON-NLS-1$ + graphYAxisPanel.add(createYAxisPanel(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "graph_results_ms" : "graph_results_ns", minYField), BorderLayout.SOUTH); // $NON-NLS-1$ return graphYAxisPanel; } diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java index 99e4da7dccd..85c9c6e3c3f 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java @@ -57,6 +57,7 @@ import org.apache.jmeter.gui.action.SaveGraphics; import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.VerticalPanel; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.testelement.TestElement; @@ -164,7 +165,7 @@ public class RespTimeGraphVisualizer extends AbstractVisualizer implements Actio private static final String Y_AXIS_LABEL = JMeterUtils.getResString("aggregate_graph_response_time");//$NON-NLS-1$ - private static final String Y_AXIS_TITLE = JMeterUtils.getResString("aggregate_graph_ms"); //$NON-NLS-1$ + private static final String Y_AXIS_TITLE = JMeterUtils.getResString(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "aggregate_graph_ms" : "aggregate_graph_ns"); //$NON-NLS-1$ /** * Lock used to protect list update @@ -410,7 +411,7 @@ public double[][] getData() { long keyShift = minStartTime + idx; StatCalculatorLong value = subList.get(keyShift); if (value != null) { - nanLast = value.getMean(); + nanLast = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? value.getMean() / 100000.0D : value.getMean(); data[s][idx] = nanLast; // Calculate intermediate values (if needed) int nlsize = nanList.size(); @@ -556,7 +557,7 @@ public void actionPerformed(ActionEvent event) { tempList.addAll(internalList); this.clearData(); for (RespTimeGraphDataBean data : tempList) { - SampleResult sr = new SampleResult(data.getStartTime(), data.getTime()); + SampleResult sr = new SampleResult(data.getStartTime() / 1000000L, data.getTime() / 1000000L); sr.setSampleLabel(data.getSamplerLabel()); this.add(sr); } diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java b/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java index 90819ac6c45..f1fa1c1faf6 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java @@ -67,6 +67,7 @@ import org.apache.jmeter.gui.util.JSyntaxTextArea; import org.apache.jmeter.gui.util.JTextScrollPane; import org.apache.jmeter.gui.util.TextBoxDialoger.TextBoxDoubleClick; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; import org.apache.jmeter.visualizers.SearchTextExtension.JEditorPaneSearchProvider; @@ -266,7 +267,7 @@ public void setupTabPane() { .getResString("view_results_thread_name")).append(SPACE) //$NON-NLS-1$ .append(sampleResult.getThreadName()).append(NL); String startTime = dateFormat - .format(Instant.ofEpochMilli(sampleResult.getStartTime())); + .format(Instant.ofEpochMilli(sampleResult.getStartTime() / 1000000L)); statsBuff .append(JMeterUtils .getResString("view_results_sample_start")).append(SPACE) //$NON-NLS-1$ @@ -274,15 +275,15 @@ public void setupTabPane() { statsBuff .append(JMeterUtils .getResString("view_results_load_time")).append(SPACE) //$NON-NLS-1$ - .append(sampleResult.getTime()).append(NL); + .append(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getTime() / 1000000L : sampleResult.getTime()).append(NL); statsBuff .append(JMeterUtils .getResString("view_results_connect_time")).append(SPACE) //$NON-NLS-1$ - .append(sampleResult.getConnectTime()).append(NL); + .append(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getConnectTime() / 1000000L : sampleResult.getConnectTime()).append(NL); statsBuff .append(JMeterUtils .getResString("view_results_latency")).append(SPACE) //$NON-NLS-1$ - .append(sampleResult.getLatency()).append(NL); + .append(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getLatency() / 1000000L : sampleResult.getLatency()).append(NL); statsBuff .append(JMeterUtils .getResString("view_results_size_in_bytes")).append(SPACE) //$NON-NLS-1$ @@ -376,13 +377,13 @@ public void setupTabPane() { startTime)); resultModel.addRow(new RowResult( JMeterUtils.getParsedLabel("view_results_load_time"), //$NON-NLS-1$ - sampleResult.getTime())); + ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getTime() / 1000000L : sampleResult.getTime())); resultModel.addRow(new RowResult( JMeterUtils.getParsedLabel("view_results_connect_time"), //$NON-NLS-1$ - sampleResult.getConnectTime())); + ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getConnectTime() / 1000000L : sampleResult.getConnectTime())); resultModel.addRow(new RowResult( JMeterUtils.getParsedLabel("view_results_latency"), //$NON-NLS-1$ - sampleResult.getLatency())); + ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getLatency() / 1000000L : sampleResult.getLatency())); resultModel.addRow(new RowResult( JMeterUtils .getParsedLabel("view_results_size_in_bytes"), //$NON-NLS-1$ diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java index 1d909eba6b9..0928e128b61 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java @@ -73,6 +73,7 @@ import org.apache.jmeter.gui.util.FilePanel; import org.apache.jmeter.gui.util.HeaderAsPropertyRendererWrapper; import org.apache.jmeter.gui.util.VerticalPanel; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.Clearable; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.save.CSVSaveService; @@ -202,7 +203,7 @@ public class StatGraphVisualizer extends AbstractVisualizer implements Clearable private final String yAxisLabel = JMeterUtils.getResString("aggregate_graph_response_time");//$NON-NLS-1$ - private final String yAxisTitle = JMeterUtils.getResString("aggregate_graph_ms"); //$NON-NLS-1$ + private final String yAxisTitle = JMeterUtils.getResString(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "aggregate_graph_ms" : "aggregate_graph_ns"); //$NON-NLS-1$ private boolean saveGraphToFile = false; diff --git a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java index 8fdac49e5e0..6d762155bcc 100644 --- a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java +++ b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java @@ -28,8 +28,8 @@ public class SamplerMetricFixedModeTest { - private static final int DEFAULT_ELAPSED_TIME = 1_000; - private static final double ALLOWED_DELTA = 25.0; + private static final int DEFAULT_ELAPSED_TIME = 1_000 * 1000000; + private static final double ALLOWED_DELTA = 25.0 * 1000000.0D; @BeforeEach @SuppressWarnings("deprecation") diff --git a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java index 42c3835f7a5..243a931f8ab 100644 --- a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java +++ b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java @@ -28,8 +28,8 @@ public class SamplerMetricTimedModeTest { - private static final int DEFAULT_ELAPSED_TIME = 1_000; - private static final double ALLOWED_DELTA = 25.0; + private static final int DEFAULT_ELAPSED_TIME = 1_000 * 1000000; + private static final double ALLOWED_DELTA = 25.0 * 1000000.0D; @BeforeEach @SuppressWarnings("deprecation") diff --git a/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java b/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java index 1291c6627d5..06706f475da 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java +++ b/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java @@ -28,6 +28,7 @@ import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; +import org.apache.jmeter.util.JMeterUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,6 +126,9 @@ public class ReportGeneratorConfiguration { public static final String SUBCONF_KEY_CLASSNAME = "classname"; public static final String SUBCONF_KEY_PROPERTY = "property"; + public static final String jmeter_reportgenerator_msns = "ms".equalsIgnoreCase(JMeterUtils.getProperty(REPORT_GENERATOR_KEY_PREFIX + KEY_DELIMITER + "msns")) ? "ms" : "ns".equalsIgnoreCase(JMeterUtils.getProperty(REPORT_GENERATOR_KEY_PREFIX + KEY_DELIMITER + "msns")) ? "ns" : "ms"; + public static final boolean jmeter_reportgenerator_msns_isMs = "ms".equals(jmeter_reportgenerator_msns); + private static final class ExporterConfigurationFactory implements SubConfigurationFactory { private final Props props; diff --git a/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java b/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java index 0c1953f8706..00d91f42626 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java +++ b/src/core/src/main/java/org/apache/jmeter/report/core/TimeHelper.java @@ -78,7 +78,7 @@ public static String formatTimeStamp(long timeStamp) { */ @SuppressWarnings("JavaUtilDate") public static String formatTimeStamp(long timeStamp, String format) { - SimpleDateFormat dateFormat = format != null ? new SimpleDateFormat( + SimpleDateFormat dateFormat = format != null && !"ms".equals(format) ? new SimpleDateFormat( format) : new SimpleDateFormat(); return dateFormat.format(new Date(timeStamp)); } diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java index cdb25dc3a46..50dbdf31c56 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java +++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java @@ -438,6 +438,8 @@ public void export(SampleContext context, File file, // Add the overall filter property to the context addToContext(DATA_CTX_OVERALL_FILTER, configuration.getSampleFilter(), dataContext); + dataContext.put("jmeter_reportgenerator_msns", ReportGeneratorConfiguration.jmeter_reportgenerator_msns); + // Walk template directory to copy files and process templated ones Configuration templateCfg = new Configuration(Configuration.VERSION_2_3_30); try { diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java index 8c3f9f42e76..f914558294f 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java @@ -500,7 +500,7 @@ private FilterConsumer createNameFilter() { */ private static AggregateConsumer createEndDateConsumer() { AggregateConsumer endDateConsumer = new AggregateConsumer( - new MaxAggregator(), sample -> (double) sample.getEndTime()); + new MaxAggregator(), sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (double) sample.getEndTime() : sample.getEndTime() / 1000000.0D); endDateConsumer.setName(END_DATE_CONSUMER_NAME); return endDateConsumer; } @@ -510,7 +510,7 @@ private static AggregateConsumer createEndDateConsumer() { */ private static AggregateConsumer createBeginDateConsumer() { AggregateConsumer beginDateConsumer = new AggregateConsumer( - new MinAggregator(), sample -> (double) sample.getStartTime()); + new MinAggregator(), sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (double) sample.getStartTime() : sample.getStartTime() / 1000000.0D); beginDateConsumer.setName(BEGIN_DATE_CONSUMER_NAME); return beginDateConsumer; } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/ApdexSummaryConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/ApdexSummaryConsumer.java index 6fc9144ae06..a5a591adcbf 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/ApdexSummaryConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/ApdexSummaryConsumer.java @@ -122,19 +122,19 @@ protected void updateData(SummaryInfo info, Sample sample) { // Increment the counters depending on the elapsed time. ApdexThresholdsInfo thresholdsInfo = data.getApdexThresholdInfo(); - if (elapsedTime <= thresholdsInfo.getSatisfiedThreshold()) { + if (elapsedTime <= thresholdsInfo.getSatisfiedThreshold() * 1000000L) { data.incSatisfiedCount(); - } else if (elapsedTime <= thresholdsInfo.getToleratedThreshold()) { + } else if (elapsedTime <= thresholdsInfo.getToleratedThreshold() * 1000000L) { data.incToleratedCount(); } // Increment the overall counters depending on the elapsed time. ApdexThresholdsInfo overallThresholdsInfo = overallData .getApdexThresholdInfo(); - if (elapsedTime <= overallThresholdsInfo.getSatisfiedThreshold()) { + if (elapsedTime <= overallThresholdsInfo.getSatisfiedThreshold() * 1000000L) { overallData.incSatisfiedCount(); } else if (elapsedTime <= overallThresholdsInfo - .getToleratedThreshold()) { + .getToleratedThreshold() * 1000000L) { overallData.incToleratedCount(); } } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java index 7ceb2e712cd..5fcd5076672 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java @@ -17,6 +17,8 @@ package org.apache.jmeter.report.processor; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; + /** * The class MaxAggregator is used to get maximum from samples. * @@ -44,7 +46,7 @@ public long getCount() { */ @Override public double getResult() { - return value; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? value / 1000000.0D : value; } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java index 3258f946316..044875aa247 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java @@ -18,6 +18,7 @@ package org.apache.jmeter.report.processor; import org.apache.commons.math3.stat.descriptive.moment.Mean; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; /** * The class MeanAggregator is used to get mean from samples. @@ -26,7 +27,7 @@ */ public class MeanAggregator implements Aggregator { - private final Mean mean = new Mean(); + protected final Mean mean = new Mean(); /* * (non-Javadoc) @@ -45,7 +46,7 @@ public long getCount() { */ @Override public double getResult() { - return mean.getResult(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? mean.getResult() / 1000000.0D : mean.getResult(); } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java index d020c4099e0..1e198d4e3df 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java @@ -17,6 +17,8 @@ package org.apache.jmeter.report.processor; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; + /** * The class MinAggregator is used to get minimum from samples. * @@ -44,7 +46,7 @@ public long getCount() { */ @Override public double getResult() { - return value; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? value / 1000000.0D : value; } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java index 55df979911e..c4d65bdbaf2 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/NormalizerSampleConsumer.java @@ -107,6 +107,9 @@ public void consume(Sample s, int channel) { TIMESTAMP_FORMAT, s.toString()), e); } long time = date.getTime(); + if (!isMillisFormat) { + time *= 1000000L; + } int cc = sampleMetadata.getColumnCount(); String[] data = new String[cc]; for (int i = 0; i < cc; i++) { diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java index ca81b2ebf72..6a72d0708e8 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java @@ -71,7 +71,7 @@ public long getCount() { */ @Override public double getResult() { - return statistics.getPercentile(percentileIndex); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? statistics.getPercentile(percentileIndex) / 1000000.0D : statistics.getPercentile(percentileIndex); } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java b/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java index a217c377d18..1ee61715f28 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java @@ -17,6 +17,8 @@ package org.apache.jmeter.report.processor; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; + /** * The class ApdexSummaryData provides information for * StatisticsSummaryConsumer. @@ -41,7 +43,7 @@ public class StatisticsSummaryData { private long max = Long.MIN_VALUE; public long getElapsedTime() { - return endTime - firstTime; + return (endTime - firstTime) / 1000000L; } /** @@ -50,7 +52,7 @@ public long getElapsedTime() { * @return the firstTime */ public final long getFirstTime() { - return firstTime; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? firstTime / 1000000L : firstTime; } /** @@ -69,7 +71,7 @@ public final void setFirstTime(long firstTime) { * @return the endTime */ public final long getEndTime() { - return endTime; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? endTime / 1000000L : endTime; } /** @@ -135,7 +137,7 @@ public final void setTotal(long total) { * @return the min */ public final long getMin() { - return min; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? min / 1000000L : min; } /** @@ -150,7 +152,7 @@ public final void setMin(long min) { * @return the max */ public final long getMax() { - return max; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? max / 1000000L : max; } /** diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/SumAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/SumAggregator.java index 3f5cf10f7bf..327fd0803d7 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/SumAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/SumAggregator.java @@ -17,6 +17,8 @@ package org.apache.jmeter.report.processor; +import java.math.BigDecimal; + /** * The class SumAggregator is used to get sum from samples. * @@ -25,7 +27,7 @@ public class SumAggregator implements Aggregator { private long count = 0; - private double sum = 0; + private BigDecimal sum = BigDecimal.ZERO; /* * (non-Javadoc) @@ -44,7 +46,7 @@ public long getCount() { */ @Override public double getResult() { - return sum; + return sum.doubleValue(); } /* @@ -55,7 +57,7 @@ public double getResult() { @Override public void addValue(double value) { count++; - sum += value; + sum = sum.add(BigDecimal.valueOf(value)); } /* @@ -66,7 +68,7 @@ public void addValue(double value) { @Override public void reset() { count = 0; - sum = 0; + sum = BigDecimal.ZERO; } } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java index 673722df7ec..de87117b34a 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractGraphConsumer.java @@ -288,6 +288,9 @@ private void addKeyData(MapResultData result, @SuppressWarnings("unused") String for (Map.Entry entry : aggInfo.entrySet()) { // Init key and value depending on invertKeysAndValues property Double key = entry.getKey(); + if (this instanceof AbstractOverTimeGraphConsumer) { + key /= 1000000.0D; + } Double value = entry.getValue().getResult(); if (invertKeysAndValues) { diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractOverTimeGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractOverTimeGraphConsumer.java index a04d9358733..5707ffb10c3 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractOverTimeGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractOverTimeGraphConsumer.java @@ -104,6 +104,6 @@ protected void initializeExtraResults(MapResultData parentResult) { @Override public void initialize() { super.initialize(); - ((TimeStampKeysSelector) getKeysSelector()).setGranularity(granularity); + ((TimeStampKeysSelector) getKeysSelector()).setGranularity(granularity * 1000000L); } } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java index 59202d113d9..520694bb725 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/AbstractVersusRequestsGraphConsumer.java @@ -219,7 +219,7 @@ public TimeCountConsumer(AbstractVersusRequestsGraphConsumer parent) { private Long getTimeInterval(Sample sample) { long time = sample.getEndTime(); - return time - (time % parent.getGranularity()); + return time - (time % (parent.getGranularity() * 1000000L)); } // Adds a new field in the sample metadata for each channel diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java index a62f86e3c6a..16ec09aa45e 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ActiveThreadsGraphConsumer.java @@ -21,6 +21,8 @@ import java.util.Map; import org.apache.jmeter.report.core.Sample; +import org.apache.jmeter.report.processor.Aggregator; +import org.apache.jmeter.report.processor.MeanAggregator; import org.apache.jmeter.report.processor.MeanAggregatorFactory; import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer; import org.apache.jmeter.report.processor.graph.AbstractOverTimeGraphConsumer; @@ -85,7 +87,17 @@ public Iterable select(Sample sample) { return Collections.singletonMap( AbstractGraphConsumer.DEFAULT_GROUP, - new GroupInfo(new MeanAggregatorFactory(), seriesSelector, graphValueSelector, false, false)); + new GroupInfo(new MeanAggregatorFactory() { + @Override + protected Aggregator createAggregator() { + return new MeanAggregator() { + @Override + public double getResult() { + return mean.getResult(); + } + }; + } + }, seriesSelector, graphValueSelector, false, false)); } } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java index 0d83696948d..f6cb8570de0 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.Map; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.report.processor.MapResultData; import org.apache.jmeter.report.processor.SumAggregatorFactory; import org.apache.jmeter.report.processor.ValueResultData; @@ -67,7 +68,7 @@ public final void setGranularity(long granularity) { protected final GraphKeysSelector createKeysSelector() { return sample -> { long elapsed = sample.getElapsedTime(); - return (double) elapsed - elapsed % granularity; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (elapsed - elapsed % (granularity * 1000000L)) / 1000000.0D : (double) elapsed - elapsed % (granularity * 1000000L); }; } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java index a25b5141a4f..6d5d875cd33 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java @@ -20,6 +20,7 @@ import java.util.Collections; import java.util.Map; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.report.processor.MapResultData; import org.apache.jmeter.report.processor.SumAggregatorFactory; import org.apache.jmeter.report.processor.graph.AbstractGraphConsumer; @@ -56,7 +57,7 @@ public void initialize() { */ @Override protected final GraphKeysSelector createKeysSelector() { - return sample -> (double) sample.getElapsedTime(); + return sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sample.getElapsedTime() / 1000000.0D : (double) sample.getElapsedTime(); } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java index 8058f950932..d0a3b266703 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.report.core.Sample; import org.apache.jmeter.report.processor.ListResultData; import org.apache.jmeter.report.processor.MapResultData; @@ -69,9 +70,9 @@ public Iterable select(Sample sample) { return Collections.singletonList(FAILED_LABEL); } else { long elapsedTime = sample.getElapsedTime(); - if (elapsedTime <= getSatisfiedThreshold()) { + if (elapsedTime <= satisfiedThreshold * 1000000L) { return satisfiedLabels; - } else if (elapsedTime <= getToleratedThreshold()) { + } else if (elapsedTime <= toleratedThreshold * 1000000L) { return toleratedLabels; } else { return untoleratedLabels; @@ -91,9 +92,9 @@ protected final GraphKeysSelector createKeysSelector() { return sample -> { if (sample.getSuccess()) { long elapsedTime = sample.getElapsedTime(); - if (elapsedTime <= satisfiedThreshold) { + if (elapsedTime <= satisfiedThreshold * 1000000L) { return (double) 0; - } else if (elapsedTime <= toleratedThreshold) { + } else if (elapsedTime <= toleratedThreshold * 1000000L) { return 1d; } else { return 2d; @@ -124,9 +125,9 @@ protected Map createGroupInfos() { protected void initializeExtraResults(MapResultData parentResult) { ListResultData listResultData = new ListResultData(); String[] seriesLabels = new String[]{ - SATISFIED_LABEL.format(new Object[]{getSatisfiedThreshold()}), - TOLERATED_LABEL.format(new Object[]{getSatisfiedThreshold(), getToleratedThreshold()}), - UNTOLERATED_LABEL.format(new Object[]{getToleratedThreshold()}), + SATISFIED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns }), + TOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns }), + UNTOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns }), FAILED_LABEL }; String[] colors = new String[]{ @@ -191,10 +192,10 @@ public void setToleratedThreshold(long toleratedThreshold) { private void formatLabels() { this.satisfiedLabels = Collections.singletonList( - SATISFIED_LABEL.format(new Object[]{this.satisfiedThreshold})); + SATISFIED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns })); this.toleratedLabels = Collections.singletonList( - TOLERATED_LABEL.format(new Object[]{this.satisfiedThreshold, this.toleratedThreshold})); + TOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns })); this.untoleratedLabels = Collections.singletonList( - UNTOLERATED_LABEL.format(new Object[]{this.toleratedThreshold})); + UNTOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns })); } } diff --git a/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java b/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java index 3e22d749022..fc49813c98e 100644 --- a/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java +++ b/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java @@ -17,8 +17,10 @@ package org.apache.jmeter.reporters; +import java.math.BigInteger; import java.text.DecimalFormat; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.SampleResult; /** @@ -40,7 +42,7 @@ class SummariserRunningSample { private long counter; - private long runningSum; + private BigInteger runningSum; private long max; @@ -79,7 +81,7 @@ public SummariserRunningSample(SummariserRunningSample src) { private void init() { // WARNING: called from ctor so must not be overridden (i.e. must be private or final) counter = 0L; - runningSum = 0L; + runningSum = BigInteger.ZERO; max = Long.MIN_VALUE; min = Long.MAX_VALUE; errorCount = 0L; @@ -101,7 +103,7 @@ public void clear() { public void addSample(SummariserRunningSample rs) { counter += rs.counter; errorCount += rs.errorCount; - runningSum += rs.runningSum; + runningSum = runningSum.add(rs.runningSum); if (max < rs.max) { max = rs.max; } @@ -120,7 +122,7 @@ public void addSample(SampleResult res) { counter += res.getSampleCount(); errorCount += res.getErrorCount(); long aTimeInMillis = res.getTime(); - runningSum += aTimeInMillis; + runningSum = runningSum.add(BigInteger.valueOf(aTimeInMillis)); if (aTimeInMillis > max) { max = aTimeInMillis; } @@ -182,7 +184,7 @@ public long getAverage() { if (counter == 0) { return 0; } - return runningSum / counter; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? runningSum.divide(BigInteger.valueOf(counter)).divide(BigInteger.valueOf(1000000L)).longValue() : runningSum.divide(BigInteger.valueOf(counter)).longValue(); } /** @@ -225,7 +227,7 @@ public double getErrorPercentage() { * @return the time in milliseconds of the slowest sample. */ public long getMax() { - return max; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? max / 1000000L : max; } /** @@ -234,7 +236,7 @@ public long getMax() { * @return the time in milliseconds of the quickest sample. */ public long getMin() { - return min; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? min / 1000000L : min; } /** diff --git a/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java b/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java index 66589162432..42352a6bd09 100644 --- a/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java +++ b/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java @@ -135,6 +135,9 @@ public class SampleResult implements Serializable, Cloneable, Searchable { private static final String NULL_FILENAME = "NULL"; + private static final long ms = System.currentTimeMillis() * 1000000L; + private static final long ns = System.nanoTime(); + static { if (START_TIMESTAMP) { log.info("Note: Sample TimeStamps are START times"); @@ -147,7 +150,7 @@ public class SampleResult implements Serializable, Cloneable, Searchable { if (USE_NANO_TIME && NANOTHREAD_SLEEP > 0) { // Make sure we start with a reasonable value - NanoOffset.nanoOffset = System.currentTimeMillis() - SampleResult.sampleNsClockInMs(); + NanoOffset.nanoOffset = ms + System.nanoTime() - ns - sampleNsClockInMs(); NanoOffset nanoOffset = new NanoOffset(); nanoOffset.setDaemon(true); nanoOffset.setName("NanoOffset"); @@ -384,7 +387,7 @@ public SampleResult(long stamp, long elapsed) { private long initOffset(){ if (useNanoTime){ - return nanoThreadSleep > 0 ? NanoOffset.getNanoOffset() : System.currentTimeMillis() - sampleNsClockInMs(); + return nanoThreadSleep > 0 ? NanoOffset.getNanoOffset() : ms + System.nanoTime() - ns - sampleNsClockInMs(); } else { return Long.MIN_VALUE; } @@ -434,12 +437,12 @@ public static SampleResult createTestSample(long start, long end) { * @return sample that starts 'now' and ends elapsed milliseconds later */ public static SampleResult createTestSample(long elapsed) { - long now = System.currentTimeMillis(); + long now = ms + System.nanoTime() - ns; return createTestSample(now, now + elapsed); } private static long sampleNsClockInMs() { - return System.nanoTime() / 1000000; + return ms + System.nanoTime() - ns; } /** @@ -457,7 +460,7 @@ public long currentTimeInMillis() { } return sampleNsClockInMs() + nanoTimeOffset; } - return System.currentTimeMillis(); + return ms + System.nanoTime() - ns; } // Helper method to maintain timestamp relationships @@ -1561,7 +1564,7 @@ public void run() { private static void getOffset(long wait) { try { TimeUnit.MILLISECONDS.sleep(wait); - long clock = System.currentTimeMillis(); + long clock = ms + System.nanoTime() - ns; long nano = SampleResult.sampleNsClockInMs(); nanoOffset = clock - nano; } catch (InterruptedException ignore) { diff --git a/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java b/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java index b9da12d7ea6..0a34f495998 100644 --- a/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java +++ b/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java @@ -854,7 +854,7 @@ public static String resultToDelimitedString(SampleEvent event, text.append(sample.getTimeStamp()); } else if (saveConfig.threadSafeLenientFormatter() != null) { String stamp = saveConfig.threadSafeLenientFormatter().format( - new Date(sample.getTimeStamp())); + new Date(sample.getTimeStamp() / 1000000L)); text.append(stamp); } } diff --git a/src/core/src/main/java/org/apache/jmeter/util/Calculator.java b/src/core/src/main/java/org/apache/jmeter/util/Calculator.java index 0107186160c..9643be98f9b 100644 --- a/src/core/src/main/java/org/apache/jmeter/util/Calculator.java +++ b/src/core/src/main/java/org/apache/jmeter/util/Calculator.java @@ -17,11 +17,14 @@ package org.apache.jmeter.util; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.DoubleAdder; import java.util.concurrent.atomic.LongAccumulator; import java.util.concurrent.atomic.LongAdder; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.SampleResult; /** @@ -35,9 +38,9 @@ */ public class Calculator { - private final DoubleAdder sum = new DoubleAdder(); + private BigDecimal sum = BigDecimal.ZERO; - private final DoubleAdder sumOfSquares = new DoubleAdder(); + private BigDecimal sumOfSquares = BigDecimal.ZERO; private final LongAdder count = new LongAdder(); @@ -69,8 +72,8 @@ public Calculator(String label) { public void clear() { maximum.set(Long.MIN_VALUE); minimum.set(Long.MAX_VALUE); - sum.reset(); - sumOfSquares.reset(); + sum = BigDecimal.ZERO; + sumOfSquares = BigDecimal.ZERO; count.reset(); bytes.reset(); sentBytes.reset(); @@ -88,7 +91,7 @@ public void clear() { */ private void addValue(long newValue, int sampleCount) { count.add(sampleCount); - sum.add((double) newValue); + sum = sum.add(BigDecimal.valueOf(newValue)); long value; double extraSumOfSquares; if (sampleCount > 1) { @@ -100,7 +103,7 @@ private void addValue(long newValue, int sampleCount) { value = newValue; extraSumOfSquares = (double) newValue * (double) newValue; } - sumOfSquares.add(extraSumOfSquares); + sumOfSquares = sumOfSquares.add(BigDecimal.valueOf(extraSumOfSquares)); long currentMinimum = minimum.get(); if (currentMinimum > value) { @@ -155,12 +158,11 @@ public long getTotalBytes() { public double getMean() { - double sum = this.sum.sum(); double count = this.count.sum(); if (count == 0) { return 0.0; } - return sum / count; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).divide(BigDecimal.valueOf(1000000L), 16, RoundingMode.HALF_UP).doubleValue() : sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).doubleValue(); } public Number getMeanAsNumber() { @@ -169,23 +171,20 @@ public Number getMeanAsNumber() { } public double getStandardDeviation() { - double sum = this.sum.sum(); - double sumOfSquares = this.sumOfSquares.sum(); double count = this.count.sum(); // Just in case if (count == 0) { return 0.0; } - double mean = sum / count; - return Math.sqrt((sumOfSquares / count) - (mean * mean)); + return Math.sqrt(sumOfSquares.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).subtract(sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).pow(2)).doubleValue()); } public long getMin() { - return minimum.get(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? minimum.get() / 1000000L : minimum.get(); } public long getMax() { - return maximum.get(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? maximum.get() / 1000000L : maximum.get(); } public int getCount() { @@ -286,7 +285,7 @@ public double getSentKBPerSecond() { private double getRatePerSecond(long value) { long elapsedTime = this.elapsedTime.get(); if (elapsedTime > 0) { - return value / ((double) elapsedTime / 1000); // 1000 = millisecs/sec + return value / (elapsedTime / 1000000.0D / 1000.0D); // 1000 = millisecs/sec } return 0.0; } diff --git a/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java b/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java index 308bdb7b124..fb62160ba38 100644 --- a/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java +++ b/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java @@ -17,8 +17,10 @@ package org.apache.jmeter.visualizers; +import java.math.BigInteger; import java.text.DecimalFormat; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.SampleResult; /** @@ -43,7 +45,7 @@ public class RunningSample { private long counter; - private long runningSum; + private BigInteger runningSum; private long max; @@ -91,7 +93,7 @@ public RunningSample(RunningSample src) { private void init() { // WARNING: called from ctor so must not be overridden (i.e. must be private or final) counter = 0L; - runningSum = 0L; + runningSum = BigInteger.ZERO; max = Long.MIN_VALUE; min = Long.MAX_VALUE; errorCount = 0L; @@ -138,7 +140,7 @@ public double getRate() { return Double.MAX_VALUE; } - return (double) counter / howLongRunning * 1000.0; + return (double) counter / (howLongRunning / 100000.0D / 1000.0D); } /** @@ -232,7 +234,7 @@ public void addSample(SampleResult res) { if (lastTime < endTime) { lastTime = endTime; } - runningSum += aTimeInMillis; + runningSum = runningSum.add(BigInteger.valueOf(aTimeInMillis)); if (aTimeInMillis > max) { max = aTimeInMillis; @@ -253,7 +255,7 @@ public void addSample(SampleResult res) { public void addSample(RunningSample rs) { this.counter += rs.counter; this.errorCount += rs.errorCount; - this.runningSum += rs.runningSum; + runningSum = runningSum.add(rs.runningSum); if (this.firstTime > rs.firstTime) { this.firstTime = rs.firstTime; } @@ -305,7 +307,7 @@ public long getAverage() { if (counter == 0) { return 0; } - return runningSum / counter; + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? runningSum.divide(BigInteger.valueOf(counter)).divide(BigInteger.valueOf(1000000L)).longValue() : runningSum.divide(BigInteger.valueOf(counter)).longValue(); } /** diff --git a/src/core/src/main/java/org/apache/jmeter/visualizers/Sample.java b/src/core/src/main/java/org/apache/jmeter/visualizers/Sample.java index c3ce2d3ed21..49f52efb7fd 100644 --- a/src/core/src/main/java/org/apache/jmeter/visualizers/Sample.java +++ b/src/core/src/main/java/org/apache/jmeter/visualizers/Sample.java @@ -210,6 +210,6 @@ public long getStartTime() { */ @SuppressWarnings("JavaUtilDate") public String getStartTimeFormatted(Format format) { - return format.format(new Date(getStartTime())); + return format.format(new Date(getStartTime() / 1000000L)); } } diff --git a/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java b/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java index 487d51a01f8..e1d73a0695d 100644 --- a/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java +++ b/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java @@ -17,8 +17,10 @@ package org.apache.jmeter.visualizers; +import java.math.BigInteger; import java.util.Map; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.SampleResult; import org.apache.jorphan.math.StatCalculatorLong; @@ -74,7 +76,7 @@ public long getElapsed() { if (getCurrentSample().getEndTime() == 0) { return 0;// No samples collected ... } - return getCurrentSample().getEndTime() - firstTime; + return (getCurrentSample().getEndTime() - firstTime) / 1000000L; } /** @@ -190,16 +192,16 @@ public Sample addSample(SampleResult res) { eCount += res.getErrorCount(); endTime = getEndTime(res); long howLongRunning = endTime - firstTime; - throughput = ((double) calculator.getCount() / (double) howLongRunning) * 1000.0; + throughput = (double) calculator.getCount() / (howLongRunning / 1000000.0D / 1000.0D); if (throughput > maxThroughput) { maxThroughput = throughput; } rtime = res.getTime(); - cmean = (long)calculator.getMean(); + cmean = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (long) calculator.getMean() / 1000000L : (long) calculator.getMean(); cstdv = (long)calculator.getStandardDeviation(); - cmedian = calculator.getMedian(); - cpercent = calculator.getPercentPoint(0.500); + cmedian = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMedian().divide(BigInteger.valueOf(1000000L)).longValue() : calculator.getMedian().longValue(); + cpercent = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getPercentPoint(0.500D).divide(BigInteger.valueOf(1000000L)).longValue() : calculator.getPercentPoint(0.500D).longValue(); // TODO cpercent is the same as cmedian here - why? and why pass it to "distributionLine"? rbool = res.isSuccessful(); } @@ -273,7 +275,7 @@ public Map getDistribution() { } public Number getPercentPoint(double percent) { - return calculator.getPercentPoint(percent); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getPercentPoint(percent).divide(BigInteger.valueOf(1000000L)) : calculator.getPercentPoint(percent); } public long getCount() { @@ -281,30 +283,30 @@ public long getCount() { } public Number getMax() { - return calculator.getMax(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMax().divide(BigInteger.valueOf(1000000L)) : calculator.getMax(); } public double getMean() { - return calculator.getMean(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMean() / 1000000.0D : calculator.getMean(); } public Number getMeanAsNumber() { - return (long) calculator.getMean(); + return (long) getMean(); } public Number getMedian() { - return calculator.getMedian(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMedian().divide(BigInteger.valueOf(1000000L)) : calculator.getMedian(); } public Number getMin() { - if (calculator.getMin() < 0) { + if (calculator.getMin().compareTo(BigInteger.valueOf(0L)) < 0) { return 0L; } - return calculator.getMin(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMin().divide(BigInteger.valueOf(1000000L)) : calculator.getMin(); } public Number getPercentPoint(float percent) { - return calculator.getPercentPoint(percent); + return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getPercentPoint(percent).divide(BigInteger.valueOf(1000000L)) : calculator.getPercentPoint(percent); } public double getStandardDeviation() { diff --git a/src/core/src/main/java/org/apache/jmeter/visualizers/TableSample.java b/src/core/src/main/java/org/apache/jmeter/visualizers/TableSample.java index c8623157463..2dcbd398cc5 100644 --- a/src/core/src/main/java/org/apache/jmeter/visualizers/TableSample.java +++ b/src/core/src/main/java/org/apache/jmeter/visualizers/TableSample.java @@ -109,7 +109,7 @@ public long getStartTime() { */ @SuppressWarnings("JavaUtilDate") public String getStartTimeFormatted(Format format) { - return format.format(new Date(getStartTime())); + return format.format(new Date(getStartTime() / 1000000L)); } public String getThreadName() { diff --git a/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties b/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties index 23721c4b4c9..d4814c7b1ae 100644 --- a/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties +++ b/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties @@ -59,6 +59,7 @@ aggregate_graph_legend.placement.top=Top aggregate_graph_legend_placement=Placement\: aggregate_graph_max_length_xaxis_label=Max length of x-axis label\: aggregate_graph_ms=Milliseconds +aggregate_graph_ns=Nanoseconds aggregate_graph_no_values_to_graph=No values to graph aggregate_graph_number_grouping=Show number grouping? aggregate_graph_response_time=Response Time @@ -447,6 +448,7 @@ graph_results_deviation=Deviation graph_results_latest_sample=Latest Sample graph_results_median=Median graph_results_ms=ms +graph_results_ns=ns graph_results_no_samples=No of Samples graph_results_throughput=Throughput graph_results_title=Graph Results @@ -999,9 +1001,9 @@ reportgenerator_summary_total=Total request_data=Request Data reset=Reset response_save_as_md5=Save response as MD5 hash? -response_time_distribution_satisfied_label=Requests having \nresponse time <= {0}ms -response_time_distribution_tolerated_label= Requests having \nresponse time > {0}ms and <= {1}ms -response_time_distribution_untolerated_label=Requests having \nresponse time > {0}ms +response_time_distribution_satisfied_label=Requests having \nresponse time <= {0}{1} +response_time_distribution_tolerated_label=Requests having \nresponse time > {0}{2} and <= {1}{2} +response_time_distribution_untolerated_label=Requests having \nresponse time > {0}{1} response_time_distribution_failed_label=Requests in error restart=Restart restart_error=Restart error diff --git a/src/core/src/test/java/org/apache/jmeter/samplers/TestSampleResult.java b/src/core/src/test/java/org/apache/jmeter/samplers/TestSampleResult.java index a551a5287f1..247ce08bc18 100644 --- a/src/core/src/test/java/org/apache/jmeter/samplers/TestSampleResult.java +++ b/src/core/src/test/java/org/apache/jmeter/samplers/TestSampleResult.java @@ -74,7 +74,7 @@ void testPauseFalse() throws Exception { } private static void assertAlmostEquals(long expected, long actual, long delta, String message) { - long actualDelta = Math.abs(expected - actual); + long actualDelta = Math.abs(expected - actual / 1000000L); if (actualDelta > delta) { Assertions.fail(() -> message + ", expected " + expected + " within delta of " + delta + ", but got " + actual @@ -277,7 +277,7 @@ private void testSubResults(boolean nanoTime, long nanoThreadSleep, long pause) */ long diff = parentElapsedTotal - sumSamplesTimes; - long maxDiff = nanoTime ? 10 : 16; // TimeMillis has granularity of 10-20 + long maxDiff = nanoTime ? 10 * 1000000L : 16 * 1000000L; // TimeMillis has granularity of 10-20 if (diff < 0 || diff > maxDiff) { Assertions.fail("ParentElapsed: " + parentElapsedTotal + " - " + " sum(samples): " + sumSamplesTimes + " => " + diff + " not in [0," + maxDiff + "]; nanotime=" + nanoTime); @@ -297,9 +297,9 @@ private void testSubResults(boolean nanoTime, long nanoThreadSleep, long pause) calculator.addSample(parent); Assertions.assertEquals(600, calculator.getTotalBytes()); Assertions.assertEquals(1, calculator.getCount()); - Assertions.assertEquals(1d / (parentElapsedTotal / 1000d), calculator.getRate(), 0.0001d); // Allow for some margin of error + Assertions.assertEquals(1d / (parentElapsedTotal / 1000000.0D / 1000d), calculator.getRate(), 0.0001d); // Allow for some margin of error // Check that the throughput uses the time elapsed for the sub results - Assertions.assertFalse(1d / (parentElapsed / 1000d) <= calculator.getRate()); + Assertions.assertFalse(1d / (parentElapsed / 1000000.0D / 1000d) <= calculator.getRate()); } // TODO some more invalid sequence tests needed diff --git a/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt b/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt index d4be64a6b4f..19bd5821e84 100644 --- a/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt +++ b/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt @@ -28,27 +28,27 @@ class CalculatorTest { @Test fun min() { - assertEquals(Long.MAX_VALUE, calculator.min, "min()") - calculator.addSample(SampleResult(10, 42)) + assertEquals(Long.MAX_VALUE / 1000000L, calculator.min, "min()") + calculator.addSample(SampleResult(10 * 1000000L, 42 * 1000000L)) assertEquals(42, calculator.min, "min(42)") - calculator.addSample(SampleResult(10, 40)) + calculator.addSample(SampleResult(10 * 1000000L, 40 * 1000000L)) assertEquals(40, calculator.min, "min(42, 40)") - calculator.addSample(SampleResult(10, 50)) + calculator.addSample(SampleResult(10 * 1000000L, 50 * 1000000L)) assertEquals(40, calculator.min, "min(42, 40, 50)") - calculator.addSample(SampleResult(10, 50).apply { sampleCount = 2 }) + calculator.addSample(SampleResult(10 * 1000000L, 50 * 1000000L).apply { sampleCount = 2 }) assertEquals(25, calculator.min, "min(42, 40, 50, 50/2)") } @Test fun max() { - assertEquals(Long.MIN_VALUE, calculator.max, "max()") - calculator.addSample(SampleResult(10, 40)) + assertEquals(Long.MIN_VALUE / 1000000L, calculator.max, "max()") + calculator.addSample(SampleResult(10 * 1000000L, 40 * 1000000L)) assertEquals(40, calculator.max, "max(40)") - calculator.addSample(SampleResult(10, 42)) + calculator.addSample(SampleResult(10 * 1000000L, 42 * 1000000L)) assertEquals(42, calculator.max, "max(40, 42)") - calculator.addSample(SampleResult(10, 30)) + calculator.addSample(SampleResult(10 * 1000000L, 30 * 1000000L)) assertEquals(42, calculator.max, "max(40, 42, 30)") - calculator.addSample(SampleResult(10, 90).apply { sampleCount = 2 }) + calculator.addSample(SampleResult(10 * 1000000L, 90 * 1000000L).apply { sampleCount = 2 }) assertEquals(45, calculator.max, "max(40, 42, 30, 90/2)") } @@ -66,11 +66,11 @@ class CalculatorTest { @Test fun mean() { assertEquals(0.0, calculator.mean, "mean()") - calculator.addSample(SampleResult(10, 40)) + calculator.addSample(SampleResult(10 * 1000000L, 40 * 1000000L)) assertEquals(40.0, calculator.mean, 0.001, "mean(40)") - calculator.addSample(SampleResult(10, 42)) + calculator.addSample(SampleResult(10 * 1000000L, 42 * 1000000L)) assertEquals((40.0 + 42.0) / 2, calculator.mean, 0.001, "mean(40, 42)") - calculator.addSample(SampleResult(10, 48).apply { sampleCount = 2 }) + calculator.addSample(SampleResult(10 * 1000000L, 48 * 1000000L).apply { sampleCount = 2 }) assertEquals((40.0 + 42.0 + 48) / 4, calculator.mean, 0.001, "mean(40, 42, 48/2)") } @@ -112,14 +112,14 @@ class CalculatorTest { @Test fun bytesPerSecond() { assertEquals(0.0, calculator.bytesPerSecond, "bytesPerSecond()") - calculator.addSample(SampleResult(40, 30).apply { setBodySize(50L) }) + calculator.addSample(SampleResult(40 * 1000000L, 30 * 1000000L).apply { setBodySize(50L) }) assertEquals( 50.0 * 1000 / (40 - 10.0), calculator.bytesPerSecond, 0.001, "bytesPerSecond({50bytes, 10ms..40ms})" ) - calculator.addSample(SampleResult(60, 20).apply { setBodySize(70L) }) + calculator.addSample(SampleResult(60 * 1000000L, 20 * 1000000L).apply { setBodySize(70L) }) assertEquals( (50 + 70.0) * 1000 / (60 - 10.0), calculator.bytesPerSecond, @@ -131,14 +131,14 @@ class CalculatorTest { @Test fun sentBytesPerSecond() { assertEquals(0.0, calculator.sentBytesPerSecond, "sentBytesPerSecond()") - calculator.addSample(SampleResult(40, 30).apply { sentBytes = 50L }) + calculator.addSample(SampleResult(40 * 1000000L, 30 * 1000000L).apply { sentBytes = 50L }) assertEquals( 50.0 * 1000 / (40 - 10.0), calculator.sentBytesPerSecond, 0.001, "sentBytesPerSecond({sent=50bytes, 10ms..40ms})" ) - calculator.addSample(SampleResult(60, 20).apply { sentBytes = 70L }) + calculator.addSample(SampleResult(60 * 1000000L, 20 * 1000000L).apply { sentBytes = 70L }) assertEquals( (50 + 70.0) * 1000 / (60 - 10.0), calculator.sentBytesPerSecond, diff --git a/src/dist-check/src/test/resources/org/apache/jmeter/gui/report/HTMLReportExpect.json b/src/dist-check/src/test/resources/org/apache/jmeter/gui/report/HTMLReportExpect.json index 25505fbb288..60d754edf12 100644 --- a/src/dist-check/src/test/resources/org/apache/jmeter/gui/report/HTMLReportExpect.json +++ b/src/dist-check/src/test/resources/org/apache/jmeter/gui/report/HTMLReportExpect.json @@ -36,7 +36,7 @@ "sampleCount" : 252, "errorCount" : 0, "errorPct" : 0.0, - "meanResTime" : 235.90079365079367, + "meanResTime" : 235.9007936507938, "medianResTime":232.0, "minResTime" : 101.0, "maxResTime" : 353.0, diff --git a/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculator.java b/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculator.java index 6136f15da8f..ea8a6e7e85a 100644 --- a/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculator.java +++ b/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculator.java @@ -17,6 +17,8 @@ package org.apache.jorphan.math; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.ConcurrentModificationException; import java.util.HashMap; import java.util.Map; @@ -38,9 +40,9 @@ public abstract class StatCalculator> { // We use a TreeMap because we need the entries to be sorted // Running values, updated for each sample - private double sum = 0; + private BigDecimal sum = BigDecimal.ZERO; - private double sumOfSquares = 0; + private BigDecimal sumOfSquares = BigDecimal.ZERO; private double mean = 0; @@ -79,8 +81,8 @@ protected StatCalculator(final T zero, final T min, final T max) { public void clear() { valuesMap.clear(); - sum = 0; - sumOfSquares = 0; + sum = BigDecimal.ZERO; + sumOfSquares = BigDecimal.ZERO; mean = 0; deviation = 0; count = 0; @@ -212,7 +214,7 @@ public long getCount() { } public double getSum() { - return sum; + return sum.doubleValue(); } protected abstract T divide(T val, int n); @@ -227,10 +229,9 @@ public double getSum() { */ void addEachValue(T val, long sampleCount) { count += sampleCount; - double currentVal = val.doubleValue(); - sum += currentVal * sampleCount; + sum = sum.add(BigDecimal.valueOf(val.longValue()).multiply(BigDecimal.valueOf(sampleCount))); // For n same values in sum of square is equal to n*val^2 - sumOfSquares += currentVal * currentVal * sampleCount; + sumOfSquares = sumOfSquares.add(BigDecimal.valueOf(val.longValue()).multiply(BigDecimal.valueOf(val.longValue())).multiply(BigDecimal.valueOf(sampleCount))); updateValueCount(val, sampleCount); calculateDerivedValues(val); } @@ -244,23 +245,23 @@ void addEachValue(T val, long sampleCount) { public void addValue(T val, long sampleCount) { count += sampleCount; double currentVal = val.doubleValue(); - sum += currentVal; + sum = sum.add(BigDecimal.valueOf(val.longValue())); T actualValue = val; if (sampleCount > 1){ // For n values in an aggregate sample the average value = (val/n) // So need to add n * (val/n) * (val/n) = val * val / n - sumOfSquares += currentVal * currentVal / sampleCount; + sumOfSquares = sumOfSquares.add(BigDecimal.valueOf(currentVal).multiply(BigDecimal.valueOf(currentVal)).divide(BigDecimal.valueOf(sampleCount), 16, RoundingMode.HALF_UP)); actualValue = divide(val, sampleCount); } else { // no need to divide by 1 - sumOfSquares += currentVal * currentVal; + sumOfSquares = sumOfSquares.add(BigDecimal.valueOf(currentVal).multiply(BigDecimal.valueOf(currentVal))); } updateValueCount(actualValue, sampleCount); calculateDerivedValues(actualValue); } private void calculateDerivedValues(T actualValue) { - mean = sum / count; - deviation = Math.sqrt((sumOfSquares / count) - (mean * mean)); + mean = sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).doubleValue(); + deviation = Math.sqrt(sumOfSquares.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).subtract(sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).pow(2)).doubleValue()); if (actualValue.compareTo(max) > 0){ max=actualValue; } diff --git a/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculatorLong.java b/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculatorLong.java index 1166a67f29b..e456c8f7ee9 100644 --- a/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculatorLong.java +++ b/src/jorphan/src/main/java/org/apache/jorphan/math/StatCalculatorLong.java @@ -17,13 +17,15 @@ package org.apache.jorphan.math; +import java.math.BigInteger; + /** * StatCalculator for Long values */ -public class StatCalculatorLong extends StatCalculator { +public class StatCalculatorLong extends StatCalculator { public StatCalculatorLong() { - super(0L, Long.MIN_VALUE, Long.MAX_VALUE); + super(BigInteger.ZERO, BigInteger.valueOf(Long.MIN_VALUE), BigInteger.valueOf(Long.MAX_VALUE)); } /** @@ -32,7 +34,7 @@ public StatCalculatorLong() { * @param val the value to add, which should correspond with a single sample */ public void addValue(long val){ - super.addValue(val); + super.addValue(BigInteger.valueOf(val)); } /** @@ -42,16 +44,16 @@ public void addValue(long val){ * @param sampleCount the number of samples contributing to the aggregate value */ public void addValue(long val, int sampleCount){ - super.addValue(val, sampleCount); + super.addValue(BigInteger.valueOf(val), sampleCount); } @Override - protected Long divide(Long val, int n) { - return val / n; + protected BigInteger divide(BigInteger val, int n) { + return val.divide(BigInteger.valueOf(n)); } @Override - protected Long divide(Long val, long n) { - return val / n; + protected BigInteger divide(BigInteger val, long n) { + return val.divide(BigInteger.valueOf(n)); } } diff --git a/src/jorphan/src/test/java/org/apache/jorphan/math/TestStatCalculator.java b/src/jorphan/src/test/java/org/apache/jorphan/math/TestStatCalculator.java index 19877c25872..3c75eb242dc 100644 --- a/src/jorphan/src/test/java/org/apache/jorphan/math/TestStatCalculator.java +++ b/src/jorphan/src/test/java/org/apache/jorphan/math/TestStatCalculator.java @@ -20,6 +20,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import java.math.BigInteger; import java.util.Map; import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; @@ -107,8 +108,8 @@ public void testLong() { calc.addValue(0L); calc.addValue(2L); calc.addValue(2L); - final Long long0 = 0L; - final Long long2 = 2L; + final BigInteger long0 = BigInteger.valueOf(0L); + final BigInteger long2 = BigInteger.valueOf(2L); assertEquals(long2, calc.getMax()); assertEquals(long0, calc.getMin()); Map map = calc.getDistribution(); @@ -141,7 +142,7 @@ public void testBug52125_1() { // No duplicates when adding calc.addValue(2L); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum(), 0.000000000001); - assertEquals(0.5773502691896255, calc.getStandardDeviation(), 0.000000000000001); + assertEquals(0.5773502691896257, calc.getStandardDeviation(), 0.000000000000001); } @Test @@ -150,10 +151,10 @@ public void testBug52125_2() { // add duplicates calc.addValue(1L); calc.addValue(2L); calc.addValue(3L); - calc.addEachValue(2L, 3); + calc.addEachValue(BigInteger.valueOf(2L), 3); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum(), 0.000000000001); - assertEquals(0.5773502691896255, calc.getStandardDeviation(), 0.000000000000001); + assertEquals(0.5773502691896257, calc.getStandardDeviation(), 0.000000000000001); } @Test @@ -164,7 +165,7 @@ public void testBug52125_2A() { // as above, but with aggregate sample instead calc.addValue(6L, 3); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum(), 0.00000001); - assertEquals(0.5773502691896255, calc.getStandardDeviation(), 0.000000000000001); + assertEquals(0.5773502691896257, calc.getStandardDeviation(), 0.000000000000001); } @Test @@ -179,6 +180,6 @@ public void testBug52125_3() { // add duplicates as per bug calc.addAll(calc2); assertEquals(6, calc.getCount()); assertEquals(12.0, calc.getSum(), 0.000000000001); - assertEquals(0.5773502691896255, calc.getStandardDeviation(), 0.000000000000001); + assertEquals(0.5773502691896257, calc.getStandardDeviation(), 0.000000000000001); } } diff --git a/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java b/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java index f2478c7e4d6..652e813be15 100644 --- a/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java +++ b/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java @@ -41,6 +41,6 @@ void sampleWithoutEndTimeSet() { sampler.setScript("'OK'"); sampler.setScriptLanguage("groovy"); SampleResult sampleResult = sampler.sample(null); - assertEquals(System.currentTimeMillis(), sampleResult.getEndTime(), 1000); + assertEquals(System.currentTimeMillis() * 1000000L, sampleResult.getEndTime(), 1000 * 1000000L); } } From fd12dc39aa688011475c7466cb7c1a2e1f43e38f Mon Sep 17 00:00:00 2001 From: junyejiang Date: Wed, 5 Mar 2025 17:38:27 +0800 Subject: [PATCH 2/2] update as CR --- .../content/js/dashboard.js.fmkr | 2 +- bin/report-template/content/js/graph.js.fmkr | 36 +- bin/reportgenerator.properties | 3 +- bin/testfiles/HTMLReportTestFile.csv | 510 +++++++++--------- bin/testfiles/ns.json | 50 ++ bin/testfiles/ns.jtl | 256 +++++++++ bin/testfiles/ns.properties | 1 + .../jmeter/assertions/CompareAssertion.java | 2 +- .../jmeter/assertions/DurationAssertion.java | 2 +- .../jmeter/visualizers/GraphVisualizer.java | 4 +- .../visualizers/RespTimeGraphVisualizer.java | 6 +- .../jmeter/visualizers/SamplerResultTab.java | 12 +- .../visualizers/StatGraphVisualizer.java | 2 +- .../visualizers/backend/SamplerMetric.java | 25 +- .../InfluxDBRawBackendListenerClient.java | 9 +- .../backend/SamplerMetricFixedModeTest.java | 8 +- .../backend/SamplerMetricTimedModeTest.java | 8 +- .../jmeter/assertions/CompareAssertionTest.kt | 1 - .../jmeter/control/TransactionController.java | 8 +- .../jmeter/control/TransactionSampler.java | 6 +- .../config/ReportGeneratorConfiguration.java | 4 +- .../org/apache/jmeter/report/core/Sample.java | 20 +- .../dashboard/HtmlTemplateExporter.java | 2 +- .../report/dashboard/ReportGenerator.java | 4 +- .../report/processor/MaxAggregator.java | 2 +- .../report/processor/MeanAggregator.java | 2 +- .../report/processor/MinAggregator.java | 2 +- .../processor/PercentileAggregator.java | 2 +- .../processor/StatisticsSummaryData.java | 8 +- ...ResponseTimeDistributionGraphConsumer.java | 2 +- .../ResponseTimePercentilesGraphConsumer.java | 2 +- ...ResponseTimeDistributionGraphConsumer.java | 12 +- .../reporters/SummariserRunningSample.java | 6 +- .../apache/jmeter/samplers/SampleResult.java | 59 +- .../samplers/StatisticalSampleResult.java | 14 +- .../apache/jmeter/save/CSVSaveService.java | 64 ++- .../converters/SampleResultConverter.java | 47 +- .../org/apache/jmeter/util/Calculator.java | 6 +- .../jmeter/visualizers/RunningSample.java | 2 +- .../visualizers/SamplingStatCalculator.java | 18 +- .../jmeter/save/TestCSVSaveService.java | 6 +- .../org/apache/jmeter/util/CalculatorTest.kt | 36 +- .../gui/action/HtmlReportGeneratorTest.kt | 12 + .../java/sampler/JSR223SamplerTest.java | 2 +- 44 files changed, 874 insertions(+), 411 deletions(-) create mode 100644 bin/testfiles/ns.json create mode 100644 bin/testfiles/ns.jtl create mode 100644 bin/testfiles/ns.properties diff --git a/bin/report-template/content/js/dashboard.js.fmkr b/bin/report-template/content/js/dashboard.js.fmkr index dc6c5cc6f31..62af2442aee 100644 --- a/bin/report-template/content/js/dashboard.js.fmkr +++ b/bin/report-template/content/js/dashboard.js.fmkr @@ -41,7 +41,7 @@ function summaryTableHeader(header) { cell = document.createElement('th'); cell.setAttribute("data-sorter", false); cell.colSpan = 7; - cell.innerHTML = "Response Times (${jmeter_reportgenerator_msns})"; + cell.innerHTML = "Response Times (${jmeter_reportgenerator_ms_ns})"; newRow.appendChild(cell); cell = document.createElement('th'); diff --git a/bin/report-template/content/js/graph.js.fmkr b/bin/report-template/content/js/graph.js.fmkr index 7f97ec3ddcb..9734f513593 100644 --- a/bin/report-template/content/js/graph.js.fmkr +++ b/bin/report-template/content/js/graph.js.fmkr @@ -58,7 +58,7 @@ var responseTimePercentilesInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Percentile value in ${jmeter_reportgenerator_msns}", + axisLabel: "Percentile value in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -70,7 +70,7 @@ var responseTimePercentilesInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : %x.2 percentile was %y ${jmeter_reportgenerator_msns}" + content: "%s : %x.2 percentile was %y ${jmeter_reportgenerator_ms_ns}" }, selection: { mode: "xy" }, }; @@ -127,7 +127,7 @@ var responseTimeDistributionInfos = { container: '#legendResponseTimeDistribution' }, xaxis:{ - axisLabel: "Response times in ${jmeter_reportgenerator_msns}", + axisLabel: "Response times in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -151,7 +151,7 @@ var responseTimeDistributionInfos = { tooltip: true, tooltipOpts: { content: function(label, xval, yval, flotItem){ - return yval + " responses for " + label + " were between " + xval + " and " + (xval + granularity) + " ${jmeter_reportgenerator_msns}"; + return yval + " responses for " + label + " were between " + xval + " and " + (xval + granularity) + " ${jmeter_reportgenerator_ms_ns}"; } } }; @@ -355,7 +355,7 @@ var timeVsThreadsInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average response times in ${jmeter_reportgenerator_msns}", + axisLabel: "Average response times in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -370,7 +370,7 @@ var timeVsThreadsInfos = { }, tooltip: true, tooltipOpts: { - content: "%s: At %x.2 active threads, Average response time was %y.2 ${jmeter_reportgenerator_msns}" + content: "%s: At %x.2 active threads, Average response time was %y.2 ${jmeter_reportgenerator_ms_ns}" } }; }, @@ -505,7 +505,7 @@ var responseTimesOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average response time in ${jmeter_reportgenerator_msns}", + axisLabel: "Average response time in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -525,7 +525,7 @@ var responseTimesOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Average response time was %y ${jmeter_reportgenerator_msns}" + content: "%s : at %x Average response time was %y ${jmeter_reportgenerator_ms_ns}" } }; }, @@ -586,7 +586,7 @@ var latenciesOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average response latencies in ${jmeter_reportgenerator_msns}", + axisLabel: "Average response latencies in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -606,7 +606,7 @@ var latenciesOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Average latency was %y ${jmeter_reportgenerator_msns}" + content: "%s : at %x Average latency was %y ${jmeter_reportgenerator_ms_ns}" } }; }, @@ -667,7 +667,7 @@ var connectTimeOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Average Connect Time in ${jmeter_reportgenerator_msns}", + axisLabel: "Average Connect Time in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -687,7 +687,7 @@ var connectTimeOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Average connect time was %y ${jmeter_reportgenerator_msns}" + content: "%s : at %x Average connect time was %y ${jmeter_reportgenerator_ms_ns}" } }; }, @@ -749,7 +749,7 @@ var responseTimePercentilesOverTimeInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Response Time in ${jmeter_reportgenerator_msns}", + axisLabel: "Response Time in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -769,7 +769,7 @@ var responseTimePercentilesOverTimeInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : at %x Response time was %y ${jmeter_reportgenerator_msns}" + content: "%s : at %x Response time was %y ${jmeter_reportgenerator_ms_ns}" } }; }, @@ -825,7 +825,7 @@ var responseTimeVsRequestInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Median Response Time in ${jmeter_reportgenerator_msns}", + axisLabel: "Median Response Time in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -844,7 +844,7 @@ var responseTimeVsRequestInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : Median response time at %x req/s was %y ${jmeter_reportgenerator_msns}" + content: "%s : Median response time at %x req/s was %y ${jmeter_reportgenerator_ms_ns}" }, colors: ["#9ACD32", "#FF6347"] }; @@ -899,7 +899,7 @@ var latenciesVsRequestInfos = { axisLabelPadding: 20, }, yaxis: { - axisLabel: "Median Latency in ${jmeter_reportgenerator_msns}", + axisLabel: "Median Latency in ${jmeter_reportgenerator_ms_ns}", axisLabelUseCanvas: true, axisLabelFontSizePixels: 12, axisLabelFontFamily: 'Verdana, Arial', @@ -914,7 +914,7 @@ var latenciesVsRequestInfos = { }, tooltip: true, tooltipOpts: { - content: "%s : Median Latency time at %x req/s was %y ${jmeter_reportgenerator_msns}" + content: "%s : Median Latency time at %x req/s was %y ${jmeter_reportgenerator_ms_ns}" }, colors: ["#9ACD32", "#FF6347"] }; diff --git a/bin/reportgenerator.properties b/bin/reportgenerator.properties index aa6a9f3ff61..0df2a1dfc24 100644 --- a/bin/reportgenerator.properties +++ b/bin/reportgenerator.properties @@ -34,7 +34,8 @@ # Reporting configuration #--------------------------------------------------------------------------- -jmeter.reportgenerator.msns=ms +#The time unit in reports and visualizers: ms(millisecond) / ns(nanosecond) +jmeter.reportgenerator.ms_ns=ms # Sets the satisfaction threshold for the APDEX calculation (in milliseconds). #jmeter.reportgenerator.apdex_satisfied_threshold=500 diff --git a/bin/testfiles/HTMLReportTestFile.csv b/bin/testfiles/HTMLReportTestFile.csv index 7c096ddc5c4..5cc98daf617 100644 --- a/bin/testfiles/HTMLReportTestFile.csv +++ b/bin/testfiles/HTMLReportTestFile.csv @@ -1,256 +1,256 @@ timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect -1551783627191000000,351000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783627543000000,192000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783627735000000,131000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783627866000000,261000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628128000000,266000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628395000000,279000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628674000000,304000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783628979000000,353000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629333000000,196000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629530000000,139000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629670000000,278000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783629949000000,303000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630253000000,351000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630605000000,194000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630799000000,134000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783630934000000,268000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631202000000,282000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631485000000,308000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631794000000,108000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783631903000000,217000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632120000000,180000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632301000000,107000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632408000000,213000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632622000000,171000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783632794000000,342000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633137000000,176000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633313000000,353000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633666000000,196000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783633863000000,137000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634001000000,275000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634276000000,296000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634573000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783634910000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635075000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635404000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635552000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783635850000000,338000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636189000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636357000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636695000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783636859000000,329000000,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 -1551783637189000000,147000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783637337000000,296000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783637634000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783637974000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638142000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638480000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638644000000,329000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783638974000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639122000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639420000000,338000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639759000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783639927000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640264000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640429000000,329000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640758000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783640907000000,295000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783641203000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783641540000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783641705000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642034000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642182000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642480000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642819000000,169000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783642989000000,338000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643327000000,166000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643493000000,333000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643827000000,156000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783643983000000,313000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644297000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644413000000,233000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644647000000,211000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783644858000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645027000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645363000000,163000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645527000000,325000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645853000000,142000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783645995000000,285000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646280000000,315000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646596000000,120000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646717000000,241000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783646958000000,227000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647186000000,200000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647386000000,146000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647533000000,292000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783647826000000,331000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648157000000,152000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648310000000,304000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648615000000,353000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783648968000000,199000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649167000000,142000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649310000000,284000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649594000000,314000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783649909000000,118000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650027000000,238000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650265000000,220000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650486000000,185000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650671000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783650788000000,232000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651021000000,210000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651231000000,166000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651398000000,332000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651730000000,155000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783651886000000,309000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652196000000,110000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652307000000,221000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652528000000,187000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652715000000,121000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783652836000000,241000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653078000000,227000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653306000000,200000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653506000000,146000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653653000000,292000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783653945000000,330000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783654275000000,150000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783654425000000,300000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783654726000000,344000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655071000000,180000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655251000000,106000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655358000000,212000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783655571000000,170000000,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 -1551783655741000000,340000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656081000000,171000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656253000000,342000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656595000000,174000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783656770000000,348000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657118000000,189000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657307000000,123000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657430000000,245000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657675000000,235000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783657911000000,215000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658126000000,176000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658303000000,352000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658656000000,195000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658852000000,136000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783658989000000,272000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783659262000000,291000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783659553000000,327000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783659880000000,145000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660025000000,290000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660316000000,324000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660641000000,140000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783660782000000,281000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661063000000,307000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661370000000,105000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661476000000,210000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661687000000,166000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783661853000000,333000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662186000000,157000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662343000000,313000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662657000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783662774000000,232000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663007000000,211000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663219000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663387000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663725000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783663889000000,329000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783664218000000,149000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783664367000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783664664000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665004000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665172000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665510000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783665675000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666004000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666152000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666450000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666789000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783666958000000,336000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667295000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667460000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667789000000,148000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783667937000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783668234000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783668574000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783668742000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669079000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669244000000,328000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669573000000,147000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783669720000000,295000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670015000000,335000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670351000000,162000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670513000000,324000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670837000000,137000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783670975000000,274000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783671249000000,294000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783671544000000,333000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783671877000000,157000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672035000000,314000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672349000000,118000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672468000000,237000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672705000000,220000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783672926000000,185000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673111000000,116000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673228000000,232000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673460000000,210000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673671000000,165000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783673836000000,331000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674167000000,153000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674320000000,305000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674626000000,100000000,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 -1551783674727000000,201000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783674928000000,149000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675077000000,297000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675374000000,339000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675714000000,168000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783675882000000,337000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676219000000,164000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676384000000,327000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676712000000,146000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783676859000000,292000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677152000000,331000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677484000000,153000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677638000000,306000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783677945000000,104000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678050000000,208000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678259000000,163000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678422000000,327000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678750000000,144000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783678894000000,289000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679183000000,323000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679507000000,135000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679643000000,272000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783679915000000,290000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680205000000,325000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680530000000,141000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680671000000,281000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783680952000000,307000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681260000000,104000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681365000000,208000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681574000000,163000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783681738000000,326000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682065000000,144000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682209000000,289000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682499000000,323000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682822000000,137000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783682960000000,274000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783683234000000,293000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783683527000000,332000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783683859000000,155000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684014000000,309000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684323000000,108000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684432000000,216000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684648000000,178000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684827000000,101000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783684928000000,203000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685132000000,151000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685283000000,303000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685587000000,350000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783685938000000,192000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686130000000,131000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686261000000,261000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686523000000,267000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783686790000000,280000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 -1551783687071000000,305000000,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627191,351,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627543,192,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627735,131,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783627866,261,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628128,266,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628395,279,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628674,304,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783628979,353,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629333,196,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629530,139,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629670,278,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783629949,303,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630253,351,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630605,194,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630799,134,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783630934,268,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631202,282,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631485,308,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631794,108,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783631903,217,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632120,180,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632301,107,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632408,213,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632622,171,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783632794,342,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633137,176,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633313,353,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633666,196,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783633863,137,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634001,275,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634276,296,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634573,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783634910,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635075,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635404,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635552,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783635850,338,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636189,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636357,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636695,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783636859,329,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 +1551783637189,147,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783637337,296,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783637634,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783637974,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638142,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638480,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638644,329,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783638974,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639122,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639420,338,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639759,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783639927,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640264,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640429,329,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640758,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783640907,295,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783641203,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783641540,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783641705,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642034,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642182,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642480,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642819,169,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783642989,338,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643327,166,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643493,333,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643827,156,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783643983,313,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644297,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644413,233,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644647,211,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783644858,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645027,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645363,163,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645527,325,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645853,142,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783645995,285,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646280,315,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646596,120,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646717,241,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783646958,227,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647186,200,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647386,146,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647533,292,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783647826,331,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648157,152,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648310,304,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648615,353,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783648968,199,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649167,142,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649310,284,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649594,314,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783649909,118,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650027,238,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650265,220,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650486,185,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650671,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783650788,232,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651021,210,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651231,166,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651398,332,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651730,155,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783651886,309,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652196,110,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652307,221,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652528,187,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652715,121,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783652836,241,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653078,227,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653306,200,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653506,146,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653653,292,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783653945,330,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783654275,150,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783654425,300,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783654726,344,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655071,180,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655251,106,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655358,212,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783655571,170,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 +1551783655741,340,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656081,171,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656253,342,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656595,174,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783656770,348,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657118,189,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657307,123,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657430,245,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657675,235,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783657911,215,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658126,176,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658303,352,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658656,195,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658852,136,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783658989,272,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783659262,291,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783659553,327,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783659880,145,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660025,290,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660316,324,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660641,140,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783660782,281,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661063,307,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661370,105,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661476,210,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661687,166,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783661853,333,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662186,157,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662343,313,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662657,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783662774,232,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663007,211,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663219,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663387,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663725,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783663889,329,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783664218,149,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783664367,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783664664,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665004,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665172,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665510,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783665675,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666004,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666152,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666450,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666789,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783666958,336,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667295,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667460,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667789,148,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783667937,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783668234,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783668574,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783668742,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669079,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669244,328,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669573,147,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783669720,295,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670015,335,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670351,162,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670513,324,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670837,137,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783670975,274,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783671249,294,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783671544,333,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783671877,157,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672035,314,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672349,118,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672468,237,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672705,220,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783672926,185,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673111,116,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673228,232,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673460,210,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673671,165,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783673836,331,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674167,153,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674320,305,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674626,100,JR-KO,400,Bad request,Thread Group 1-1,text,false,,20,8,1,1,null,0,0,0 +1551783674727,201,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783674928,149,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675077,297,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675374,339,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675714,168,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783675882,337,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676219,164,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676384,327,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676712,146,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783676859,292,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677152,331,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677484,153,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677638,306,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783677945,104,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678050,208,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678259,163,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678422,327,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678750,144,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783678894,289,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679183,323,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679507,135,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679643,272,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783679915,290,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680205,325,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680530,141,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680671,281,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783680952,307,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681260,104,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681365,208,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681574,163,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783681738,326,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682065,144,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682209,289,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682499,323,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682822,137,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783682960,274,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783683234,293,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783683527,332,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783683859,155,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684014,309,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684323,108,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684432,216,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684648,178,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684827,101,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783684928,203,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685132,151,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685283,303,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685587,350,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783685938,192,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686130,131,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686261,261,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686523,267,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783686790,280,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 +1551783687071,305,JR-OK,200,Good request,Thread Group 1-1,text,true,,18,8,1,1,null,0,0,0 diff --git a/bin/testfiles/ns.json b/bin/testfiles/ns.json new file mode 100644 index 00000000000..dd7b3ed4dc7 --- /dev/null +++ b/bin/testfiles/ns.json @@ -0,0 +1,50 @@ +{ + "JR-KO" : { + "transaction" : "JR-KO", + "sampleCount" : 3, + "errorCount" : 3, + "errorPct" : 100.0, + "meanResTime" : 1.9966666666666666E8, + "medianResTime" : 1.7E8, + "minResTime" : 1.0E8, + "maxResTime" : 3.29E8, + "pct1ResTime" : 3.29E8, + "pct2ResTime" : 3.29E8, + "pct3ResTime" : 3.29E8, + "throughput" : 0.07922465471254654, + "receivedKBytesPerSec" : 0.0015473565373544248, + "sentKBytesPerSec" : 6.1894261494177E-4 + }, + "Total" : { + "transaction" : "Total", + "sampleCount" : 255, + "errorCount" : 3, + "errorPct" : 1.1764706, + "meanResTime" : 2.354745098039215E8, + "medianResTime" : 2.32E8, + "minResTime" : 1.0E8, + "maxResTime" : 3.53E8, + "pct1ResTime" : 3.37E8, + "pct2ResTime" : 3.392E8, + "pct3ResTime" : 3.53E8, + "throughput" : 4.2369361136495804, + "receivedKBytesPerSec" : 0.07457474869153444, + "sentKBytesPerSec" : 0.03310106338788735 + }, + "JR-OK" : { + "transaction" : "JR-OK", + "sampleCount" : 252, + "errorCount" : 0, + "errorPct" : 0.0, + "meanResTime" : 2.359007936507938E8, + "medianResTime" : 2.32E8, + "minResTime" : 1.01E8, + "maxResTime" : 3.53E8, + "pct1ResTime" : 3.37E8, + "pct2ResTime" : 3.3935E8, + "pct3ResTime" : 3.53E8, + "throughput" : 4.187089806430174, + "receivedKBytesPerSec" : 0.0736011880036554, + "sentKBytesPerSec" : 0.03271163911273573 + } +} \ No newline at end of file diff --git a/bin/testfiles/ns.jtl b/bin/testfiles/ns.jtl new file mode 100644 index 00000000000..1c59d6eaaed --- /dev/null +++ b/bin/testfiles/ns.jtl @@ -0,0 +1,256 @@ +timeStamp,timeStamp_ns,elapsed,elapsed_ns,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,Latency_ns,IdleTime,IdleTime_ns,Connect,Connect_ns +0,1551783627191000000,1,351000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783627543000000,1,192000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783627735000000,1,131000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783627866000000,1,261000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783628128000000,1,266000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783628395000000,1,279000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783628674000000,1,304000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783628979000000,1,353000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783629333000000,1,196000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783629530000000,1,139000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783629670000000,1,278000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783629949000000,1,303000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783630253000000,1,351000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783630605000000,1,194000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783630799000000,1,134000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783630934000000,1,268000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783631202000000,1,282000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783631485000000,1,308000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783631794000000,1,108000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783631903000000,1,217000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783632120000000,1,180000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783632301000000,1,107000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783632408000000,1,213000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783632622000000,1,171000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783632794000000,1,342000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783633137000000,1,176000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783633313000000,1,353000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783633666000000,1,196000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783633863000000,1,137000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783634001000000,1,275000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783634276000000,1,296000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783634573000000,1,336000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783634910000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783635075000000,1,328000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783635404000000,1,148000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783635552000000,1,297000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783635850000000,1,338000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783636189000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783636357000000,1,337000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783636695000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783636859000000,1,329000000,JR-KO,400,Bad request,Thread Group 1-1,text,FALSE,,20,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783637189000000,1,147000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783637337000000,1,296000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783637634000000,1,339000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783637974000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783638142000000,1,337000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783638480000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783638644000000,1,329000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783638974000000,1,148000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783639122000000,1,297000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783639420000000,1,338000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783639759000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783639927000000,1,337000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783640264000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783640429000000,1,329000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783640758000000,1,148000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783640907000000,1,295000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783641203000000,1,336000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783641540000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783641705000000,1,328000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783642034000000,1,148000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783642182000000,1,297000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783642480000000,1,339000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783642819000000,1,169000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783642989000000,1,338000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783643327000000,1,166000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783643493000000,1,333000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783643827000000,1,156000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783643983000000,1,313000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783644297000000,1,116000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783644413000000,1,233000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783644647000000,1,211000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783644858000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783645027000000,1,336000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783645363000000,1,163000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783645527000000,1,325000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783645853000000,1,142000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783645995000000,1,285000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783646280000000,1,315000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783646596000000,1,120000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783646717000000,1,241000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783646958000000,1,227000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783647186000000,1,200000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783647386000000,1,146000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783647533000000,1,292000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783647826000000,1,331000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783648157000000,1,152000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783648310000000,1,304000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783648615000000,1,353000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783648968000000,1,199000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783649167000000,1,142000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783649310000000,1,284000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783649594000000,1,314000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783649909000000,1,118000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783650027000000,1,238000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783650265000000,1,220000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783650486000000,1,185000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783650671000000,1,116000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783650788000000,1,232000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783651021000000,1,210000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783651231000000,1,166000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783651398000000,1,332000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783651730000000,1,155000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783651886000000,1,309000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783652196000000,1,110000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783652307000000,1,221000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783652528000000,1,187000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783652715000000,1,121000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783652836000000,1,241000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783653078000000,1,227000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783653306000000,1,200000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783653506000000,1,146000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783653653000000,1,292000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783653945000000,1,330000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783654275000000,1,150000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783654425000000,1,300000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783654726000000,1,344000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783655071000000,1,180000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783655251000000,1,106000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783655358000000,1,212000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783655571000000,1,170000000,JR-KO,400,Bad request,Thread Group 1-1,text,FALSE,,20,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783655741000000,1,340000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783656081000000,1,171000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783656253000000,1,342000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783656595000000,1,174000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783656770000000,1,348000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783657118000000,1,189000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783657307000000,1,123000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783657430000000,1,245000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783657675000000,1,235000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783657911000000,1,215000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783658126000000,1,176000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783658303000000,1,352000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783658656000000,1,195000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783658852000000,1,136000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783658989000000,1,272000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783659262000000,1,291000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783659553000000,1,327000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783659880000000,1,145000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783660025000000,1,290000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783660316000000,1,324000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783660641000000,1,140000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783660782000000,1,281000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783661063000000,1,307000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783661370000000,1,105000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783661476000000,1,210000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783661687000000,1,166000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783661853000000,1,333000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783662186000000,1,157000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783662343000000,1,313000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783662657000000,1,116000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783662774000000,1,232000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783663007000000,1,211000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783663219000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783663387000000,1,337000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783663725000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783663889000000,1,329000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783664218000000,1,149000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783664367000000,1,297000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783664664000000,1,339000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783665004000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783665172000000,1,337000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783665510000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783665675000000,1,328000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783666004000000,1,148000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783666152000000,1,297000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783666450000000,1,339000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783666789000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783666958000000,1,336000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783667295000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783667460000000,1,328000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783667789000000,1,148000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783667937000000,1,297000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783668234000000,1,339000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783668574000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783668742000000,1,337000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783669079000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783669244000000,1,328000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783669573000000,1,147000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783669720000000,1,295000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783670015000000,1,335000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783670351000000,1,162000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783670513000000,1,324000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783670837000000,1,137000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783670975000000,1,274000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783671249000000,1,294000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783671544000000,1,333000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783671877000000,1,157000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783672035000000,1,314000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783672349000000,1,118000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783672468000000,1,237000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783672705000000,1,220000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783672926000000,1,185000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783673111000000,1,116000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783673228000000,1,232000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783673460000000,1,210000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783673671000000,1,165000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783673836000000,1,331000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783674167000000,1,153000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783674320000000,1,305000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783674626000000,1,100000000,JR-KO,400,Bad request,Thread Group 1-1,text,FALSE,,20,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783674727000000,1,201000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783674928000000,1,149000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783675077000000,1,297000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783675374000000,1,339000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783675714000000,1,168000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783675882000000,1,337000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783676219000000,1,164000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783676384000000,1,327000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783676712000000,1,146000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783676859000000,1,292000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783677152000000,1,331000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783677484000000,1,153000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783677638000000,1,306000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783677945000000,1,104000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783678050000000,1,208000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783678259000000,1,163000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783678422000000,1,327000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783678750000000,1,144000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783678894000000,1,289000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783679183000000,1,323000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783679507000000,1,135000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783679643000000,1,272000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783679915000000,1,290000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783680205000000,1,325000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783680530000000,1,141000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783680671000000,1,281000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783680952000000,1,307000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783681260000000,1,104000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783681365000000,1,208000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783681574000000,1,163000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783681738000000,1,326000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783682065000000,1,144000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783682209000000,1,289000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783682499000000,1,323000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783682822000000,1,137000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783682960000000,1,274000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783683234000000,1,293000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783683527000000,1,332000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783683859000000,1,155000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783684014000000,1,309000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783684323000000,1,108000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783684432000000,1,216000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783684648000000,1,178000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783684827000000,1,101000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783684928000000,1,203000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783685132000000,1,151000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783685283000000,1,303000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783685587000000,1,350000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783685938000000,1,192000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783686130000000,1,131000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783686261000000,1,261000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783686523000000,1,267000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783686790000000,1,280000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 +0,1551783687071000000,1,305000000,JR-OK,200,Good request,Thread Group 1-1,text,TRUE,,18,8,1,1,null,0,2000000,0,3000000,0,4000000 diff --git a/bin/testfiles/ns.properties b/bin/testfiles/ns.properties new file mode 100644 index 00000000000..c032483dd62 --- /dev/null +++ b/bin/testfiles/ns.properties @@ -0,0 +1 @@ +jmeter.reportgenerator.ms_ns=ns diff --git a/src/components/src/main/java/org/apache/jmeter/assertions/CompareAssertion.java b/src/components/src/main/java/org/apache/jmeter/assertions/CompareAssertion.java index 1dafa4c4ff9..98575a09295 100644 --- a/src/components/src/main/java/org/apache/jmeter/assertions/CompareAssertion.java +++ b/src/components/src/main/java/org/apache/jmeter/assertions/CompareAssertion.java @@ -77,7 +77,7 @@ private void compareTime(CompareAssertionResult result) { for (SampleResult currentResult : responses) { long currentTime = currentResult.getTime(); if (prevTime != -1) { - boolean failure = Math.abs(prevTime - currentTime) > compareTime; + boolean failure = Math.abs(prevTime - currentTime) > compareTime * 1000000L; if (failure) { markTimeFailure(result, prevResult, prevTime, currentResult, currentTime); return; diff --git a/src/components/src/main/java/org/apache/jmeter/assertions/DurationAssertion.java b/src/components/src/main/java/org/apache/jmeter/assertions/DurationAssertion.java index 4a7b2119023..407d7e99d3a 100644 --- a/src/components/src/main/java/org/apache/jmeter/assertions/DurationAssertion.java +++ b/src/components/src/main/java/org/apache/jmeter/assertions/DurationAssertion.java @@ -49,7 +49,7 @@ public AssertionResult getResult(SampleResult response) { if (duration > 0) { long responseTime=response.getTime(); // has the Sample lasted too long? - if ( responseTime > duration ) { + if ( responseTime > duration * 1000000L ) { result.setFailure(true); Object[] arguments = {responseTime, duration}; String message = MessageFormat.format( diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java index a1b177e1451..cbc8675f08d 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/GraphVisualizer.java @@ -256,8 +256,8 @@ private JPanel createYAxis() { maxYField = createYAxisField(5); minYField = createYAxisField(3); - graphYAxisPanel.add(createYAxisPanel(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "graph_results_ms" : "graph_results_ns", maxYField), BorderLayout.NORTH); // $NON-NLS-1$ - graphYAxisPanel.add(createYAxisPanel(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "graph_results_ms" : "graph_results_ns", minYField), BorderLayout.SOUTH); // $NON-NLS-1$ + graphYAxisPanel.add(createYAxisPanel(ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? "graph_results_ms" : "graph_results_ns", maxYField), BorderLayout.NORTH); // $NON-NLS-1$ + graphYAxisPanel.add(createYAxisPanel(ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? "graph_results_ms" : "graph_results_ns", minYField), BorderLayout.SOUTH); // $NON-NLS-1$ return graphYAxisPanel; } diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java index 85c9c6e3c3f..d7a6e835178 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/RespTimeGraphVisualizer.java @@ -165,7 +165,7 @@ public class RespTimeGraphVisualizer extends AbstractVisualizer implements Actio private static final String Y_AXIS_LABEL = JMeterUtils.getResString("aggregate_graph_response_time");//$NON-NLS-1$ - private static final String Y_AXIS_TITLE = JMeterUtils.getResString(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "aggregate_graph_ms" : "aggregate_graph_ns"); //$NON-NLS-1$ + private static final String Y_AXIS_TITLE = JMeterUtils.getResString(ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? "aggregate_graph_ms" : "aggregate_graph_ns"); //$NON-NLS-1$ /** * Lock used to protect list update @@ -411,7 +411,7 @@ public double[][] getData() { long keyShift = minStartTime + idx; StatCalculatorLong value = subList.get(keyShift); if (value != null) { - nanLast = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? value.getMean() / 100000.0D : value.getMean(); + nanLast = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? value.getMean() / 100000.0D : value.getMean(); data[s][idx] = nanLast; // Calculate intermediate values (if needed) int nlsize = nanList.size(); @@ -557,7 +557,7 @@ public void actionPerformed(ActionEvent event) { tempList.addAll(internalList); this.clearData(); for (RespTimeGraphDataBean data : tempList) { - SampleResult sr = new SampleResult(data.getStartTime() / 1000000L, data.getTime() / 1000000L); + SampleResult sr = new SampleResult(data.getStartTime() / 1000000L / 1000000L, data.getTime() / 1000000L / 1000000L); sr.setSampleLabel(data.getSamplerLabel()); this.add(sr); } diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java b/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java index f1fa1c1faf6..fe88824ac3b 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/SamplerResultTab.java @@ -275,15 +275,15 @@ public void setupTabPane() { statsBuff .append(JMeterUtils .getResString("view_results_load_time")).append(SPACE) //$NON-NLS-1$ - .append(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getTime() / 1000000L : sampleResult.getTime()).append(NL); + .append(ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getTime() / 1000000L : sampleResult.getTime()).append(NL); statsBuff .append(JMeterUtils .getResString("view_results_connect_time")).append(SPACE) //$NON-NLS-1$ - .append(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getConnectTime() / 1000000L : sampleResult.getConnectTime()).append(NL); + .append(ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getConnectTime() / 1000000L : sampleResult.getConnectTime()).append(NL); statsBuff .append(JMeterUtils .getResString("view_results_latency")).append(SPACE) //$NON-NLS-1$ - .append(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getLatency() / 1000000L : sampleResult.getLatency()).append(NL); + .append(ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getLatency() / 1000000L : sampleResult.getLatency()).append(NL); statsBuff .append(JMeterUtils .getResString("view_results_size_in_bytes")).append(SPACE) //$NON-NLS-1$ @@ -377,13 +377,13 @@ public void setupTabPane() { startTime)); resultModel.addRow(new RowResult( JMeterUtils.getParsedLabel("view_results_load_time"), //$NON-NLS-1$ - ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getTime() / 1000000L : sampleResult.getTime())); + ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getTime() / 1000000L : sampleResult.getTime())); resultModel.addRow(new RowResult( JMeterUtils.getParsedLabel("view_results_connect_time"), //$NON-NLS-1$ - ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getConnectTime() / 1000000L : sampleResult.getConnectTime())); + ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getConnectTime() / 1000000L : sampleResult.getConnectTime())); resultModel.addRow(new RowResult( JMeterUtils.getParsedLabel("view_results_latency"), //$NON-NLS-1$ - ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sampleResult.getLatency() / 1000000L : sampleResult.getLatency())); + ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getLatency() / 1000000L : sampleResult.getLatency())); resultModel.addRow(new RowResult( JMeterUtils .getParsedLabel("view_results_size_in_bytes"), //$NON-NLS-1$ diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java index 0928e128b61..e11b412c998 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/StatGraphVisualizer.java @@ -203,7 +203,7 @@ public class StatGraphVisualizer extends AbstractVisualizer implements Clearable private final String yAxisLabel = JMeterUtils.getResString("aggregate_graph_response_time");//$NON-NLS-1$ - private final String yAxisTitle = JMeterUtils.getResString(ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? "aggregate_graph_ms" : "aggregate_graph_ns"); //$NON-NLS-1$ + private final String yAxisTitle = JMeterUtils.getResString(ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? "aggregate_graph_ms" : "aggregate_graph_ns"); //$NON-NLS-1$ private boolean saveGraphToFile = false; diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java index 6222c9d8086..6c3b56c9be8 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/SamplerMetric.java @@ -24,6 +24,7 @@ import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; import org.apache.jmeter.control.TransactionController; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.report.processor.DescriptiveStatisticsFactory; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.util.JMeterUtils; @@ -230,7 +231,7 @@ public int getFailures() { * been added yet */ public double getOkMaxTime() { - return okResponsesStats.getMax(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? okResponsesStats.getMax() / 1000000.0D : okResponsesStats.getMax(); } /** @@ -240,7 +241,7 @@ public double getOkMaxTime() { * added yet */ public double getOkMinTime() { - return okResponsesStats.getMin(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? okResponsesStats.getMin() / 1000000.0D : okResponsesStats.getMin(); } /** @@ -249,7 +250,7 @@ public double getOkMinTime() { * @return The arithmetic mean of the stored values */ public double getOkMean() { - return okResponsesStats.getMean(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? okResponsesStats.getMean() / 1000000.0D : okResponsesStats.getMean(); } /** @@ -261,7 +262,7 @@ public double getOkMean() { * values. */ public double getOkPercentile(double percentile) { - return okResponsesStats.getPercentile(percentile); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? okResponsesStats.getMean() / 1000000.0D : okResponsesStats.getMean(); } /** @@ -271,7 +272,7 @@ public double getOkPercentile(double percentile) { * been added yet */ public double getKoMaxTime() { - return koResponsesStats.getMax(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? koResponsesStats.getMax() / 1000000.0D : koResponsesStats.getMax(); } /** @@ -281,7 +282,7 @@ public double getKoMaxTime() { * added yet */ public double getKoMinTime() { - return koResponsesStats.getMin(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? koResponsesStats.getMin() / 1000000.0D : koResponsesStats.getMin(); } /** @@ -290,7 +291,7 @@ public double getKoMinTime() { * @return The arithmetic mean of the stored values */ public double getKoMean() { - return koResponsesStats.getMean(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? koResponsesStats.getMean() / 1000000.0D : koResponsesStats.getMean(); } /** @@ -302,7 +303,7 @@ public double getKoMean() { * values. */ public double getKoPercentile(double percentile) { - return koResponsesStats.getPercentile(percentile); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? koResponsesStats.getPercentile(percentile) / 1000000.0D : koResponsesStats.getPercentile(percentile); } /** @@ -312,7 +313,7 @@ public double getKoPercentile(double percentile) { * been added yet */ public double getAllMaxTime() { - return allResponsesStats.getMax(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? allResponsesStats.getMax() / 1000000.0D : allResponsesStats.getMax(); } /** @@ -322,7 +323,7 @@ public double getAllMaxTime() { * added yet */ public double getAllMinTime() { - return allResponsesStats.getMin(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? allResponsesStats.getMin() / 1000000.0D : allResponsesStats.getMin(); } /** @@ -331,7 +332,7 @@ public double getAllMinTime() { * @return The arithmetic mean of the stored values */ public double getAllMean() { - return allResponsesStats.getMean(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? allResponsesStats.getMean() / 1000000.0D : allResponsesStats.getMean(); } /** @@ -343,7 +344,7 @@ public double getAllMean() { * values. */ public double getAllPercentile(double percentile) { - return pctResponseStats.getPercentile(percentile); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? pctResponseStats.getPercentile(percentile) / 1000000.0D : pctResponseStats.getPercentile(percentile); } /** diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxDBRawBackendListenerClient.java b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxDBRawBackendListenerClient.java index 2d18049c2e5..707c9c379f3 100644 --- a/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxDBRawBackendListenerClient.java +++ b/src/components/src/main/java/org/apache/jmeter/visualizers/backend/influxdb/InfluxDBRawBackendListenerClient.java @@ -23,6 +23,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.jmeter.config.Arguments; +import org.apache.jmeter.report.config.ReportGeneratorConfiguration; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.visualizers.backend.BackendListenerClient; import org.apache.jmeter.visualizers.backend.BackendListenerContext; @@ -125,7 +126,7 @@ public void handleSampleResults( private void addMetricFromSampleResult(SampleResult sampleResult) { String tags = "," + createTags(sampleResult); String fields = createFields(sampleResult); - long timestamp = sampleResult.getTimeStamp(); + long timestamp = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getTimeStamp() / 1000000L : sampleResult.getTimeStamp(); influxDBMetricsManager.addMetric(measurement, tags, fields, timestamp); } @@ -145,9 +146,9 @@ static String createTags(SampleResult sampleResult) { @VisibleForTesting static String createFields(SampleResult sampleResult) { - long duration = sampleResult.getTime(); - long latency = sampleResult.getLatency(); - long connectTime = sampleResult.getConnectTime(); + long duration = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getTime() / 1000000L : sampleResult.getTime(); + long latency = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getLatency() / 1000000L : sampleResult.getLatency(); + long connectTime = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sampleResult.getConnectTime() / 1000000L : sampleResult.getConnectTime(); return "duration=" + duration + ",ttfb=" + latency + ",connectTime=" + connectTime; diff --git a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java index 6d762155bcc..1a2386dc375 100644 --- a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java +++ b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricFixedModeTest.java @@ -28,8 +28,8 @@ public class SamplerMetricFixedModeTest { - private static final int DEFAULT_ELAPSED_TIME = 1_000 * 1000000; - private static final double ALLOWED_DELTA = 25.0 * 1000000.0D; + private static final int DEFAULT_ELAPSED_TIME = 1_000; + private static final double ALLOWED_DELTA = 25.0; @BeforeEach @SuppressWarnings("deprecation") @@ -95,7 +95,7 @@ private SampleResult createSampleResult(boolean success) { result.setSampleCount(1); result.setErrorCount(success ? 0 : 1); result.sampleStart(); - result.setEndTime(result.getStartTime() + DEFAULT_ELAPSED_TIME); + result.setEndTime_ns(result.getStartTime() + DEFAULT_ELAPSED_TIME * 1000000L); result.setSentBytes(1000); result.setBytes(2000L); return result; @@ -116,7 +116,7 @@ private SampleResult createSampleResultWithSubresults(boolean success) { result.setSuccessful(success); result.addSubResult(createSampleResult(success)); result.addSubResult(createSampleResult(success)); - result.setEndTime(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getEndTime).max().orElse(0)); + result.setEndTime_ns(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getEndTime).max().orElse(0)); result.setBytes(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getBytesAsLong).sum()); result.setSentBytes(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getSentBytes).sum()); result.setResponseMessage("Number of samples in transaction : "); // This is a constant in TransactionController diff --git a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java index 243a931f8ab..f42386fe1ce 100644 --- a/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java +++ b/src/components/src/test/java/org/apache/jmeter/visualizers/backend/SamplerMetricTimedModeTest.java @@ -28,8 +28,8 @@ public class SamplerMetricTimedModeTest { - private static final int DEFAULT_ELAPSED_TIME = 1_000 * 1000000; - private static final double ALLOWED_DELTA = 25.0 * 1000000.0D; + private static final int DEFAULT_ELAPSED_TIME = 1_000; + private static final double ALLOWED_DELTA = 25.0; @BeforeEach @SuppressWarnings("deprecation") @@ -86,7 +86,7 @@ private SampleResult createSampleResult(boolean success) { result.sampleStart(); result.setSentBytes(1000); result.setBytes(2000L); - result.setEndTime(result.getStartTime() + DEFAULT_ELAPSED_TIME); + result.setEndTime_ns(result.getStartTime() + DEFAULT_ELAPSED_TIME * 1000000L); return result; } @@ -98,7 +98,7 @@ private SampleResult createSampleResultWithSubresults(boolean success) { result.setSuccessful(success); result.addSubResult(createSampleResult(success)); result.addSubResult(createSampleResult(success)); - result.setEndTime(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getEndTime).max().orElse(0)); + result.setEndTime_ns(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getEndTime).max().orElse(0)); result.setBytes(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getBytesAsLong).sum()); result.setSentBytes(Arrays.stream(result.getSubResults()).mapToLong(SampleResult::getSentBytes).sum()); result.setResponseMessage("Number of samples in transaction : "); // This is a constant in TransactionController diff --git a/src/components/src/test/kotlin/org/apache/jmeter/assertions/CompareAssertionTest.kt b/src/components/src/test/kotlin/org/apache/jmeter/assertions/CompareAssertionTest.kt index c33bac5faeb..2d7e008c94a 100644 --- a/src/components/src/test/kotlin/org/apache/jmeter/assertions/CompareAssertionTest.kt +++ b/src/components/src/test/kotlin/org/apache/jmeter/assertions/CompareAssertionTest.kt @@ -39,7 +39,6 @@ class CompareAssertionTest { fun simpleResult(data: String, elapsed: Long) = SampleResult(0, elapsed).apply { setResponseData(data, Charsets.UTF_8.name()) - sampleEnd() } @JvmStatic diff --git a/src/core/src/main/java/org/apache/jmeter/control/TransactionController.java b/src/core/src/main/java/org/apache/jmeter/control/TransactionController.java index 467aaf2fa30..09b969a27cf 100644 --- a/src/core/src/main/java/org/apache/jmeter/control/TransactionController.java +++ b/src/core/src/main/java/org/apache/jmeter/control/TransactionController.java @@ -215,7 +215,7 @@ private Sampler nextWithoutTransactionSampler() { long processingTimeOfLastChild = res.currentTimeInMillis() - prevEndTime; pauseTime += processingTimeOfLastChild; } - res.setIdleTime(pauseTime+res.getIdleTime()); + res.setIdleTime_ns(pauseTime+res.getIdleTime()); res.sampleEnd(); res.setResponseMessage( TransactionController.NUMBER_OF_SAMPLES_IN_TRANSACTION_PREFIX @@ -252,7 +252,7 @@ public static boolean isFromTransactionController(SampleResult res) { public void triggerEndOfLoop() { if(!isGenerateParentSample()) { if (res != null) { - res.setIdleTime(pauseTime + res.getIdleTime()); + res.setIdleTime_ns(pauseTime + res.getIdleTime()); res.sampleEnd(); res.setSuccessful(TRUE.equals(JMeterContextService.getContext().getVariables().get(JMeterThread.LAST_SAMPLE_OK))); res.setResponseMessage( @@ -320,8 +320,8 @@ public void sampleOccurred(SampleEvent se) { } res.setAllThreads(sampleResult.getAllThreads()); res.setGroupThreads(sampleResult.getGroupThreads()); - res.setLatency(res.getLatency() + sampleResult.getLatency()); - res.setConnectTime(res.getConnectTime() + sampleResult.getConnectTime()); + res.setLatency_ns(res.getLatency() + sampleResult.getLatency()); + res.setConnectTime_ns(res.getConnectTime() + sampleResult.getConnectTime()); } } } diff --git a/src/core/src/main/java/org/apache/jmeter/control/TransactionSampler.java b/src/core/src/main/java/org/apache/jmeter/control/TransactionSampler.java index b8ee999cb62..b1b8899cdb5 100644 --- a/src/core/src/main/java/org/apache/jmeter/control/TransactionSampler.java +++ b/src/core/src/main/java/org/apache/jmeter/control/TransactionSampler.java @@ -132,11 +132,11 @@ protected void setTransactionDone() { // Bug 50080 (not include pause time when generate parent) if (!transactionController.isIncludeTimers()) { long end = transactionSampleResult.currentTimeInMillis(); - transactionSampleResult.setIdleTime(end + transactionSampleResult.setIdleTime_ns(end - transactionSampleResult.getStartTime() - totalTime); - transactionSampleResult.setEndTime(end); + transactionSampleResult.setEndTime_ns(end); } - transactionSampleResult.setConnectTime(totalConnectTime); + transactionSampleResult.setConnectTime_ns(totalConnectTime); } protected void setSubSampler(Sampler subSampler) { diff --git a/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java b/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java index 06706f475da..91d5705ab0d 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java +++ b/src/core/src/main/java/org/apache/jmeter/report/config/ReportGeneratorConfiguration.java @@ -126,8 +126,8 @@ public class ReportGeneratorConfiguration { public static final String SUBCONF_KEY_CLASSNAME = "classname"; public static final String SUBCONF_KEY_PROPERTY = "property"; - public static final String jmeter_reportgenerator_msns = "ms".equalsIgnoreCase(JMeterUtils.getProperty(REPORT_GENERATOR_KEY_PREFIX + KEY_DELIMITER + "msns")) ? "ms" : "ns".equalsIgnoreCase(JMeterUtils.getProperty(REPORT_GENERATOR_KEY_PREFIX + KEY_DELIMITER + "msns")) ? "ns" : "ms"; - public static final boolean jmeter_reportgenerator_msns_isMs = "ms".equals(jmeter_reportgenerator_msns); + public static final String jmeter_reportgenerator_ms_ns = "ms".equalsIgnoreCase(JMeterUtils.getProperty(REPORT_GENERATOR_KEY_PREFIX + KEY_DELIMITER + "ms_ns")) ? "ms" : "ns".equalsIgnoreCase(JMeterUtils.getProperty(REPORT_GENERATOR_KEY_PREFIX + KEY_DELIMITER + "ms_ns")) ? "ns" : "ms"; + public static final boolean jmeter_reportgenerator_ms_ns_isMs = "ms".equals(jmeter_reportgenerator_ms_ns); private static final class ExporterConfigurationFactory implements SubConfigurationFactory { diff --git a/src/core/src/main/java/org/apache/jmeter/report/core/Sample.java b/src/core/src/main/java/org/apache/jmeter/report/core/Sample.java index 62ffac26fdf..4fb90e9c885 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/core/Sample.java +++ b/src/core/src/main/java/org/apache/jmeter/report/core/Sample.java @@ -148,7 +148,10 @@ public String toString() { * @return the time stamp */ public long getTimestamp() { - return getData(long.class, CSVSaveService.TIME_STAMP); + if (metadata.indexOf(CSVSaveService.TIME_STAMP_NS) > -1) { + return getData(long.class, CSVSaveService.TIME_STAMP_NS); + } + return getData(long.class, CSVSaveService.TIME_STAMP) * 1000000L; } /** @@ -157,7 +160,10 @@ public long getTimestamp() { * @return the elapsed time stored in the sample */ public long getElapsedTime() { - return getData(long.class, CSVSaveService.CSV_ELAPSED); + if (metadata.indexOf(CSVSaveService.CSV_ELAPSED_NS) > -1) { + return getData(long.class, CSVSaveService.CSV_ELAPSED_NS); + } + return getData(long.class, CSVSaveService.CSV_ELAPSED) * 1000000L; } /** @@ -242,7 +248,10 @@ public String getResponseMessage() { * @return the latency stored in the sample */ public long getLatency() { - return getData(long.class, CSVSaveService.CSV_LATENCY); + if (metadata.indexOf(CSVSaveService.CSV_LATENCY_NS) > -1) { + return getData(long.class, CSVSaveService.CSV_LATENCY_NS); + } + return getData(long.class, CSVSaveService.CSV_LATENCY) * 1000000L; } /** @@ -251,8 +260,11 @@ public long getLatency() { * @return the connect time stored in the sample or 0 is column is not in results */ public long getConnectTime() { + if (metadata.indexOf(CSVSaveService.CSV_CONNECT_TIME_NS) > -1) { + return getData(long.class, CSVSaveService.TIME_STAMP_NS); + } if(metadata.indexOf(CSVSaveService.CSV_CONNECT_TIME) >= 0) { - return getData(long.class, CSVSaveService.CSV_CONNECT_TIME); + return getData(long.class, CSVSaveService.CSV_CONNECT_TIME) * 1000000L; } else { return 0L; } diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java index 50dbdf31c56..28f8e43e69b 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java +++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/HtmlTemplateExporter.java @@ -438,7 +438,7 @@ public void export(SampleContext context, File file, // Add the overall filter property to the context addToContext(DATA_CTX_OVERALL_FILTER, configuration.getSampleFilter(), dataContext); - dataContext.put("jmeter_reportgenerator_msns", ReportGeneratorConfiguration.jmeter_reportgenerator_msns); + dataContext.put("jmeter_reportgenerator_ms_ns", ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns); // Walk template directory to copy files and process templated ones Configuration templateCfg = new Configuration(Configuration.VERSION_2_3_30); diff --git a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java index f914558294f..24134e8e507 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/dashboard/ReportGenerator.java @@ -500,7 +500,7 @@ private FilterConsumer createNameFilter() { */ private static AggregateConsumer createEndDateConsumer() { AggregateConsumer endDateConsumer = new AggregateConsumer( - new MaxAggregator(), sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (double) sample.getEndTime() : sample.getEndTime() / 1000000.0D); + new MaxAggregator(), sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? (double) sample.getEndTime() : sample.getEndTime() / 1000000.0D); endDateConsumer.setName(END_DATE_CONSUMER_NAME); return endDateConsumer; } @@ -510,7 +510,7 @@ private static AggregateConsumer createEndDateConsumer() { */ private static AggregateConsumer createBeginDateConsumer() { AggregateConsumer beginDateConsumer = new AggregateConsumer( - new MinAggregator(), sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (double) sample.getStartTime() : sample.getStartTime() / 1000000.0D); + new MinAggregator(), sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? (double) sample.getStartTime() : sample.getStartTime() / 1000000.0D); beginDateConsumer.setName(BEGIN_DATE_CONSUMER_NAME); return beginDateConsumer; } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java index 5fcd5076672..e39cbe8e0f2 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/MaxAggregator.java @@ -46,7 +46,7 @@ public long getCount() { */ @Override public double getResult() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? value / 1000000.0D : value; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? value / 1000000.0D : value; } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java index 044875aa247..5f216f92311 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/MeanAggregator.java @@ -46,7 +46,7 @@ public long getCount() { */ @Override public double getResult() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? mean.getResult() / 1000000.0D : mean.getResult(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? mean.getResult() / 1000000.0D : mean.getResult(); } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java index 1e198d4e3df..4671601bff6 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/MinAggregator.java @@ -46,7 +46,7 @@ public long getCount() { */ @Override public double getResult() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? value / 1000000.0D : value; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? value / 1000000.0D : value; } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java b/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java index 6a72d0708e8..4214d5f2653 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/PercentileAggregator.java @@ -71,7 +71,7 @@ public long getCount() { */ @Override public double getResult() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? statistics.getPercentile(percentileIndex) / 1000000.0D : statistics.getPercentile(percentileIndex); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? statistics.getPercentile(percentileIndex) / 1000000.0D : statistics.getPercentile(percentileIndex); } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java b/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java index 1ee61715f28..2c277923959 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/StatisticsSummaryData.java @@ -52,7 +52,7 @@ public long getElapsedTime() { * @return the firstTime */ public final long getFirstTime() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? firstTime / 1000000L : firstTime; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? firstTime / 1000000L : firstTime; } /** @@ -71,7 +71,7 @@ public final void setFirstTime(long firstTime) { * @return the endTime */ public final long getEndTime() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? endTime / 1000000L : endTime; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? endTime / 1000000L : endTime; } /** @@ -137,7 +137,7 @@ public final void setTotal(long total) { * @return the min */ public final long getMin() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? min / 1000000L : min; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? min / 1000000L : min; } /** @@ -152,7 +152,7 @@ public final void setMin(long min) { * @return the max */ public final long getMax() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? max / 1000000L : max; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? max / 1000000L : max; } /** diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java index f6cb8570de0..11abc692d0e 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimeDistributionGraphConsumer.java @@ -68,7 +68,7 @@ public final void setGranularity(long granularity) { protected final GraphKeysSelector createKeysSelector() { return sample -> { long elapsed = sample.getElapsedTime(); - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (elapsed - elapsed % (granularity * 1000000L)) / 1000000.0D : (double) elapsed - elapsed % (granularity * 1000000L); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? (elapsed - elapsed % (granularity * 1000000L)) / 1000000.0D : (double) elapsed - elapsed % (granularity * 1000000L); }; } diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java index 6d5d875cd33..041140580c0 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/ResponseTimePercentilesGraphConsumer.java @@ -57,7 +57,7 @@ public void initialize() { */ @Override protected final GraphKeysSelector createKeysSelector() { - return sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sample.getElapsedTime() / 1000000.0D : (double) sample.getElapsedTime(); + return sample -> ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sample.getElapsedTime() / 1000000.0D : (double) sample.getElapsedTime(); } /* diff --git a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java index d0a3b266703..2ac52143722 100644 --- a/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java +++ b/src/core/src/main/java/org/apache/jmeter/report/processor/graph/impl/SyntheticResponseTimeDistributionGraphConsumer.java @@ -125,9 +125,9 @@ protected Map createGroupInfos() { protected void initializeExtraResults(MapResultData parentResult) { ListResultData listResultData = new ListResultData(); String[] seriesLabels = new String[]{ - SATISFIED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns }), - TOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns }), - UNTOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns }), + SATISFIED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns }), + TOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns }), + UNTOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns }), FAILED_LABEL }; String[] colors = new String[]{ @@ -192,10 +192,10 @@ public void setToleratedThreshold(long toleratedThreshold) { private void formatLabels() { this.satisfiedLabels = Collections.singletonList( - SATISFIED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns })); + SATISFIED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns })); this.toleratedLabels = Collections.singletonList( - TOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns })); + TOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? satisfiedThreshold : satisfiedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns })); this.untoleratedLabels = Collections.singletonList( - UNTOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_msns })); + UNTOLERATED_LABEL.format(new Object[] { ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? toleratedThreshold : toleratedThreshold * 1000000L, ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns })); } } diff --git a/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java b/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java index fc49813c98e..5f1ea8d39dd 100644 --- a/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java +++ b/src/core/src/main/java/org/apache/jmeter/reporters/SummariserRunningSample.java @@ -184,7 +184,7 @@ public long getAverage() { if (counter == 0) { return 0; } - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? runningSum.divide(BigInteger.valueOf(counter)).divide(BigInteger.valueOf(1000000L)).longValue() : runningSum.divide(BigInteger.valueOf(counter)).longValue(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? runningSum.divide(BigInteger.valueOf(counter)).divide(BigInteger.valueOf(1000000L)).longValue() : runningSum.divide(BigInteger.valueOf(counter)).longValue(); } /** @@ -227,7 +227,7 @@ public double getErrorPercentage() { * @return the time in milliseconds of the slowest sample. */ public long getMax() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? max / 1000000L : max; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? max / 1000000L : max; } /** @@ -236,7 +236,7 @@ public long getMax() { * @return the time in milliseconds of the quickest sample. */ public long getMin() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? min / 1000000L : min; + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? min / 1000000L : min; } /** diff --git a/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java b/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java index 42352a6bd09..a9294e337bd 100644 --- a/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java +++ b/src/core/src/main/java/org/apache/jmeter/samplers/SampleResult.java @@ -382,7 +382,7 @@ protected SampleResult(long elapsed, boolean atend) { */ public SampleResult(long stamp, long elapsed) { this(); - stampAndTime(stamp, elapsed); + stampAndTime(stamp * 1000000L, elapsed * 1000000L); } private long initOffset(){ @@ -437,7 +437,7 @@ public static SampleResult createTestSample(long start, long end) { * @return sample that starts 'now' and ends elapsed milliseconds later */ public static SampleResult createTestSample(long elapsed) { - long now = ms + System.nanoTime() - ns; + long now = System.currentTimeMillis(); return createTestSample(now, now + elapsed); } @@ -488,6 +488,13 @@ private void stampAndTime(long stamp, long elapsed) { * set already */ public void setStampAndTime(long stamp, long elapsed) { + setStampAndTime_ns(stamp * 1000000L, elapsed * 1000000L); + } + + /** + * @see #setStampAndTime, But param in nanosecond format + */ + public void setStampAndTime_ns(long stamp, long elapsed) { if (startTime != 0 || endTime != 0){ throw new IllegalStateException("Calling setStampAndTime() after start/end times have been set"); } @@ -650,7 +657,7 @@ public void addSubResult(SampleResult subResult, boolean renameSubResults) { subResult.setThreadName(tn); // Extend the time to the end of the added sample - setEndTime(Math.max(getEndTime(), subResult.getEndTime() + nanoTimeOffset - subResult.nanoTimeOffset)); // Bug 51855 + setEndTime_ns(Math.max(getEndTime(), subResult.getEndTime() + nanoTimeOffset - subResult.nanoTimeOffset)); // Bug 51855 // Include the byte count for the added sample setBytes(getBytesAsLong() + subResult.getBytesAsLong()); setSentBytes(getSentBytes() + subResult.getSentBytes()); @@ -1146,6 +1153,13 @@ public long getStartTime() { * allow the original start time to be kept */ protected final void setStartTime(long start) { + setStartTime_ns(start * 1000000L); + } + + /** + * @see #setStartTime , But param in nanosecond format + */ + protected final void setStartTime_ns(long start) { startTime = start; if (START_TIMESTAMP) { timeStamp = startTime; @@ -1153,6 +1167,13 @@ protected final void setStartTime(long start) { } public void setEndTime(long end) { + setEndTime_ns(end * 1000000L); + } + + /** + * @see #setEndTime , But param in nanosecond format + */ + public void setEndTime_ns(long end) { endTime = end; if (!START_TIMESTAMP) { timeStamp = endTime; @@ -1170,6 +1191,13 @@ public void setEndTime(long end) { * @param idle long */ public void setIdleTime(long idle) { + setIdleTime_ns(idle * 1000000L); + } + + /** + * @see #setIdleTime , But param in nanosecond format + */ + public void setIdleTime_ns(long idle) { idleTime = idle; } @@ -1184,7 +1212,7 @@ private void setTimes(long start, long end) { */ public void sampleStart() { if (startTime == 0) { - setStartTime(currentTimeInMillis()); + setStartTime_ns(currentTimeInMillis()); } else { log.error("sampleStart called twice", new Throwable(INVALID_CALL_SEQUENCE_MSG)); } @@ -1196,7 +1224,7 @@ public void sampleStart() { */ public void sampleEnd() { if (endTime == 0) { - setEndTime(currentTimeInMillis()); + setEndTime_ns(currentTimeInMillis()); } else { log.error("sampleEnd called twice", new Throwable(INVALID_CALL_SEQUENCE_MSG)); } @@ -1385,6 +1413,13 @@ public void latencyEnd() { * The latency to set. */ public void setLatency(long latency) { + setLatency_ns(latency * 1000000L); + } + + /** + * @see #setLatency , But param in nanosecond format + */ + public void setLatency_ns(long latency) { this.latency = latency; } @@ -1408,6 +1443,13 @@ public void connectEnd() { * @param time The connect time to set. */ public void setConnectTime(long time) { + setConnectTime_ns(time * 1000000L); + } + + /** + * @see #setConnectTime , But param in nanosecond format + */ + public void setConnectTime_ns(long time) { this.connectTime = time; } @@ -1418,6 +1460,13 @@ public void setConnectTime(long time) { * The timeStamp to set. */ public void setTimeStamp(long timeStamp) { + setTimeStamp_ns(timeStamp * 1000000L); + } + + /** + * @see #setTimeStamp , But param in nanosecond format + */ + public void setTimeStamp_ns(long timeStamp) { this.timeStamp = timeStamp; } diff --git a/src/core/src/main/java/org/apache/jmeter/samplers/StatisticalSampleResult.java b/src/core/src/main/java/org/apache/jmeter/samplers/StatisticalSampleResult.java index 77b1bf65c65..8f6da8a3d1b 100644 --- a/src/core/src/main/java/org/apache/jmeter/samplers/StatisticalSampleResult.java +++ b/src/core/src/main/java/org/apache/jmeter/samplers/StatisticalSampleResult.java @@ -51,6 +51,10 @@ public StatisticalSampleResult(long stamp, long elapsed) { this.elapsed = elapsed; } + public StatisticalSampleResult(long elapsed) { + this.elapsed = elapsed; + } + /** * Create a statistical sample result from an ordinary sample result. * @@ -82,14 +86,14 @@ public void add(SampleResult res) { // Set start/end times if (getStartTime()==0){ // Bug 40954 - ensure start time gets started! - this.setStartTime(res.getStartTime()); + this.setStartTime_ns(res.getStartTime()); } else { - this.setStartTime(Math.min(getStartTime(), res.getStartTime())); + this.setStartTime_ns(Math.min(getStartTime(), res.getStartTime())); } - this.setEndTime(Math.max(getEndTime(), res.getEndTime())); + this.setEndTime_ns(Math.max(getEndTime(), res.getEndTime())); - setLatency(getLatency()+ res.getLatency()); - setConnectTime(getConnectTime()+ res.getConnectTime()); + setLatency_ns(getLatency()+ res.getLatency()); + setConnectTime_ns(getConnectTime()+ res.getConnectTime()); elapsed += res.getTime(); } diff --git a/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java b/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java index 0a34f495998..8ddfe042999 100644 --- a/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java +++ b/src/core/src/main/java/org/apache/jmeter/save/CSVSaveService.java @@ -85,12 +85,14 @@ public final class CSVSaveService { public static final String SUCCESSFUL = "success"; // $NON-NLS-1$ public static final String THREAD_NAME = "threadName"; // $NON-NLS-1$ public static final String TIME_STAMP = "timeStamp"; // $NON-NLS-1$ + public static final String TIME_STAMP_NS = "timeStamp_ns"; // $NON-NLS-1$ // --------------------------------------------------------------------- // ADDITIONAL CSV RESULT FILE CONSTANTS AND FIELD NAME CONSTANTS // --------------------------------------------------------------------- public static final String CSV_ELAPSED = "elapsed"; // $NON-NLS-1$ + public static final String CSV_ELAPSED_NS = "elapsed_ns"; // $NON-NLS-1$ public static final String CSV_BYTES = "bytes"; // $NON-NLS-1$ public static final String CSV_SENT_BYTES = "sentBytes"; // $NON-NLS-1$ public static final String CSV_THREAD_COUNT1 = "grpThreads"; // $NON-NLS-1$ @@ -100,10 +102,13 @@ public final class CSVSaveService { public static final String CSV_URL = "URL"; // $NON-NLS-1$ public static final String CSV_FILENAME = "Filename"; // $NON-NLS-1$ public static final String CSV_LATENCY = "Latency"; // $NON-NLS-1$ + public static final String CSV_LATENCY_NS = "Latency_ns"; // $NON-NLS-1$ public static final String CSV_CONNECT_TIME = "Connect"; // $NON-NLS-1$ + public static final String CSV_CONNECT_TIME_NS = "Connect_ns"; // $NON-NLS-1$ public static final String CSV_ENCODING = "Encoding"; // $NON-NLS-1$ public static final String CSV_HOSTNAME = "Hostname"; // $NON-NLS-1$ public static final String CSV_IDLETIME = "IdleTime"; // $NON-NLS-1$ + public static final String CSV_IDLETIME_NS = "IdleTime_ns"; // $NON-NLS-1$ // Used to enclose variable name labels, to distinguish from any of the // above labels @@ -245,9 +250,21 @@ private static SampleEvent makeResultFromDelimitedString( throw new ParseException("No date-time format found matching "+text,-1); } } + try { + timeStamp = Long.parseLong(parts[i++]); + } catch (NumberFormatException e) { + i--; + timeStamp *= 100000L; + } } else if (saveConfig.strictDateFormatter() != null) { Date stamp = saveConfig.strictDateFormatter().parse(text); timeStamp = stamp.getTime(); + try { + timeStamp = Long.parseLong(parts[i++]); + } catch (NumberFormatException e) { + i--; + timeStamp *= 100000L; + } } else { // can this happen? final String msg = "Unknown timestamp format"; log.warn(msg); @@ -259,14 +276,22 @@ private static SampleEvent makeResultFromDelimitedString( field = CSV_ELAPSED; text = parts[i++]; elapsed = Long.parseLong(text); + try { + elapsed = Long.parseLong(parts[i++]); + } catch (NumberFormatException e) { + i--; + elapsed *= 100000L; + } } if (saveConfig.saveSampleCount()) { @SuppressWarnings("deprecation") - StatisticalSampleResult sampleResult = new StatisticalSampleResult(timeStamp, elapsed); + StatisticalSampleResult sampleResult = new StatisticalSampleResult(elapsed); + sampleResult.setStampAndTime_ns(timeStamp, elapsed); result = sampleResult; } else { - result = new SampleResult(timeStamp, elapsed); + result = new SampleResult(); + result.setStampAndTime_ns(timeStamp, elapsed); } if (saveConfig.saveLabel()) { @@ -345,6 +370,11 @@ private static SampleEvent makeResultFromDelimitedString( field = CSV_LATENCY; text = parts[i++]; result.setLatency(Long.parseLong(text)); + try { + result.setLatency_ns(Long.parseLong(parts[i++])); + } catch (NumberFormatException e) { + i--; + } } if (saveConfig.saveEncoding()) { @@ -371,11 +401,21 @@ private static SampleEvent makeResultFromDelimitedString( field = CSV_IDLETIME; text = parts[i++]; result.setIdleTime(Long.parseLong(text)); + try { + result.setIdleTime_ns(Long.parseLong(parts[i++])); + } catch (NumberFormatException e) { + i--; + } } if (saveConfig.saveConnectTime()) { field = CSV_CONNECT_TIME; text = parts[i++]; result.setConnectTime(Long.parseLong(text)); + try { + result.setConnectTime_ns(Long.parseLong(parts[i++])); + } catch (NumberFormatException e) { + i--; + } } if (i + saveConfig.getVarCount() < parts.length) { @@ -416,8 +456,8 @@ public static String printableFieldNamesToString( StringBuilder text = new StringBuilder(); String delim = saveConfig.getDelimiter(); - appendFields(saveConfig.saveTimestamp(), text, delim, TIME_STAMP); - appendFields(saveConfig.saveTime(), text, delim, CSV_ELAPSED); + appendFields(saveConfig.saveTimestamp(), text, delim, TIME_STAMP, TIME_STAMP_NS); + appendFields(saveConfig.saveTime(), text, delim, CSV_ELAPSED, CSV_ELAPSED_NS); appendFields(saveConfig.saveLabel(), text, delim, LABEL); appendFields(saveConfig.saveCode(), text, delim, RESPONSE_CODE); appendFields(saveConfig.saveMessage(), text, delim, RESPONSE_MESSAGE); @@ -430,12 +470,12 @@ public static String printableFieldNamesToString( appendFields(saveConfig.saveThreadCounts(), text, delim, CSV_THREAD_COUNT1, CSV_THREAD_COUNT2); appendFields(saveConfig.saveUrl(), text, delim, CSV_URL); appendFields(saveConfig.saveFileName(), text, delim, CSV_FILENAME); - appendFields(saveConfig.saveLatency(), text, delim, CSV_LATENCY); + appendFields(saveConfig.saveLatency(), text, delim, CSV_LATENCY, CSV_LATENCY_NS); appendFields(saveConfig.saveEncoding(), text, delim, CSV_ENCODING); appendFields(saveConfig.saveSampleCount(), text, delim, CSV_SAMPLE_COUNT, CSV_ERROR_COUNT); appendFields(saveConfig.saveHostname(), text, delim, CSV_HOSTNAME); - appendFields(saveConfig.saveIdleTime(), text, delim, CSV_IDLETIME); - appendFields(saveConfig.saveConnectTime(), text, delim, CSV_CONNECT_TIME); + appendFields(saveConfig.saveIdleTime(), text, delim, CSV_IDLETIME, CSV_IDLETIME_NS); + appendFields(saveConfig.saveConnectTime(), text, delim, CSV_CONNECT_TIME, CSV_CONNECT_TIME_NS); for (int i = 0; i < SampleEvent.getVarCount(); i++) { text.append(VARIABLE_NAME_QUOTE_CHAR); @@ -473,7 +513,9 @@ private static void appendFields(final boolean condition, StringBuilder textBuff static { headerLabelMethods.put(TIME_STAMP, new Functor("setTimestamp")); + headerLabelMethods.put(TIME_STAMP_NS, new Functor("setTimestamp")); headerLabelMethods.put(CSV_ELAPSED, new Functor("setTime")); + headerLabelMethods.put(CSV_ELAPSED_NS, new Functor("setTime")); headerLabelMethods.put(LABEL, new Functor("setLabel")); headerLabelMethods.put(RESPONSE_CODE, new Functor("setCode")); headerLabelMethods.put(RESPONSE_MESSAGE, new Functor("setMessage")); @@ -493,6 +535,7 @@ private static void appendFields(final boolean condition, StringBuilder textBuff headerLabelMethods.put(CSV_URL, new Functor("setUrl")); headerLabelMethods.put(CSV_FILENAME, new Functor("setFileName")); headerLabelMethods.put(CSV_LATENCY, new Functor("setLatency")); + headerLabelMethods.put(CSV_LATENCY_NS, new Functor("setLatency")); headerLabelMethods.put(CSV_ENCODING, new Functor("setEncoding")); // Both these are needed in the list even though they set the same // variable @@ -500,7 +543,9 @@ private static void appendFields(final boolean condition, StringBuilder textBuff headerLabelMethods.put(CSV_ERROR_COUNT, new Functor("setSampleCount")); headerLabelMethods.put(CSV_HOSTNAME, new Functor("setHostname")); headerLabelMethods.put(CSV_IDLETIME, new Functor("setIdleTime")); + headerLabelMethods.put(CSV_IDLETIME_NS, new Functor("setIdleTime")); headerLabelMethods.put(CSV_CONNECT_TIME, new Functor("setConnectTime")); + headerLabelMethods.put(CSV_CONNECT_TIME_NS, new Functor("setConnectTime")); } /** @@ -851,6 +896,7 @@ public static String resultToDelimitedString(SampleEvent event, StringQuoter text = new StringQuoter(delimiter.charAt(0)); if (saveConfig.saveTimestamp()) { if (saveConfig.printMilliseconds()) { + text.append(sample.getTimeStamp() / 1000000L); text.append(sample.getTimeStamp()); } else if (saveConfig.threadSafeLenientFormatter() != null) { String stamp = saveConfig.threadSafeLenientFormatter().format( @@ -860,6 +906,7 @@ public static String resultToDelimitedString(SampleEvent event, } if (saveConfig.saveTime()) { + text.append(sample.getTime() / 1000000L); text.append(sample.getTime()); } @@ -918,6 +965,7 @@ public static String resultToDelimitedString(SampleEvent event, } if (saveConfig.saveLatency()) { + text.append(sample.getLatency() / 1000000L); text.append(sample.getLatency()); } @@ -936,10 +984,12 @@ public static String resultToDelimitedString(SampleEvent event, } if (saveConfig.saveIdleTime()) { + text.append(sample.getIdleTime() / 1000000L); text.append(sample.getIdleTime()); } if (saveConfig.saveConnectTime()) { + text.append(sample.getConnectTime() / 1000000L); text.append(sample.getConnectTime()); } diff --git a/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java b/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java index 857bb3f959e..a0d55ed1fb7 100644 --- a/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java +++ b/src/core/src/main/java/org/apache/jmeter/save/converters/SampleResultConverter.java @@ -72,7 +72,9 @@ public class SampleResultConverter extends AbstractCollectionConverter { private static final String ATT_HOSTNAME = "hn"; //$NON-NLS-1$ private static final String ATT_LABEL = "lb"; //$NON-NLS-1$ private static final String ATT_LATENCY = "lt"; //$NON-NLS-1$ + private static final String ATT_LATENCY_NS = "lt_ns"; //$NON-NLS-1$ private static final String ATT_CONNECT_TIME = "ct"; //$NON-NLS-1$ + private static final String ATT_CONNECT_TIME_NS = "ct_ns"; //$NON-NLS-1$ private static final String ATT_ALL_THRDS = "na"; //$NON-NLS-1$ private static final String ATT_GRP_THRDS = "ng"; //$NON-NLS-1$ @@ -87,9 +89,12 @@ public class SampleResultConverter extends AbstractCollectionConverter { private static final String ATT_SUCCESS = "s"; //$NON-NLS-1$ private static final String ATT_SAMPLE_COUNT = "sc"; //$NON-NLS-1$ private static final String ATT_TIME = "t"; //$NON-NLS-1$ + private static final String ATT_TIME_NS = "t_ns"; //$NON-NLS-1$ private static final String ATT_IDLETIME = "it"; //$NON-NLS-1$ + private static final String ATT_IDLETIME_NS = "it_ns"; //$NON-NLS-1$ private static final String ATT_THREADNAME = "tn"; //$NON-NLS-1$ private static final String ATT_TIME_STAMP = "ts"; //$NON-NLS-1$ + private static final String ATT_TIME_STAMP_NS = "ts_ns"; //$NON-NLS-1$ /** * Returns the converter version; used to check for possible @@ -281,19 +286,24 @@ protected void saveAssertions(HierarchicalStreamWriter writer, MarshallingContex protected void setAttributes(HierarchicalStreamWriter writer, MarshallingContext context, SampleResult res, SampleSaveConfiguration save) { if (save.saveTime()) { - writer.addAttribute(ATT_TIME, Long.toString(res.getTime())); + writer.addAttribute(ATT_TIME, Long.toString(res.getTime() / 1000000L)); + writer.addAttribute(ATT_TIME_NS, Long.toString(res.getTime())); } if (save.saveIdleTime()) { - writer.addAttribute(ATT_IDLETIME, Long.toString(res.getIdleTime())); + writer.addAttribute(ATT_IDLETIME, Long.toString(res.getIdleTime() / 1000000L)); + writer.addAttribute(ATT_IDLETIME_NS, Long.toString(res.getIdleTime())); } if (save.saveLatency()) { - writer.addAttribute(ATT_LATENCY, Long.toString(res.getLatency())); + writer.addAttribute(ATT_LATENCY, Long.toString(res.getLatency() / 1000000L)); + writer.addAttribute(ATT_LATENCY_NS, Long.toString(res.getLatency())); } if (save.saveConnectTime()) { - writer.addAttribute(ATT_CONNECT_TIME, Long.toString(res.getConnectTime())); + writer.addAttribute(ATT_CONNECT_TIME, Long.toString(res.getConnectTime() / 1000000L)); + writer.addAttribute(ATT_CONNECT_TIME_NS, Long.toString(res.getConnectTime())); } if (save.saveTimestamp()) { - writer.addAttribute(ATT_TIME_STAMP, Long.toString(res.getTimeStamp())); + writer.addAttribute(ATT_TIME_STAMP, Long.toString(res.getTimeStamp() / 1000000L)); + writer.addAttribute(ATT_TIME_STAMP_NS, Long.toString(res.getTimeStamp())); } if (save.saveSuccess()) { writer.addAttribute(ATT_SUCCESS, Boolean.toString(res.isSuccessful())); @@ -441,11 +451,28 @@ protected void retrieveAttributes(HierarchicalStreamReader reader, Unmarshalling res.setResponseMessage(ConversionHelp.decode(reader.getAttribute(ATT_RESPONSE_MESSAGE))); res.setSuccessful(Converter.getBoolean(reader.getAttribute(ATT_SUCCESS), true)); res.setThreadName(ConversionHelp.decode(reader.getAttribute(ATT_THREADNAME))); - res.setStampAndTime(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP)), - Converter.getLong(reader.getAttribute(ATT_TIME))); - res.setIdleTime(Converter.getLong(reader.getAttribute(ATT_IDLETIME))); - res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY))); - res.setConnectTime(Converter.getLong(reader.getAttribute(ATT_CONNECT_TIME))); + if (reader.getAttribute(ATT_TIME_STAMP_NS) != null && reader.getAttribute(ATT_TIME_NS) != null) { + res.setStampAndTime_ns(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP_NS)), + Converter.getLong(reader.getAttribute(ATT_TIME_NS))); + } else { + res.setStampAndTime(Converter.getLong(reader.getAttribute(ATT_TIME_STAMP)), + Converter.getLong(reader.getAttribute(ATT_TIME))); + } + if (reader.getAttribute(ATT_IDLETIME_NS) != null) { + res.setIdleTime_ns(Converter.getLong(reader.getAttribute(ATT_IDLETIME_NS))); + } else { + res.setIdleTime(Converter.getLong(reader.getAttribute(ATT_IDLETIME))); + } + if (reader.getAttribute(ATT_LATENCY_NS) != null) { + res.setLatency_ns(Converter.getLong(reader.getAttribute(ATT_LATENCY_NS))); + } else { + res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY))); + } + if (reader.getAttribute(ATT_CONNECT_TIME_NS) != null) { + res.setConnectTime_ns(Converter.getLong(reader.getAttribute(ATT_CONNECT_TIME_NS))); + } else { + res.setConnectTime(Converter.getLong(reader.getAttribute(ATT_CONNECT_TIME))); + } res.setBytes(Converter.getLong(reader.getAttribute(ATT_BYTES))); res.setSentBytes(Converter.getLong(reader.getAttribute(ATT_SENT_BYTES))); res.setSampleCount(Converter.getInt(reader.getAttribute(ATT_SAMPLE_COUNT),1)); // default is 1 diff --git a/src/core/src/main/java/org/apache/jmeter/util/Calculator.java b/src/core/src/main/java/org/apache/jmeter/util/Calculator.java index 9643be98f9b..a7baefdbc95 100644 --- a/src/core/src/main/java/org/apache/jmeter/util/Calculator.java +++ b/src/core/src/main/java/org/apache/jmeter/util/Calculator.java @@ -162,7 +162,7 @@ public double getMean() { if (count == 0) { return 0.0; } - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).divide(BigDecimal.valueOf(1000000L), 16, RoundingMode.HALF_UP).doubleValue() : sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).doubleValue(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).divide(BigDecimal.valueOf(1000000L), 16, RoundingMode.HALF_UP).doubleValue() : sum.divide(BigDecimal.valueOf(count), 16, RoundingMode.HALF_UP).doubleValue(); } public Number getMeanAsNumber() { @@ -180,11 +180,11 @@ public double getStandardDeviation() { } public long getMin() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? minimum.get() / 1000000L : minimum.get(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? minimum.get() / 1000000L : minimum.get(); } public long getMax() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? maximum.get() / 1000000L : maximum.get(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? maximum.get() / 1000000L : maximum.get(); } public int getCount() { diff --git a/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java b/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java index fb62160ba38..6e843208d43 100644 --- a/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java +++ b/src/core/src/main/java/org/apache/jmeter/visualizers/RunningSample.java @@ -307,7 +307,7 @@ public long getAverage() { if (counter == 0) { return 0; } - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? runningSum.divide(BigInteger.valueOf(counter)).divide(BigInteger.valueOf(1000000L)).longValue() : runningSum.divide(BigInteger.valueOf(counter)).longValue(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? runningSum.divide(BigInteger.valueOf(counter)).divide(BigInteger.valueOf(1000000L)).longValue() : runningSum.divide(BigInteger.valueOf(counter)).longValue(); } /** diff --git a/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java b/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java index e1d73a0695d..e0f32e6b2ba 100644 --- a/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java +++ b/src/core/src/main/java/org/apache/jmeter/visualizers/SamplingStatCalculator.java @@ -198,10 +198,10 @@ public Sample addSample(SampleResult res) { } rtime = res.getTime(); - cmean = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? (long) calculator.getMean() / 1000000L : (long) calculator.getMean(); + cmean = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? (long) calculator.getMean() / 1000000L : (long) calculator.getMean(); cstdv = (long)calculator.getStandardDeviation(); - cmedian = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMedian().divide(BigInteger.valueOf(1000000L)).longValue() : calculator.getMedian().longValue(); - cpercent = ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getPercentPoint(0.500D).divide(BigInteger.valueOf(1000000L)).longValue() : calculator.getPercentPoint(0.500D).longValue(); + cmedian = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getMedian().divide(BigInteger.valueOf(1000000L)).longValue() : calculator.getMedian().longValue(); + cpercent = ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getPercentPoint(0.500D).divide(BigInteger.valueOf(1000000L)).longValue() : calculator.getPercentPoint(0.500D).longValue(); // TODO cpercent is the same as cmedian here - why? and why pass it to "distributionLine"? rbool = res.isSuccessful(); } @@ -275,7 +275,7 @@ public Map getDistribution() { } public Number getPercentPoint(double percent) { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getPercentPoint(percent).divide(BigInteger.valueOf(1000000L)) : calculator.getPercentPoint(percent); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getPercentPoint(percent).divide(BigInteger.valueOf(1000000L)) : calculator.getPercentPoint(percent); } public long getCount() { @@ -283,11 +283,11 @@ public long getCount() { } public Number getMax() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMax().divide(BigInteger.valueOf(1000000L)) : calculator.getMax(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getMax().divide(BigInteger.valueOf(1000000L)) : calculator.getMax(); } public double getMean() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMean() / 1000000.0D : calculator.getMean(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getMean() / 1000000.0D : calculator.getMean(); } public Number getMeanAsNumber() { @@ -295,18 +295,18 @@ public Number getMeanAsNumber() { } public Number getMedian() { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMedian().divide(BigInteger.valueOf(1000000L)) : calculator.getMedian(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getMedian().divide(BigInteger.valueOf(1000000L)) : calculator.getMedian(); } public Number getMin() { if (calculator.getMin().compareTo(BigInteger.valueOf(0L)) < 0) { return 0L; } - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getMin().divide(BigInteger.valueOf(1000000L)) : calculator.getMin(); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getMin().divide(BigInteger.valueOf(1000000L)) : calculator.getMin(); } public Number getPercentPoint(float percent) { - return ReportGeneratorConfiguration.jmeter_reportgenerator_msns_isMs ? calculator.getPercentPoint(percent).divide(BigInteger.valueOf(1000000L)) : calculator.getPercentPoint(percent); + return ReportGeneratorConfiguration.jmeter_reportgenerator_ms_ns_isMs ? calculator.getPercentPoint(percent).divide(BigInteger.valueOf(1000000L)) : calculator.getPercentPoint(percent); } public double getStandardDeviation() { diff --git a/src/core/src/test/java/org/apache/jmeter/save/TestCSVSaveService.java b/src/core/src/test/java/org/apache/jmeter/save/TestCSVSaveService.java index cb9d959f172..547086b6b8e 100644 --- a/src/core/src/test/java/org/apache/jmeter/save/TestCSVSaveService.java +++ b/src/core/src/test/java/org/apache/jmeter/save/TestCSVSaveService.java @@ -152,8 +152,8 @@ public void testShortFile() throws Exception { // header text should not change unexpectedly // if this test fails, check whether the default was intentionally changed or not public void testHeader() { - final String HDR = "timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success," - + "failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect"; + final String HDR = "timeStamp,timeStamp_ns,elapsed,elapsed_ns,label,responseCode,responseMessage,threadName,dataType,success," + + "failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,Latency_ns,IdleTime,IdleTime_ns,Connect,Connect_ns"; assertEquals(HDR, CSVSaveService.printableFieldNamesToString(), "Header text has changed"); } @@ -161,7 +161,7 @@ public void testHeader() { // sample format should not change unexpectedly // if this test fails, check whether the default was intentionally changed or not public void testSample() throws MalformedURLException { - final String RESULT = "1,2,3,4,5,6,7,true,,8,9,10,11,https://jmeter.apache.org,12,13,14"; + final String RESULT = "1,1000000,2,2000000,3,4,5,6,7,true,,8,9,10,11,https://jmeter.apache.org,12,12000000,13,13000000,14,14000000"; SampleResult result = new SampleResult(); result.setSaveConfig(new SampleSaveConfiguration()); result.setStampAndTime(1, 2); diff --git a/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt b/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt index 19bd5821e84..3d9bcc07a6b 100644 --- a/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt +++ b/src/core/src/test/kotlin/org/apache/jmeter/util/CalculatorTest.kt @@ -29,26 +29,26 @@ class CalculatorTest { @Test fun min() { assertEquals(Long.MAX_VALUE / 1000000L, calculator.min, "min()") - calculator.addSample(SampleResult(10 * 1000000L, 42 * 1000000L)) + calculator.addSample(SampleResult(10, 42)) assertEquals(42, calculator.min, "min(42)") - calculator.addSample(SampleResult(10 * 1000000L, 40 * 1000000L)) + calculator.addSample(SampleResult(10, 40)) assertEquals(40, calculator.min, "min(42, 40)") - calculator.addSample(SampleResult(10 * 1000000L, 50 * 1000000L)) + calculator.addSample(SampleResult(10, 50)) assertEquals(40, calculator.min, "min(42, 40, 50)") - calculator.addSample(SampleResult(10 * 1000000L, 50 * 1000000L).apply { sampleCount = 2 }) + calculator.addSample(SampleResult(10, 50).apply { sampleCount = 2 }) assertEquals(25, calculator.min, "min(42, 40, 50, 50/2)") } @Test fun max() { assertEquals(Long.MIN_VALUE / 1000000L, calculator.max, "max()") - calculator.addSample(SampleResult(10 * 1000000L, 40 * 1000000L)) + calculator.addSample(SampleResult(10, 40)) assertEquals(40, calculator.max, "max(40)") - calculator.addSample(SampleResult(10 * 1000000L, 42 * 1000000L)) + calculator.addSample(SampleResult(10, 42)) assertEquals(42, calculator.max, "max(40, 42)") - calculator.addSample(SampleResult(10 * 1000000L, 30 * 1000000L)) + calculator.addSample(SampleResult(10, 30)) assertEquals(42, calculator.max, "max(40, 42, 30)") - calculator.addSample(SampleResult(10 * 1000000L, 90 * 1000000L).apply { sampleCount = 2 }) + calculator.addSample(SampleResult(10, 90).apply { sampleCount = 2 }) assertEquals(45, calculator.max, "max(40, 42, 30, 90/2)") } @@ -66,11 +66,11 @@ class CalculatorTest { @Test fun mean() { assertEquals(0.0, calculator.mean, "mean()") - calculator.addSample(SampleResult(10 * 1000000L, 40 * 1000000L)) + calculator.addSample(SampleResult(10, 40)) assertEquals(40.0, calculator.mean, 0.001, "mean(40)") - calculator.addSample(SampleResult(10 * 1000000L, 42 * 1000000L)) + calculator.addSample(SampleResult(10, 42)) assertEquals((40.0 + 42.0) / 2, calculator.mean, 0.001, "mean(40, 42)") - calculator.addSample(SampleResult(10 * 1000000L, 48 * 1000000L).apply { sampleCount = 2 }) + calculator.addSample(SampleResult(10, 48).apply { sampleCount = 2 }) assertEquals((40.0 + 42.0 + 48) / 4, calculator.mean, 0.001, "mean(40, 42, 48/2)") } @@ -80,18 +80,18 @@ class CalculatorTest { calculator.addSample(SampleResult(10, 40)) assertEquals(0.0, calculator.standardDeviation, "standardDeviation(40)") calculator.addSample(SampleResult(10, 42)) - assertEquals(1.0, calculator.standardDeviation, "standardDeviation(40, 42)") + assertEquals(1000000.0, calculator.standardDeviation, "standardDeviation(40, 42)") calculator.addSample(SampleResult(10, 43)) // Math.sqrt((sumOfSquares / count) - (mean * mean)) assertEquals( - sqrt((40 * 40 + 42 * 42 + 43 * 43) / 3.0 - ((40.0 + 42 + 43) / 3).pow(2)), + sqrt((40 * 1000000L * 40 * 1000000L + 42 * 1000000L * 42 * 1000000L + 43 * 1000000L * 43 * 1000000L) / 3.0 - ((40.0 * 1000000.0 + 42 * 1000000.0 + 43 * 1000000.0) / 3).pow(2)), calculator.standardDeviation, 0.001, "standardDeviation(40, 42, 43)" ) calculator.addSample(SampleResult(10, 48).apply { sampleCount = 2 }) assertEquals( - sqrt((40 * 40 + 42 * 42 + 43 * 43 + 24 * 24 + 24 * 24) / 5.0 - ((40.0 + 42 + 43 + 24 + 24) / 5.0).pow(2)), + sqrt((40 * 1000000L * 40 * 1000000L + 42 * 1000000L * 42 * 1000000L + 43 * 1000000L * 43 * 1000000L + 24 * 1000000L * 24 * 1000000L + 24 * 1000000L * 24 * 1000000L) / 5.0 - ((40.0 * 1000000.0 + 42 * 1000000.0 + 43 * 1000000.0 + 24 * 1000000.0 + 24 * 1000000.0) / 5.0).pow(2)), calculator.standardDeviation, 0.001, "standardDeviation(40, 42, 43, 48/2)" @@ -112,14 +112,14 @@ class CalculatorTest { @Test fun bytesPerSecond() { assertEquals(0.0, calculator.bytesPerSecond, "bytesPerSecond()") - calculator.addSample(SampleResult(40 * 1000000L, 30 * 1000000L).apply { setBodySize(50L) }) + calculator.addSample(SampleResult(40, 30).apply { setBodySize(50L) }) assertEquals( 50.0 * 1000 / (40 - 10.0), calculator.bytesPerSecond, 0.001, "bytesPerSecond({50bytes, 10ms..40ms})" ) - calculator.addSample(SampleResult(60 * 1000000L, 20 * 1000000L).apply { setBodySize(70L) }) + calculator.addSample(SampleResult(60, 20).apply { setBodySize(70L) }) assertEquals( (50 + 70.0) * 1000 / (60 - 10.0), calculator.bytesPerSecond, @@ -131,14 +131,14 @@ class CalculatorTest { @Test fun sentBytesPerSecond() { assertEquals(0.0, calculator.sentBytesPerSecond, "sentBytesPerSecond()") - calculator.addSample(SampleResult(40 * 1000000L, 30 * 1000000L).apply { sentBytes = 50L }) + calculator.addSample(SampleResult(40, 30).apply { sentBytes = 50L }) assertEquals( 50.0 * 1000 / (40 - 10.0), calculator.sentBytesPerSecond, 0.001, "sentBytesPerSecond({sent=50bytes, 10ms..40ms})" ) - calculator.addSample(SampleResult(60 * 1000000L, 20 * 1000000L).apply { sentBytes = 70L }) + calculator.addSample(SampleResult(60, 20).apply { sentBytes = 70L }) assertEquals( (50 + 70.0) * 1000 / (60 - 10.0), calculator.sentBytesPerSecond, diff --git a/src/dist-check/src/test/kotlin/org/apache/jmeter/gui/action/HtmlReportGeneratorTest.kt b/src/dist-check/src/test/kotlin/org/apache/jmeter/gui/action/HtmlReportGeneratorTest.kt index 3b8104bcdbe..cf274778b57 100644 --- a/src/dist-check/src/test/kotlin/org/apache/jmeter/gui/action/HtmlReportGeneratorTest.kt +++ b/src/dist-check/src/test/kotlin/org/apache/jmeter/gui/action/HtmlReportGeneratorTest.kt @@ -154,4 +154,16 @@ class HtmlReportGeneratorTest : JMeterTestCase() { fail("First result message should contain '$expectedError', but was '$firstMessage'") } } + + @Test + fun ns() { + val mapper = ObjectMapper() + + val expectedRoot = mapper.readTree(File(combine("testfiles", "ns.json"))) + + HtmlReportGenerator(combine("testfiles", "ns.jtl"), combine("testfiles", "ns.properties"), testDirectory.toString()).run() + val actualRoot = mapper.readTree(File(testDirectory, "statistics.json")) + + assertEquals(expectedRoot, actualRoot, "ns") + } } diff --git a/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java b/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java index 652e813be15..88f9e9995f1 100644 --- a/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java +++ b/src/protocol/java/src/test/java/org/apache/jmeter/protocol/java/sampler/JSR223SamplerTest.java @@ -31,7 +31,7 @@ void sampleWithEndTimeSet() { sampler.setScript("SampleResult.setEndTime(42); 'OK'"); sampler.setScriptLanguage("groovy"); SampleResult sampleResult = sampler.sample(null); - assertEquals(42, sampleResult.getEndTime()); + assertEquals(42000000, sampleResult.getEndTime()); } @Test