distributed-load-testing-on-aws
distributed-load-testing-on-aws copied to clipboard
jmeter dashboard generation
Before I dive down into the configuration rabbit hole. Is someone able to verify whether it is possible to output jmeter dashboard files to S3 using this solution. Normally we would execute the below when running the test locally after which we can view the dashboard in a web browser.
sh jmeter.sh -n -t test.jmx -l test -e -o /apache-jmeter-5.4.1/bin/results.csv
I ask because being able to view the jmeter generated dashboard would make for an easier transition to the AWS scalable platform as opposed to using the solution generated dashboards.
Happy to provide more info if the above isn't clear.
Having run some tests locally with various results, is there a way to modify the behaviour of the underlying Taurus service to output the jmeter html dashboard files in s3? I'd assume that that results would have to be an aggregate of all those collected during the testing phase.
If you set the log output destination in Jmeter's View Result Tree, the log will be transferred to S3.
After that, you can create a dashboard by downloading the log and executing jmeter -g -o.
Does this meet your request?
If you did not meet your request, I thought about another idea.
If you want to transfer the HTML file of the dashboard to S3, you need to fix the Load-test.sh and reinforce it to the container image.
https://github.com/aws-solutions/distributed-load-testing-on-aws#cretom-build
The following is not verified the actual machine. As a premise, set the log output destination to JMX.
◆ load-test.sh ◆
echo "Running Test"
#This is the execution/log file generation of JMETER SCENARIO
stdbuf -i0 -e0 -e0 bzt test.json -o modules.console.disable = true | stdbuf -i0 -e0 -e0 tee -a result.tmp | s | | "
Calculated_duration = Cat result.tmp | GREP -M1" Test Duration "| Awk -f '' '' '' '' '{Print $ 5} } '
#Add 2 line: After JMeter Scenario. Create Dash Board & Log Transfer /root/.bzt/jmeter-taurus/5.4.3/bin/jmeter -g "log file name" -o "Dash Board Path" aws s3 cp --recursive "Dash Board Path" s3://${S3_BUCKET}/results/${TEST_ID}/
Jmeter's command path is /root/.bzt/jmeter-taurus/version/bin Debug and confirm Load-test.sh. In the container, there are still parts that verify that the file name specified in the -g and -o option has the authority to write.
Thanks for elaborating, however I think following some further testing there is a deeper issue that would need to be dealt with first. Presently if I manually run a test of native jmeter vs. bzt jmeter there is a discrepancy in results whereby the bzt version does not populate any of the results tables or graphs. Native jmeter
apache-jmeter-5.5/bin/jmeter -n -t wsm.jmx -l wsm.log -e -o dashboards
bzt jmeter
~/.bzt/jmeter-taurus/5.4.3/bin/jmeter -n -t wsm.jmx -l wsm.log
~/.bzt/jmeter-taurus/5.4.3/bin/jmeter -g "wsm.log" -o "dashboards"
Unless I am missing something vital or misunderstanding? Following some research on the topic I get the feeling that the only way to effectively create the dashboard is with the use of an additional shellExec module in the taurus config.yml https://gettaurus.org/docs/JMeter/#CSV-file-content-configuration as I'm not the only one to have hit this roadblock.
I also verified it.
An event that the value is not displayed on the dashboard you declare is reproduced. Probably there is a problem with the jmeter executed in the Taurus container. As a result of verification, the value of the dashboard was displayed in the following way.
Ver JMeter 5.5
・ Set the log output destination to the View Results Tree of JMX (Test.csv). ・ Correct Dockerfile and incorporate JMeter official ZIP. ・ Fix Load -test.sh, and "jmeter -g -o" executes the official website JMeter. ・ Execute a scenario. ・ Confirm that the dashboard information is transferred to S3. ・ Download it to a local PC and open index.html.
I don't know if this is appropriate, but I think it's a jmeter problem. I didn't know where to do "CSV File Content Configuration".
[Dockerfile] #Add ADD ./apache-jmeter-5.5.zip /bzt-configs/ RUN unzip /bzt-configs/apache-jmeter-5.5.zip RUN chmod +x /bzt-configs/apache-jmeter-5.5/bin/jmeter
[load-test.sh]
echo "Running test"
stdbuf -i0 -o0 -e0 bzt test.json -o modules.console.disable=true | stdbuf -i0 -o0 -e0 tee -a result.tmp | sed -u -e "s|^|$TEST_ID $LIVE_DATA_ENABLED |"
CALCULATED_DURATION=cat result.tmp | grep -m1 "Test duration" | awk -F ' ' '{ print $5 }' | awk -F ':' '{ print ($1 * 3600) + ($2 * 60) + $3 }'
#Add cd /bzt-configs/apache-jmeter-5.5/bin ./jmeter -g /bzt-configs/Test.csv -o /tmp/artifacts/dashboard aws s3 cp --recursive /tmp/artifacts/dashboard s3://${S3_BUCKET}/results/${TEST_ID}/dashboard/ rm -rf /tmp/artifacts/dashboard cd /bzt-configs
Are you still waiting on a response about this?
Actually I had to put the project aside altogether for quite some time. However it's looking like in the next couple of days/weeks I'll be returning to it again and so will keep you posted on progress. Thanks for following up.