The TestListener interface includes the following method names testStarted testEnded testIterationStart Now testIterationStart is rather different from testStarted/testEnded; it is called much more frequently, and is probably much less used. So it might make more sense to split the interface into two super-interfaces. This would allow classes to drop testIterationStart if they don't need it, and allow (for example) JMeterThread to only store references to code that actually needs to implement testIterationStart.
Should we close this one ?
(In reply to comment #1) > Should we close this one ? No. I hit an initial problem, but I'm still hopeful it can be resolved. For reference, the issue is: The code that implements the interface behaviour currently only looks for TestListener. All the code needs to be updated to look for the new interfaces instead; this involves quite a lot of classes. So far I have found: ConvertListeners StandardJMeterEngine FunctionParser RemoteSamplerListenerImpl ProxyControl There may perhaps be some other processing I've yet to find. I created separate threadStart/threadEnded interfaces, as some classes only need one or the other, but then realised that makes the Remote classes tricky to update. At that point I decided to revert the initial changes. Further investigation shows that the Remote code does not support testIterationStart currently, which should make the implementation much easier. [It would be expensive in network bandwidth, but luckily none of the Remoteable classes need to use it]
Just done a check. There are about 40 implementations of testIterationStart, only 4 of which have any code; the rest are required because of the interface. One of the real implementations - RemoteSampleListenerImpl.testIterationStart - is probably redundant anyway because TIS has not been implemented for client-server.
Fixed in SVN: URL: http://svn.apache.org/viewvc?rev=1376300&view=rev Log: TestListener interface could perhaps be split up. Bugzilla Id: 53749 Added: jmeter/trunk/src/core/org/apache/jmeter/testelement/TestIterationListener.java (with props) jmeter/trunk/src/core/org/apache/jmeter/testelement/TestListener.java - copied, changed from r1375825, jmeter/trunk/src/core/org/apache/jmeter/testelement/TestListener.java jmeter/trunk/src/core/org/apache/jmeter/testelement/TestStateListener.java (with props) Modified: jmeter/trunk/src/components/org/apache/jmeter/config/KeystoreConfig.java jmeter/trunk/src/components/org/apache/jmeter/control/ThroughputController.java jmeter/trunk/src/components/org/apache/jmeter/timers/ConstantThroughputTimer.java jmeter/trunk/src/components/org/apache/jmeter/timers/SyncTimer.java jmeter/trunk/src/core/org/apache/jmeter/JMeter.java jmeter/trunk/src/core/org/apache/jmeter/engine/ConvertListeners.java jmeter/trunk/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java jmeter/trunk/src/core/org/apache/jmeter/engine/util/FunctionParser.java jmeter/trunk/src/core/org/apache/jmeter/gui/MainFrame.java jmeter/trunk/src/core/org/apache/jmeter/reporters/ResultCollector.java jmeter/trunk/src/core/org/apache/jmeter/reporters/Summariser.java jmeter/trunk/src/core/org/apache/jmeter/samplers/RemoteListenerWrapper.java jmeter/trunk/src/core/org/apache/jmeter/samplers/RemoteSampleListenerImpl.java jmeter/trunk/src/core/org/apache/jmeter/samplers/RemoteTestListenerWrapper.java jmeter/trunk/src/core/org/apache/jmeter/testelement/TestPlan.java jmeter/trunk/src/core/org/apache/jmeter/threads/JMeterThread.java jmeter/trunk/src/core/org/apache/jmeter/util/BeanShellTestElement.java jmeter/trunk/src/functions/org/apache/jmeter/functions/StringFromFile.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CacheManager.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/modifier/ParamModifier.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/ProxyControl.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java jmeter/trunk/src/protocol/java/org/apache/jmeter/protocol/java/sampler/JavaSampler.java jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/JMSSampler.java jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java jmeter/trunk/src/protocol/ldap/org/apache/jmeter/protocol/ldap/sampler/LDAPExtSampler.java jmeter/trunk/src/reports/org/apache/jmeter/testelement/ReportPlan.java jmeter/trunk/xdocs/changes.xml
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/2893