Dev G
Dev G

Reputation: 1

Difference between Summary Report Bytes/sec and Bytes Throughput Over Time plugin JMeter

I was trying to analyze the throughput - basically the amount of bytes sent and received by JMeter during the load test but i notice the summary report and the plugin give two different values and i am not able to correlate.

Snapshot from Summary report -

summary report

Snapshot from plugin graph -

plugin graph

Values extracted from the above graph -

values from graph in csv Avg is 608 Bytes/sec Total sum is 10948 Bytes/sec

How do i correctly understand the right Throughput value to take and which one to consider as the avg or the sum from the graph plugin is not matching with the summary report

Values extracted from the graph -

Avg is 608 Bytes/sec Total sum is 10948 Bytes/sec

values taken from the summary report - Avg is 437 Bytes

Upvotes: 0

Views: 34

Answers (1)

Ivan G
Ivan G

Reputation: 2772

I came up with a test plan which:

  1. Generates a file of 1024 bytes in setUp Thread Group with JSR223 Sampler
  2. Uses HTTP Request sampler with file protocol to read the file

I'm getting the following .jtl results file:

enter image description here

Which is reflected perfectly in the Summary Report listener:

enter image description here

and in the Bytes Throughput Over Time listener:

enter image description here

In other words I cannot reproduce your issue, make sure that you're "correlating" the same .jtl results file, use correct granularity, etc. Also there is no need to "extract" the data from the graph, it plots the numbers from the .jtl results file. If you want to see the code - it's available in github

Here is my test plan just in case you want to see yourself:

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.3">
    <hashTree>
        <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan">
            <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables">
                <collectionProp name="Arguments.arguments"/>
            </elementProp>
        </TestPlan>
        <hashTree>
            <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group">
                <intProp name="ThreadGroup.num_threads">1</intProp>
                <intProp name="ThreadGroup.ramp_time">1</intProp>
                <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
                <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
                <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller">
                    <stringProp name="LoopController.loops">1</stringProp>
                    <boolProp name="LoopController.continue_forever">false</boolProp>
                </elementProp>
            </SetupThreadGroup>
            <hashTree>
                <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler">
                    <stringProp name="cacheKey">true</stringProp>
                    <stringProp name="filename"></stringProp>
                    <stringProp name="parameters"></stringProp>
                    <stringProp name="script">SampleResult.setIgnore()
                        new File(&apos;test.txt&apos;).text = &apos;a&apos; * 1024
                    </stringProp>
                    <stringProp name="scriptLanguage">groovy</stringProp>
                </JSR223Sampler>
                <hashTree/>
            </hashTree>
            <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group">
                <intProp name="ThreadGroup.num_threads">1</intProp>
                <intProp name="ThreadGroup.ramp_time">1</intProp>
                <boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
                <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
                <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller">
                    <stringProp name="LoopController.loops">10</stringProp>
                    <boolProp name="LoopController.continue_forever">false</boolProp>
                </elementProp>
            </ThreadGroup>
            <hashTree>
                <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request">
                    <stringProp name="HTTPSampler.protocol">file</stringProp>
                    <stringProp name="HTTPSampler.path">test.txt</stringProp>
                    <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
                    <stringProp name="HTTPSampler.method">GET</stringProp>
                    <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
                    <boolProp name="HTTPSampler.postBodyRaw">false</boolProp>
                    <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables">
                        <collectionProp name="Arguments.arguments"/>
                    </elementProp>
                </HTTPSamplerProxy>
                <hashTree>
                    <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer">
                        <stringProp name="ConstantTimer.delay">1000</stringProp>
                    </ConstantTimer>
                    <hashTree/>
                </hashTree>
            </hashTree>
        </hashTree>
    </hashTree>
</jmeterTestPlan>

Upvotes: 0

Related Questions