From 7942d0301075ec29487d926c8dcf8a5c12c2a23f Mon Sep 17 00:00:00 2001 From: junyejiang Date: Mon, 13 Jan 2025 22:32:00 +0800 Subject: [PATCH 1/3] Stripping success result in order to speed up transmit in distributed test mode. --- .../samplers/DataStrippingSampleSender.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java b/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java index 8df3fd7b83c..9af8e924205 100644 --- a/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java +++ b/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java @@ -126,6 +126,24 @@ private static void stripContent(SampleResult result, int level) { private static void stripResponse(SampleResult result) { result.setBytes(result.getBytesAsLong()); result.setResponseData(EMPTY_BA); + + if (result.isSuccessful()) { + result.setSentBytes(result.getSentBytes()); + result.setSamplerData(null); + result.setRequestHeaders(null); + + result.setBodySize(result.getBodySizeAsLong()); + result.setDataType(null); + result.setDataEncoding(null); + + result.setHeadersSize(result.getHeadersSize()); + result.setResponseHeaders(null); + + result.setURL(null); + + result.setResponseMessage(null); + result.setResponseCode(null); + } } /** From 9d3d7c64f5e95621fe91e3d7e21ae118c318acf5 Mon Sep 17 00:00:00 2001 From: junyejiang Date: Mon, 10 Feb 2025 18:57:24 +0800 Subject: [PATCH 2/3] update as CR --- .../jmeter/samplers/DataStrippingSampleSender.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java b/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java index 9af8e924205..e801b8531f2 100644 --- a/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java +++ b/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java @@ -133,16 +133,16 @@ private static void stripResponse(SampleResult result) { result.setRequestHeaders(null); result.setBodySize(result.getBodySizeAsLong()); - result.setDataType(null); - result.setDataEncoding(null); + //result.setDataType(null); + //result.setDataEncoding(null); result.setHeadersSize(result.getHeadersSize()); result.setResponseHeaders(null); - result.setURL(null); + //result.setURL(null); - result.setResponseMessage(null); - result.setResponseCode(null); + //result.setResponseMessage(null); + //result.setResponseCode(null); } } From b755fde60de4b6f6882e2a380090faf93b5b8c12 Mon Sep 17 00:00:00 2001 From: junyejiang Date: Wed, 5 Mar 2025 18:42:07 +0800 Subject: [PATCH 3/3] update --- bin/jmeter.properties | 2 ++ .../apache/jmeter/samplers/DataStrippingSampleSender.java | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/jmeter.properties b/bin/jmeter.properties index bac04e85bc9..af472a172e5 100644 --- a/bin/jmeter.properties +++ b/bin/jmeter.properties @@ -759,6 +759,8 @@ wmlParser.types=text/vnd.wap.wml # set this property to false #sample_sender_strip_also_on_error=true +sample_sender_strip_if_success=false + # Remote batching support # Since JMeter 2.9, default is MODE_STRIPPED_BATCH, which returns samples in # batch mode (every 100 samples or every minute by default) diff --git a/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java b/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java index e801b8531f2..1957d07bf1a 100644 --- a/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java +++ b/src/core/src/main/java/org/apache/jmeter/samplers/DataStrippingSampleSender.java @@ -53,6 +53,7 @@ public class DataStrippingSampleSender extends AbstractSampleSender implements S private final SampleSender decoratedSender; // Configuration items, set up by readResolve private transient volatile boolean stripAlsoOnError; + private static boolean stripIfSuccess = JMeterUtils.getPropDefault("sample_sender_strip_if_success", false); /** @@ -127,7 +128,7 @@ private static void stripResponse(SampleResult result) { result.setBytes(result.getBytesAsLong()); result.setResponseData(EMPTY_BA); - if (result.isSuccessful()) { + if (stripIfSuccess && result.isSuccessful()) { result.setSentBytes(result.getSentBytes()); result.setSamplerData(null); result.setRequestHeaders(null); @@ -156,10 +157,12 @@ private static void stripResponse(SampleResult result) { protected Object readResolve() throws ObjectStreamException{ if (isClientConfigured()) { stripAlsoOnError = clientConfiguredStripAlsoOnError; + stripIfSuccess = JMeterUtils.getPropDefault("sample_sender_strip_if_success", false); } else { stripAlsoOnError = SERVER_CONFIGURED_STRIP_ALSO_ON_ERROR; } log.info("Using DataStrippingSampleSender for this run with stripAlsoOnError: {}", stripAlsoOnError); + log.info("Using DataStrippingSampleSender for this run with stripIfSuccess: {}", stripIfSuccess); return this; } }