You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2005/08/04 23:15:22 UTC
cvs commit: jakarta-jmeter/src/core/org/apache/jmeter/threads JMeterThread.java
sebb 2005/08/04 14:15:21
Modified: src/core/org/apache/jmeter/testelement
AbstractTestElement.java TestElement.java
src/core/org/apache/jmeter/threads JMeterThread.java
Added: src/core/org/apache/jmeter/testelement ThreadListener.java
Log:
Implement ThreadListener interface
(more efficient than scanning all elements)
Revision Changes Path
1.45 +0 -16 jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java
Index: AbstractTestElement.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/AbstractTestElement.java,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- AbstractTestElement.java 12 Jul 2005 20:50:28 -0000 1.44
+++ AbstractTestElement.java 4 Aug 2005 21:15:21 -0000 1.45
@@ -385,22 +385,6 @@
this.threadName = inthreadName;
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.jmeter.testelement.TestElement#threadFinished()
- */
- public void threadFinished() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.jmeter.testelement.TestElement#threadStarted()
- */
- public void threadStarted() {
- }
-
/**
*
*/
1.16 +2 -12 jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElement.java
Index: TestElement.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/testelement/TestElement.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- TestElement.java 12 Jul 2005 20:50:28 -0000 1.15
+++ TestElement.java 4 Aug 2005 21:15:21 -0000 1.16
@@ -157,16 +157,6 @@
public void setThreadName(String threadName);
/**
- * Called at the start of each thread. TODO - should it hava a parameter?
- */
- public void threadStarted();
-
- /**
- * Called at the end of each thread. TODO - should it hava a parameter?
- */
- public void threadFinished();
-
- /**
* Called by Remove to determine if it is safe to remove the element. The
* element can either clean itself up, and return true, or the element can
* return false.
1.3 +33 -24 jakarta-jmeter/src/core/org/apache/jmeter/testelement/ThreadListener.java
1.61 +29 -41 jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterThread.java
Index: JMeterThread.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/threads/JMeterThread.java,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- JMeterThread.java 12 Jul 2005 20:50:42 -0000 1.60
+++ JMeterThread.java 4 Aug 2005 21:15:21 -0000 1.61
@@ -36,9 +36,9 @@
import org.apache.jmeter.testbeans.TestBeanHelper;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.testelement.TestListener;
+import org.apache.jmeter.testelement.ThreadListener;
import org.apache.jmeter.timers.Timer;
import org.apache.jorphan.collections.HashTree;
-import org.apache.jorphan.collections.HashTreeTraverser;
import org.apache.jorphan.collections.SearchByClass;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.jorphan.util.JMeterStopTestException;
@@ -74,9 +74,11 @@
private transient JMeterVariables threadVars;
- private Collection testListeners;
+ private transient Collection testListeners; // Elements that implement TestListener
- private transient ListenerNotifier notifier;
+ private transient Collection threadListeners; // Elements that implement ThreadListener
+
+ private transient ListenerNotifier notifier;
private int threadNum = 0;
@@ -110,10 +112,16 @@
testTree = test;
compiler = new TestCompiler(testTree, threadVars);
controller = (Controller) testTree.getArray()[0];
+
SearchByClass threadListenerSearcher = new SearchByClass(TestListener.class);
test.traverse(threadListenerSearcher);
testListeners = threadListenerSearcher.getSearchResults();
- notifier = note;
+
+ SearchByClass testListenerSearcher = new SearchByClass(ThreadListener.class);
+ test.traverse(testListenerSearcher);
+ threadListeners = testListenerSearcher.getSearchResults();
+
+ notifier = note;
running = true;
}
@@ -337,49 +345,29 @@
threadStarted();
}
- /**
- *
- */
+ private void processThreadListeners(boolean begin) {
+ Iterator it = threadListeners.iterator();
+ while (it.hasNext()){
+ ThreadListener tl=(ThreadListener) it.next();
+ if (begin) {
+ tl.threadStarted();
+ } else {
+ tl.threadFinished();
+ }
+ }
+
+ }
+
private void threadStarted() {
- Traverser startup = new Traverser(true);
- testTree.traverse(startup);
+ processThreadListeners(true);
}
- /**
- *
- */
private void threadFinished() {
- Traverser shut = new Traverser(false);
- testTree.traverse(shut);
+ processThreadListeners(false);
JMeterContextService.decrNumberOfThreads();
threadGroup.decrNumberOfThreads();
}
- private class Traverser implements HashTreeTraverser {
- private boolean isStart = false;
-
- private Traverser(boolean start) {
- isStart = start;
- }
-
- public void addNode(Object node, HashTree subTree) {
- if (node instanceof TestElement) {
- TestElement te = (TestElement) node;
- if (isStart) {
- te.threadStarted();
- } else {
- te.threadFinished();
- }
- }
- }
-
- public void subtractNode() {
- }
-
- public void processPath() {
- }
- }
-
public String getThreadName() {
return threadName;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org