Author: sebb
Date: Sat Apr 18 14:48:12 2009
New Revision: 766332
URL: http://svn.apache.org/viewvc?rev=766332&view=rev
Log:
Confine variables to thread as much as possible
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java?rev=766332&r1=766331&r2=766332&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
(original)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/engine/StandardJMeterEngine.java
Sat Apr 18 14:48:12 2009
@@ -71,7 +71,7 @@
private HashTree test;
- private SearchByClass testListeners;
+ private volatile SearchByClass testListenersSave;
private final String host;
@@ -92,9 +92,9 @@
// e.g. from beanshell server
// Assumes that there is only one instance of the engine
// at any one time so it is not guaranteed to work ...
- private static Map/*<String, JMeterThread>*/ allThreadNames; //TODO does
not appear to be set up yet
+ private static Map/*<String, JMeterThread>*/ allThreadNames; //TODO does
not appear to be populated yet
- private static StandardJMeterEngine engine;
+ private volatile static StandardJMeterEngine engine;
/** Unmodifiable static version of {...@link allThreads} JMeterThread =>
JVM Thread */
private static Map/*<JMeterThread, Thread>*/ allThreadsSave;
@@ -212,7 +212,7 @@
}
}
- private void notifyTestListenersOfStart() {
+ private void notifyTestListenersOfStart(SearchByClass testListeners) {
Iterator iter = testListeners.getSearchResults().iterator();
while (iter.hasNext()) {
TestListener tl = (TestListener) iter.next();
@@ -227,7 +227,7 @@
}
}
- private void notifyTestListenersOfEnd() {
+ private void notifyTestListenersOfEnd(SearchByClass testListeners) {
log.info("Notifying test listeners of end of test", new Throwable());
Iterator iter = testListeners.getSearchResults().iterator();
while (iter.hasNext()) {
@@ -307,7 +307,7 @@
}
boolean stopped = verifyThreadsStopped();
if (stopped || now) {
- notifyTestListenersOfEnd();
+ notifyTestListenersOfEnd(testListenersSave);
}
}
}
@@ -341,7 +341,7 @@
* Notification of test listeners needs to happen after function
* replacement, but before setting RunningVersion to true.
*/
- testListeners = new SearchByClass(TestListener.class);
+ SearchByClass testListeners = new SearchByClass(TestListener.class);
test.traverse(testListeners);
// Merge in any additional test listeners
@@ -349,9 +349,11 @@
testListeners.getSearchResults().addAll(testList);
testList.clear(); // no longer needed
- if (!startListenersLater ) { notifyTestListenersOfStart(); }
+ testListenersSave = testListeners;
+
+ if (!startListenersLater ) {
notifyTestListenersOfStart(testListeners); }
test.traverse(new TurnElementsOn());
- if (startListenersLater) { notifyTestListenersOfStart(); }
+ if (startListenersLater) { notifyTestListenersOfStart(testListeners); }
List testLevelElements = new LinkedList(test.list(test.getArray()[0]));
removeThreadGroups(testLevelElements);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]