apache / jmeter

Apache JMeter open-source load testing tool for analyzing and measuring the performance of a variety of services
https://jmeter.apache.org/
Apache License 2.0
8.23k stars 2.08k forks source link

Regression in custom Thread Group in nightly build before 3.0 (6 march 2016) #3885

Closed asfimport closed 8 years ago

asfimport commented 8 years ago

Andrey Pokhilko (Bug 59133): I've noticed important regression in current trunk code, which supposed to become v.3.0. In BlazeMeter we have couple of plugins that are custom Thread Groups. One of them, "Arrivals Thread Group" is supposed to operate with "arrival rate" which is rate of "first sampler of thread group".

With JMeter 2.13 this thread group works as expected and produces valid load level. With trunk code it produces exactly 1/2 of expected load. As additional effect, we've noticed that threads that should be re-used for new arrivals are finished and new threads are created.

For example test plan, there are total 120 arrivals supposed to happen. This test plan is simpliest reproduction. Jmeter 2.13 gives expected 120 samples, while trunk gives only 60.

I failed to find the source of this regression myself, I ask for help from other contributors. I can't share the source code publicly due to legal reasons, but can share it privately if this will help to solve regression.

Version: Nightly Severity: normal OS: All

asfimport commented 8 years ago

Andrey Pokhilko (migrated from Bugzilla): Created attachment atg.jmx: Reproduction test plan

atg.jmx ````xml false false continue 2 0 0 60 S false true false false saveConfig true true true true true true true false true true false false false false false false false false 0 true true ````
asfimport commented 8 years ago

Andrey Pokhilko (migrated from Bugzilla): Created attachment jmeter-2.13.log: Log for successfull run

jmeter-2.13.log ```` 2016/03/06 21:10:44 INFO - jmeter.util.JMeterUtils: Setting Locale to en_US 2016/03/06 21:10:44 INFO - jmeter.JMeter: Loading user properties from: /home/undera/Sources/JMeter/jmeter-stable/bin/user.properties 2016/03/06 21:10:44 INFO - jmeter.JMeter: Loading system properties from: /home/undera/Sources/JMeter/jmeter-stable/bin/system.properties 2016/03/06 21:10:44 INFO - jmeter.JMeter: Copyright (c) 1998-2015 The Apache Software Foundation 2016/03/06 21:10:44 INFO - jmeter.JMeter: Version 2.13.20160225 2016/03/06 21:10:44 INFO - jmeter.JMeter: java.version=1.7.0_80 2016/03/06 21:10:44 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM 2016/03/06 21:10:44 INFO - jmeter.JMeter: os.name=Linux 2016/03/06 21:10:44 INFO - jmeter.JMeter: os.arch=amd64 2016/03/06 21:10:44 INFO - jmeter.JMeter: os.version=3.13.0-79-generic 2016/03/06 21:10:44 INFO - jmeter.JMeter: file.encoding=UTF-8 2016/03/06 21:10:44 INFO - jmeter.JMeter: Default Locale=English (United States) 2016/03/06 21:10:44 INFO - jmeter.JMeter: JMeter Locale=English (United States) 2016/03/06 21:10:44 INFO - jmeter.JMeter: JMeterHome=/home/undera/Sources/JMeter/jmeter-stable 2016/03/06 21:10:44 INFO - jmeter.JMeter: user.dir =/home/undera/Sources/JMeter/jmeter-stable 2016/03/06 21:10:44 INFO - jmeter.JMeter: PWD =/home/undera/Sources/JMeter/jmeter-stable 2016/03/06 21:10:44 INFO - jmeter.JMeter: IP: 192.168.1.94 Name: undera-desktop FullName: undera-desktop 2016/03/06 21:10:44 INFO - jmeter.gui.action.LookAndFeelCommand: Using look and feel: javax.swing.plaf.metal.MetalLookAndFeel [Metal, CrossPlatform, System] 2016/03/06 21:10:44 INFO - jmeter.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties 2016/03/06 21:10:45 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must contain the string: '.functions.' 2016/03/06 21:10:45 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must not contain the string: '.gui.' 2016/03/06 21:10:45 INFO - kg.apc.jmeter.JMeterPluginsUtils: JMeter-Plugins.org v.1.4.0 2016/03/06 21:10:45 INFO - jmeter.util.BSFTestElement: Registering JMeter version of JavaScript engine as work-round for BSF-22 2016/03/06 21:10:46 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Cannot find .className property for htmlParser, using default 2016/03/06 21:10:46 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is 2016/03/06 21:10:46 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is 2016/03/06 21:10:46 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is 2016/03/06 21:10:46 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is 2016/03/06 21:10:46 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser 2016/03/06 21:10:46 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui 2016/03/06 21:10:46 INFO - jmeter.gui.util.MenuFactory: Skipping org.apache.jmeter.protocol.http.modifier.gui.ParamModifierGui 2016/03/06 21:10:46 INFO - jorphan.exec.KeyToolUtils: keytool found at 'keytool' 2016/03/06 21:10:46 INFO - jmeter.protocol.http.proxy.ProxyControl: HTTP(S) Test Script Recorder SSL Proxy will use keys that support embedded 3rd party resources in file /home/undera/Sources/JMeter/jmeter-stable/bin/proxyserver.jks 2016/03/06 21:10:46 INFO - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times 2016/03/06 21:10:46 INFO - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1 2016/03/06 21:10:46 INFO - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true 2016/03/06 21:10:46 INFO - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000 2016/03/06 21:11:39 INFO - jmeter.services.FileServer: Default base='/home/undera/Sources/JMeter/jmeter-stable' 2016/03/06 21:11:39 INFO - jmeter.services.FileServer: Set new base='/home/undera' 2016/03/06 21:11:39 INFO - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2 2016/03/06 21:11:39 INFO - jmeter.save.SaveService: Using SaveService properties file encoding UTF-8 2016/03/06 21:11:39 INFO - jmeter.save.SaveService: Using SaveService properties file version 1656252 2016/03/06 21:11:39 INFO - jmeter.save.SaveService: Using SaveService properties version 2.8 2016/03/06 21:11:39 INFO - jmeter.save.SaveService: All converter versions present and correct 2016/03/06 21:12:15 INFO - jmeter.engine.StandardJMeterEngine: Listeners will be started after enabling running version 2016/03/06 21:12:15 INFO - jmeter.engine.StandardJMeterEngine: To revert to the earlier behaviour, define jmeterengine.startlistenerslater=false 2016/03/06 21:12:15 INFO - jmeter.engine.StandardJMeterEngine: Running the test! 2016/03/06 21:12:15 INFO - jmeter.samplers.SampleEvent: List of sample_variables: [] 2016/03/06 21:12:15 INFO - jmeter.samplers.SampleEvent: List of sample_variables: [] 2016/03/06 21:12:15 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(true,*local*) 2016/03/06 21:12:15 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : jp@gc - Arrivals Thread Group 2016/03/06 21:12:15 INFO - jmeter.engine.StandardJMeterEngine: Starting 0 threads for group jp@gc - Arrivals Thread Group. 2016/03/06 21:12:15 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error 2016/03/06 21:12:15 INFO - jmeter.threads.JMeterThread: jmeterthread.startearlier=true (see jmeter.properties) 2016/03/06 21:12:15 INFO - jmeter.threads.JMeterThread: Running PostProcessors in forward order 2016/03/06 21:12:15 INFO - jmeter.threads.JMeterThread: Thread started: jp@gc - Arrivals Thread Group 1-1 2016/03/06 21:12:15 INFO - com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup: Got first arrival 2016/03/06 21:12:15 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started 2016/03/06 21:13:15 INFO - com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadStarter: Duration limit reached, no more arrivals needed, had arrivals: 120 2016/03/06 21:13:15 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test 2016/03/06 21:13:15 INFO - com.blazemeter.jmeter.threads.arrivals.ArrivalsThreadGroup: Done 120 arrivals, 120 completions, 0 abandonments 2016/03/06 21:13:15 INFO - jmeter.threads.JMeterThread: Thread is done: jp@gc - Arrivals Thread Group 1-1 2016/03/06 21:13:15 INFO - jmeter.threads.JMeterThread: Thread finished: jp@gc - Arrivals Thread Group 1-1 2016/03/06 21:13:15 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(false,*local*) ````
asfimport commented 8 years ago

Andrey Pokhilko (migrated from Bugzilla): Created attachment jmeter-trunk.log: Log for failed trunk run

asfimport commented 8 years ago

UbikLoadPack support (migrated from Bugzilla): Hello Andrei, Can you test this:

Thanks Regards @ubikloadpack Team

asfimport commented 8 years ago

Andrey Pokhilko (migrated from Bugzilla): Thanks, I will try it ASAP.

asfimport commented 8 years ago

Andrey Pokhilko (migrated from Bugzilla): yes, the fix removes the regression issue, I got correct threads behavior

asfimport commented 8 years ago

@pmouawad (migrated from Bugzilla): Date: Mon Mar 14 20:10:09 2016 New Revision: 1734992

URL: http://svn.apache.org/viewvc?rev=1734992&view=rev Log: https://github.com/apache/jmeter/issues/3885 - Regression in custom Thread Group in nightly build before 3.0 (6 march 2016)

resolve #164

https://github.com/apache/jmeter/pull/164 https://github.com/apache/jmeter/issues/3885

Modified: jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterThread.java jmeter/trunk/xdocs/changes.xml