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 ms...@apache.org on 2001/08/30 19:19:04 UTC
cvs commit: jakarta-jmeter/xdocs/user_manual proxy_server.xml threadgroups.xml
mstover1 01/08/30 10:19:04
Modified: . build.xml
bin jmeter.properties
docs running.html
docs/user_manual index.html proxy_server.html
threadgroups.html
src/org/apache/jmeter NewDriver.java
src/org/apache/jmeter/assertions Assertion.java
src/org/apache/jmeter/config AbstractConfigElement.java
Arguments.java
src/org/apache/jmeter/control
AbstractGenerativeController.java
GenericController.java LoopController.java
ModifyController.java
src/org/apache/jmeter/engine ClientJMeterEngine.java
StandardJMeterEngine.java
src/org/apache/jmeter/gui MenuFactory.java
src/org/apache/jmeter/gui/action AboutCommand.java
src/org/apache/jmeter/protocol/http/config UrlConfig.java
UrlConfigFull.java
src/org/apache/jmeter/protocol/http/control AuthManager.java
CookieManager.java HeaderManager.java
HttpTestSample.java
src/org/apache/jmeter/protocol/http/modifier
AnchorModifier.java
src/org/apache/jmeter/protocol/http/parser HtmlParser.java
src/org/apache/jmeter/protocol/http/proxy ProxyControl.java
src/org/apache/jmeter/protocol/http/proxy/gui
ProxyControlGui.java
src/org/apache/jmeter/protocol/http/sampler HTTPSampler.java
src/org/apache/jmeter/protocol/http/util
SSLStaticProvider.java
src/org/apache/jmeter/resources messages.properties
src/org/apache/jmeter/samplers RemoteSampleListenerImpl.java
SampleResult.java
src/org/apache/jmeter/save/handlers
AbstractConfigElementHandler.java
ThreadGroupHandler.java
src/org/apache/jmeter/threads JMeterThread.java
ThreadGroup.java
src/org/apache/jmeter/threads/gui ThreadGroupGui.java
src/org/apache/jmeter/timers ConstantTimer.java
GaussianRandomTimer.java RandomTimer.java
UniformRandomTimer.java
src/org/apache/jmeter/util ClassFinder.java
xdocs running.xml
xdocs/user_manual proxy_server.xml threadgroups.xml
Added: src/org/apache/jmeter/protocol/http/save
ProxyControlHandler.java
src/org/apache/jmeter/protocol/http/util Base64Encoder.java
Log:
New Ramp-up threadgroup options. ProxyControl improvements
Revision Changes Path
1.34 +15 -3 jakarta-jmeter/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/build.xml,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- build.xml 2001/08/28 21:28:29 1.33
+++ build.xml 2001/08/30 17:19:00 1.34
@@ -1,6 +1,5 @@
<project name="JMeter" default="all" basedir=".">
- <property name="build.compiler" value="classic"/>
<!-- Where the class files should live -->
<property name="classes.dest.dir" value="bin/classes"/>
<!-- Where the Sources live -->
@@ -10,6 +9,8 @@
<property name="version" value="_1.6.1"/>
<property name="docs.src" value="./xdocs"/>
<property name="docs.dest" value="./docs"/>
+ <property name="printable_docs.dest" value="./printable_docs"/>
+ <property name="optimize" value="on"/>
<!-- Build classpath -->
<path id="classpath">
@@ -75,7 +76,7 @@
<mkdir dir="${classes.dest.dir}"/>
<javac srcdir="${sources.src.dir}"
destdir="${classes.dest.dir}"
- optimize="on">
+ optimize="${optimize}">
<exclude name="**/*.df*"/>
<exclude name="**/*.html"/>
<exclude name="**/*.tpr"/>
@@ -172,7 +173,18 @@
<target name="docs" depends="no.anakia" if="AnakiaTask.present">
<taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask"/>
<anakia basedir="${docs.src}" destdir="${docs.dest}/"
- extension=".html" style="./site.vsl"
+ extension=".html" style="./xdocs/stylesheets/site.vsl"
+ projectFile="./stylesheets/project.xml"
+ excludes="**/stylesheets/**"
+ includes="**/*.xml"
+ lastModifiedCheck="false"
+ velocityPropertiesFile="${docs.src}/velocity.properties"></anakia>
+ </target>
+
+ <target name="printable_docs" depends="no.anakia" if="AnakiaTask.present">
+ <taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask"/>
+ <anakia basedir="${docs.src}" destdir="${docs.dest}/"
+ extension=".html" style="./xdocs/stylesheets/site_printable.vsl"
projectFile="./stylesheets/project.xml"
excludes="**/stylesheets/**"
includes="**/*.xml"
1.22 +7 -2 jakarta-jmeter/bin/jmeter.properties
Index: jmeter.properties
===================================================================
RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- jmeter.properties 2001/08/28 21:28:29 1.21
+++ jmeter.properties 2001/08/30 17:19:01 1.22
@@ -17,7 +17,11 @@
xml.parser=org.apache.xerces.parsers.SAXParser
#Classname of the ssl provider to be used (to enable testing of https urls)
-ssl.provider=none
+#And the package name where Stream Handlers can be found
+#These provided defaults can be uncommented, and they will work if you are using
+#Sun's JSSE implementation.
+#ssl.provider=com.sun.net.ssl.internal.ssl.Provider
+#ssl.pkgs=com.sun.net.ssl.internal.www.protocol
#icons
timer.tree.icon=timer.gif
@@ -28,8 +32,9 @@
plan.tree.icon=beaker.gif
# Remote Hosts - comma delimited
-remote_hosts=127.0.0.1
+#remote_hosts=127.0.0.1
+#Components to not display in JMeter GUI
not_in_menu=Default Controller,\
org.apache.jmeter.control.DynamicController,\
org.apache.jmeter.protocol.http.control.Cookie,\
1.21 +0 -0 jakarta-jmeter/docs/running.html
Index: running.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/running.html,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- running.html 2001/08/28 21:28:29 1.20
+++ running.html 2001/08/30 17:19:01 1.21
@@ -145,7 +145,7 @@
</ul>
<p align="center"><font size="-1">Copyright (c) 1998-99 <a href="http://java.apache.org">The Java Apache
Project</a>.<br />
-$Id: running.html,v 1.20 2001/08/28 21:28:29 mstover1 Exp $</font> <br />
+$Id: running.html,v 1.21 2001/08/30 17:19:01 mstover1 Exp $</font> <br />
<font size="-1">All rights reserved.</font></p>
</blockquote>
</p>
1.8 +2 -1 jakarta-jmeter/docs/user_manual/index.html
Index: index.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/index.html,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- index.html 2001/08/28 21:28:30 1.7
+++ index.html 2001/08/30 17:19:01 1.8
@@ -116,7 +116,8 @@
<tr>
<td bgcolor="#a0ddf0" colspan="" rowspan="" valign="top" align="left">
<font color="#000000" size="-1" face="arial,helvetica,sanserif">
- $xmlout.outputString($value, true)
+ <b>Most functions in the UI are available from popup menus
+that appear when you right-click on an element in the test tree.</b>
</font>
</td>
</tr>
1.5 +1 -4 jakarta-jmeter/docs/user_manual/proxy_server.html
Index: proxy_server.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/proxy_server.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- proxy_server.html 2001/08/28 21:28:30 1.4
+++ proxy_server.html 2001/08/30 17:19:01 1.5
@@ -151,8 +151,6 @@
not.</p>
<p>
When you are ready to begin, hit "start".</p>
- <p>
-Currently, the Proxy Server does not save these settings when saved to file.</p>
</blockquote>
</p>
</td></tr>
@@ -172,8 +170,7 @@
Url Sample element with domain or path settings, then your Web Test controllers will be created with blank domain and/or path settings (provided
they match, of course). This allows you to simply create test plans with a single top level config element to control which server name is
being tested.<br />
-If there are no Simple Controllers in your test plan, then the Web Test controllers will be generated directly under the ThreadGroup
-object in your tree.
+If there are no Simple Controllers in your test plan, then no samples will be recorded.
</p>
</blockquote>
</p>
1.5 +23 -0 jakarta-jmeter/docs/user_manual/threadgroups.html
Index: threadgroups.html
===================================================================
RCS file: /home/cvs/jakarta-jmeter/docs/user_manual/threadgroups.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- threadgroups.html 2001/08/28 21:28:30 1.4
+++ threadgroups.html 2001/08/30 17:19:01 1.5
@@ -173,6 +173,29 @@
</td></tr>
<tr><td><br/></td></tr>
</table>
+ <table border="0" cellspacing="0" cellpadding="2" width="100%">
+ <tr><td bgcolor="#525D76">
+ <font color="#ffffff" face="arial,helvetica,sanserif">
+ <a name="Ramp-Up"><strong>Ramp-Up</strong></a>
+ </font>
+ </td></tr>
+ <tr><td>
+ <blockquote>
+ <p>
+A ThreadGroup can have a <i>ramp-up</i> period associated with it, to provide a way to gradually increase
+the simulated load. The default value of the ramp-up parameter is zero. With this setting, the number of threads
+specified for the ThreadGroup are all started immediately when the test begins.
+</p>
+ <p>
+If the ramp-up parameter is set to a value greater than zero, the threads are started one at a time, spaced evenly
+over the ramp-up period. The first thread is started immediately, at time=zero. After that, another thread is started
+every <rampUp> / <numThreads> seconds. After <rampUp> seconds have elapsed, all threads will be running.
+</p>
+ </blockquote>
+ </p>
+ </td></tr>
+ <tr><td><br/></td></tr>
+ </table>
</td>
</tr>
1.7 +0 -8 jakarta-jmeter/src/org/apache/jmeter/NewDriver.java
Index: NewDriver.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/NewDriver.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- NewDriver.java 2001/07/26 00:34:43 1.6
+++ NewDriver.java 2001/08/30 17:19:01 1.7
@@ -73,13 +73,6 @@
{
/************************************************************
- * Constructor for the NewDriver object
- ***********************************************************/
- public NewDriver()
- {
- }
-
- /************************************************************
* The main program for the NewDriver class
*
*@param args The command line arguments
@@ -91,7 +84,6 @@
JMeterUtils.getProperties(args[0]);
}
- NewDriver newDriver1 = new NewDriver();
JMeterTreeModel treeModel = new JMeterTreeModel();
JMeterTreeListener treeLis = new JMeterTreeListener(treeModel);
MainFrame main = new MainFrame(ActionRouter.getInstance(),
1.4 +0 -0 jakarta-jmeter/src/org/apache/jmeter/assertions/Assertion.java
Index: Assertion.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/assertions/Assertion.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Assertion.java 2001/08/28 21:28:31 1.3
+++ Assertion.java 2001/08/30 17:19:01 1.4
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/assertions/Assertion.java,v 1.3 2001/08/28 21:28:31 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/assertions/Assertion.java,v 1.4 2001/08/30 17:19:01 mstover1 Exp $
*/
package org.apache.jmeter.assertions;
@@ -23,7 +23,7 @@
* Apache
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:31 $
+ *@created $Date: 2001/08/30 17:19:01 $
*@version 1.0
***********************************************************/
1.11 +0 -0 jakarta-jmeter/src/org/apache/jmeter/config/AbstractConfigElement.java
Index: AbstractConfigElement.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/config/AbstractConfigElement.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- AbstractConfigElement.java 2001/08/28 21:28:31 1.10
+++ AbstractConfigElement.java 2001/08/30 17:19:01 1.11
@@ -65,7 +65,7 @@
* Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:31 $
+ *@created $Date: 2001/08/30 17:19:01 $
*@version 1.0
***********************************************************/
1.13 +0 -0 jakarta-jmeter/src/org/apache/jmeter/config/Arguments.java
Index: Arguments.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/config/Arguments.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Arguments.java 2001/08/28 21:28:31 1.12
+++ Arguments.java 2001/08/30 17:19:01 1.13
@@ -65,7 +65,7 @@
* Apache Foundation
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:31 $
+ *@created $Date: 2001/08/30 17:19:01 $
*@version 1.0
***********************************************************/
1.4 +0 -0 jakarta-jmeter/src/org/apache/jmeter/control/AbstractGenerativeController.java
Index: AbstractGenerativeController.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/AbstractGenerativeController.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- AbstractGenerativeController.java 2001/08/28 21:28:31 1.3
+++ AbstractGenerativeController.java 2001/08/30 17:19:01 1.4
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/AbstractGenerativeController.java,v 1.3 2001/08/28 21:28:31 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/AbstractGenerativeController.java,v 1.4 2001/08/30 17:19:01 mstover1 Exp $
*/
package org.apache.jmeter.control;
import org.apache.jmeter.samplers.Entry;
@@ -17,7 +17,7 @@
* Apache
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:31 $
+ *@created $Date: 2001/08/30 17:19:01 $
*@version 1.0
***********************************************************/
1.19 +0 -0 jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java
Index: GenericController.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- GenericController.java 2001/08/28 21:28:31 1.18
+++ GenericController.java 2001/08/30 17:19:01 1.19
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java,v 1.18 2001/08/28 21:28:31 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/GenericController.java,v 1.19 2001/08/30 17:19:01 mstover1 Exp $
*/
package org.apache.jmeter.control;
import java.util.*;
@@ -21,7 +21,7 @@
* Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:31 $
+ *@created $Date: 2001/08/30 17:19:01 $
*@version 1.0
***********************************************************/
1.5 +0 -0 jakarta-jmeter/src/org/apache/jmeter/control/LoopController.java
Index: LoopController.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/LoopController.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- LoopController.java 2001/08/28 21:28:31 1.4
+++ LoopController.java 2001/08/30 17:19:01 1.5
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/LoopController.java,v 1.4 2001/08/28 21:28:31 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/LoopController.java,v 1.5 2001/08/30 17:19:01 mstover1 Exp $
*/
package org.apache.jmeter.control;
@@ -16,7 +16,7 @@
* Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:31 $
+ *@created $Date: 2001/08/30 17:19:01 $
*@version 1.0
***********************************************************/
1.5 +0 -0 jakarta-jmeter/src/org/apache/jmeter/control/ModifyController.java
Index: ModifyController.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/ModifyController.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ModifyController.java 2001/08/28 21:28:31 1.4
+++ ModifyController.java 2001/08/30 17:19:01 1.5
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/ModifyController.java,v 1.4 2001/08/28 21:28:31 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/control/ModifyController.java,v 1.5 2001/08/30 17:19:01 mstover1 Exp $
*/
package org.apache.jmeter.control;
@@ -23,8 +23,8 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2001/08/28 21:28:31 $
- *@version $Revision: 1.4 $
+ *@created $Date: 2001/08/30 17:19:01 $
+ *@version $Revision: 1.5 $
***********************************************************/
public class ModifyController extends LogicController implements SampleListener,
Serializable
1.9 +0 -0 jakarta-jmeter/src/org/apache/jmeter/engine/ClientJMeterEngine.java
Index: ClientJMeterEngine.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/engine/ClientJMeterEngine.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ClientJMeterEngine.java 2001/08/28 21:28:31 1.8
+++ ClientJMeterEngine.java 2001/08/30 17:19:01 1.9
@@ -67,8 +67,8 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2001/08/28 21:28:31 $
- *@version $Revision: 1.8 $
+ *@created $Date: 2001/08/30 17:19:01 $
+ *@version $Revision: 1.9 $
***********************************************************/
public class ClientJMeterEngine implements JMeterEngine
{
1.8 +3 -2 jakarta-jmeter/src/org/apache/jmeter/engine/StandardJMeterEngine.java
Index: StandardJMeterEngine.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/engine/StandardJMeterEngine.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- StandardJMeterEngine.java 2001/07/26 00:34:44 1.7
+++ StandardJMeterEngine.java 2001/08/30 17:19:01 1.8
@@ -64,8 +64,8 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2001/07/26 00:34:44 $
- *@version $Revision: 1.7 $
+ *@created $Date: 2001/08/30 17:19:01 $
+ *@version $Revision: 1.8 $
***********************************************************/
public class StandardJMeterEngine implements JMeterEngine
{
@@ -106,6 +106,7 @@
while(iter.hasNext())
{
ThreadGroup group = (ThreadGroup)iter.next();
+ group.resetThreadCount();
threads = new JMeterThread[group.getNumThreads()];
for(int i = 0; i < threads.length; i++)
{
1.14 +0 -0 jakarta-jmeter/src/org/apache/jmeter/gui/MenuFactory.java
Index: MenuFactory.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/MenuFactory.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- MenuFactory.java 2001/08/28 21:28:31 1.13
+++ MenuFactory.java 2001/08/30 17:19:01 1.14
@@ -67,7 +67,7 @@
* Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:31 $
+ *@created $Date: 2001/08/30 17:19:01 $
*@version 1.0
***********************************************************/
1.2 +0 -0 jakarta-jmeter/src/org/apache/jmeter/gui/action/AboutCommand.java
Index: AboutCommand.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/gui/action/AboutCommand.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AboutCommand.java 2001/08/28 21:28:31 1.1
+++ AboutCommand.java 2001/08/30 17:19:01 1.2
@@ -70,7 +70,7 @@
* installed protocols, config options, etc.
*
* @author <a href="bloritsch@apache.org">Berin Loritsch</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/08/28 21:28:31 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/08/30 17:19:01 $
*/
public class AboutCommand implements Command {
1.21 +0 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/config/UrlConfig.java
Index: UrlConfig.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/config/UrlConfig.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- UrlConfig.java 2001/08/28 21:28:32 1.20
+++ UrlConfig.java 2001/08/30 17:19:01 1.21
@@ -66,8 +66,8 @@
* Apache Foundation
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:32 $
- *@version $Revision: 1.20 $
+ *@created $Date: 2001/08/30 17:19:01 $
+ *@version $Revision: 1.21 $
*/
public class UrlConfig extends AbstractConfigElement implements Serializable
1.4 +0 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/config/UrlConfigFull.java
Index: UrlConfigFull.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/config/UrlConfigFull.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- UrlConfigFull.java 2001/08/28 21:28:32 1.3
+++ UrlConfigFull.java 2001/08/30 17:19:01 1.4
@@ -71,8 +71,8 @@
* Apache Foundation
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:32 $
- *@version $Revision: 1.3 $
+ *@created $Date: 2001/08/30 17:19:01 $
+ *@version $Revision: 1.4 $
*/
public class UrlConfigFull extends UrlConfig implements Serializable
1.12 +1 -103 jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/AuthManager.java
Index: AuthManager.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/AuthManager.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- AuthManager.java 2001/08/28 21:28:32 1.11
+++ AuthManager.java 2001/08/30 17:19:02 1.12
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/AuthManager.java,v 1.11 2001/08/28 21:28:32 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/AuthManager.java,v 1.12 2001/08/30 17:19:02 mstover1 Exp $
*/
package org.apache.jmeter.protocol.http.control;
@@ -16,6 +16,7 @@
import org.apache.jmeter.gui.JMeterComponentModel;
import org.apache.jmeter.config.ConfigElement;
import org.apache.jmeter.save.Saveable;
+import org.apache.jmeter.protocol.http.util.Base64Encoder;
/************************************************************
* This class provides a way to provide Authorization in jmeter requests. The
* format of the authorization file is: URL user pass where URL is an HTTP URL,
@@ -23,7 +24,7 @@
*
*@author <a href="mailto:luta.raphael@networks.vivendi.com">Rapha�l Luta
* </a>
- *@created $Date: 2001/08/28 21:28:32 $
+ *@created $Date: 2001/08/30 17:19:02 $
*@version 0.9
***********************************************************/
public class AuthManager implements ConfigElement, JMeterComponentModel, Saveable,
@@ -391,109 +392,6 @@
{
return !url.getProtocol().toUpperCase().equals("HTTP") &&
!url.getProtocol().toUpperCase().equals("HTTPS");
- }
-}
-
-/************************************************************
- * This class provides an implementation of Base64 encoding without relying on
- * the the sun.* packages.
- *
- *@author $Author: mstover1 $
- *@created $Date: 2001/08/28 21:28:32 $
- *@version $Revision: 1.11 $
- ***********************************************************/
-
-class Base64Encoder
-{
-
- private final static char[] pem_array = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 43, 47};
- private final static char eq = 61;
-
- /************************************************************
- * !ToDo (Constructor description)
- ***********************************************************/
- public Base64Encoder()
- {
- }
-
- /************************************************************
- * !ToDo (Method description)
- *
- *@param s !ToDo (Parameter description)
- *@return !ToDo (Return description)
- ***********************************************************/
- public final static String encode(String s)
- {
- return encode(s.getBytes());
- }
-
- /************************************************************
- * !ToDo (Method description)
- *
- *@param bs !ToDo (Parameter description)
- *@return !ToDo (Return description)
- ***********************************************************/
- public final static String encode(byte[] bs)
- {
- StringBuffer out = new StringBuffer("");
- int bl = bs.length;
- for (int i = 0; i < bl; i += 3)
- {
- out.append(encodeAtom(bs, i, (bl - i)));
- }
- return out.toString();
- }
-
- /************************************************************
- * !ToDo (Method description)
- *
- *@param b !ToDo (Parameter description)
- *@param strt !ToDo (Parameter description)
- *@param left !ToDo (Parameter description)
- *@return !ToDo (Return description)
- ***********************************************************/
- public final static String encodeAtom(byte[] b, int strt, int left)
- {
- StringBuffer out = new StringBuffer("");
- if (left == 1)
- {
- byte b1 = b[strt];
- int k = 0;
- out.append(String.valueOf(pem_array[b1 >>> 2 & 63]));
- out.append(String.valueOf(pem_array[(b1 << 4 & 48) + (k >>> 4 & 15)]));
- out.append(String.valueOf(eq));
- out.append(String.valueOf(eq));
- return out.toString();
- }
- if (left == 2)
- {
- byte b2 = b[strt];
- byte b4 = b[strt + 1];
- int l = 0;
- out.append(String.valueOf(pem_array[b2 >>> 2 & 63]));
- out.append(String.valueOf(pem_array[(b2 << 4 & 48) + (b4 >>> 4 & 15)]));
- out.append(String.valueOf(pem_array[(b4 << 2 & 60) + (l >>> 6 & 3)]));
- out.append(String.valueOf(eq));
- return out.toString();
- }
- byte b3 = b[strt];
- byte b5 = b[strt + 1];
- byte b6 = b[strt + 2];
- out.append(String.valueOf(pem_array[b3 >>> 2 & 63]));
- out.append(String.valueOf(pem_array[(b3 << 4 & 48) + (b5 >>> 4 & 15)]));
- out.append(String.valueOf(pem_array[(b5 << 2 & 60) + (b6 >>> 6 & 3)]));
- out.append(String.valueOf(pem_array[b6 & 63]));
- return out.toString();
- }
-
- static
- {
}
}
1.12 +0 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/CookieManager.java
Index: CookieManager.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/CookieManager.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- CookieManager.java 2001/08/28 21:28:32 1.11
+++ CookieManager.java 2001/08/30 17:19:02 1.12
@@ -73,7 +73,7 @@
* pass cookies along with a request.
*
* @author <a href="mailto:sdowd@arcmail.com">Sean Dowd</a>
- * @version $Revision: 1.11 $ $Date: 2001/08/28 21:28:32 $
+ * @version $Revision: 1.12 $ $Date: 2001/08/30 17:19:02 $
*/
public class CookieManager implements ConfigElement,JMeterComponentModel,Saveable,
Serializable
1.6 +0 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/HeaderManager.java
Index: HeaderManager.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/HeaderManager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- HeaderManager.java 2001/08/28 21:28:32 1.5
+++ HeaderManager.java 2001/08/30 17:19:02 1.6
@@ -76,7 +76,7 @@
* pass HTTP headers along with a request.
*
* @author <a href="mailto:giacomo@apache.org">Giacomo Pati</a>
- * @version $Revision: 1.5 $ $Date: 2001/08/28 21:28:32 $
+ * @version $Revision: 1.6 $ $Date: 2001/08/30 17:19:02 $
*/
public class HeaderManager implements ConfigElement,JMeterComponentModel,Saveable,
Serializable
1.24 +0 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/HttpTestSample.java
Index: HttpTestSample.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/HttpTestSample.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- HttpTestSample.java 2001/08/28 21:28:32 1.23
+++ HttpTestSample.java 2001/08/30 17:19:02 1.24
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/HttpTestSample.java,v 1.23 2001/08/28 21:28:32 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/control/HttpTestSample.java,v 1.24 2001/08/30 17:19:02 mstover1 Exp $
*/
package org.apache.jmeter.protocol.http.control;
@@ -32,7 +32,7 @@
* Apache Foundation
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:32 $
+ *@created $Date: 2001/08/30 17:19:02 $
*@version 1.0
***********************************************************/
1.5 +0 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java
Index: AnchorModifier.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- AnchorModifier.java 2001/08/28 21:28:32 1.4
+++ AnchorModifier.java 2001/08/30 17:19:02 1.5
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java,v 1.4 2001/08/28 21:28:32 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/modifier/AnchorModifier.java,v 1.5 2001/08/30 17:19:02 mstover1 Exp $
*/
package org.apache.jmeter.protocol.http.modifier;
@@ -33,7 +33,7 @@
* Apache
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:32 $
+ *@created $Date: 2001/08/30 17:19:02 $
*@version 1.0
***********************************************************/
1.11 +0 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/parser/HtmlParser.java
Index: HtmlParser.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/parser/HtmlParser.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- HtmlParser.java 2001/08/28 21:28:32 1.10
+++ HtmlParser.java 2001/08/30 17:19:02 1.11
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/parser/HtmlParser.java,v 1.10 2001/08/28 21:28:32 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/parser/HtmlParser.java,v 1.11 2001/08/30 17:19:02 mstover1 Exp $
*/
package org.apache.jmeter.protocol.http.parser;
@@ -272,8 +272,8 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2001/08/28 21:28:32 $
- *@version $Revision: 1.10 $
+ *@created $Date: 2001/08/30 17:19:02 $
+ *@version $Revision: 1.11 $
***********************************************************/
public static class Test extends TestCase
{
1.5 +5 -0 jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/ProxyControl.java
Index: ProxyControl.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/ProxyControl.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ProxyControl.java 2001/08/28 21:28:32 1.4
+++ ProxyControl.java 2001/08/30 17:19:02 1.5
@@ -22,7 +22,7 @@
* Apache Foundation
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:32 $
+ *@created $Date: 2001/08/30 17:19:02 $
*@version 1.0
***********************************************************/
@@ -54,6 +54,11 @@
public void setPort(int port)
{
this.putProperty(PORT, new Integer(port));
+ }
+
+ public Class getTagHandlerClass()
+ {
+ return org.apache.jmeter.protocol.http.save.ProxyControlHandler.class;
}
/************************************************************
1.2 +24 -1 jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java
Index: ProxyControlGui.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProxyControlGui.java 2001/07/26 00:34:48 1.1
+++ ProxyControlGui.java 2001/08/30 17:19:02 1.2
@@ -18,7 +18,8 @@
* @version 1.0
*/
-public class ProxyControlGui extends JPanel implements ModelSupported,ActionListener
+public class ProxyControlGui extends JPanel implements ModelSupported,ActionListener,
+ KeyListener
{
private static final String STOP = "stop";
private static final String START = "start";
@@ -87,6 +88,8 @@
{
JPanel panel = new JPanel();
panel.add(new JLabel(JMeterUtils.getResString("port")));
+ portField.setName(ProxyControl.PORT);
+ portField.addKeyListener(this);
portField.setText(""+model.getPort());
panel.add(portField);
return panel;
@@ -168,6 +171,26 @@
{
((JMeterJListModel)includeList.getModel()).clear();
model.clearIncludedPatterns();
+ }
+ }
+
+ public void keyPressed(KeyEvent e)
+ {
+ }
+
+ public void keyTyped(KeyEvent e)
+ {
+ }
+
+ public void keyReleased(KeyEvent e)
+ {
+ String fieldName = e.getComponent().getName();
+ if (fieldName.equals(ProxyControl.PORT)) {
+ try {
+ model.setPort(Integer.parseInt(portField.getText()));
+ } catch (NumberFormatException nfe) {
+ // Ignore
+ }
}
}
}
1.25 +5 -4 jakarta-jmeter/src/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
Index: HTTPSampler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- HTTPSampler.java 2001/08/22 23:34:47 1.24
+++ HTTPSampler.java 2001/08/30 17:19:02 1.25
@@ -6,7 +6,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v 1.24 2001/08/22 23:34:47 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java,v 1.25 2001/08/30 17:19:02 mstover1 Exp $
*/
package org.apache.jmeter.protocol.http.sampler;
@@ -31,8 +31,8 @@
* HTTP requests, including cookies and authentication.
*
*@author Michael Stover
- *@created $Date: 2001/08/22 23:34:47 $
- *@version $Revision: 1.24 $
+ *@created $Date: 2001/08/30 17:19:02 $
+ *@version $Revision: 1.25 $
*/
public class HTTPSampler implements Sampler
{
@@ -463,7 +463,8 @@
static
{
- if (!JMeterUtils.getPropDefault("ssl.provider", "none").equals("none"))
+ if (!JMeterUtils.getPropDefault("ssl.provider", "none").equals("none") &&
+ !JMeterUtils.getPropDefault("ssl.pkgs","none").equals("none"))
{
try
{
1.1 jakarta-jmeter/src/org/apache/jmeter/protocol/http/save/ProxyControlHandler.java
Index: ProxyControlHandler.java
===================================================================
/*
* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache JMeter" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache JMeter", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.jmeter.protocol.http.save;
import java.io.*;
import java.util.*;
import org.apache.jmeter.protocol.http.proxy.ProxyControl;
import org.apache.jmeter.save.*;
import org.apache.jmeter.save.xml.*;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.Argument;
import org.xml.sax.Attributes;
import org.apache.jmeter.save.handlers.AbstractConfigElementHandler;
import org.apache.jmeter.save.handlers.JMeterHandler;
/************************************************************
* Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
*
*@author Michael Stover
*@created June 9, 2001
*@version 1.0
***********************************************************/
public class ProxyControlHandler extends AbstractConfigElementHandler
{
/************************************************************
* This is called when a tag is first encountered for this handler class to
* handle. The attributes of the tag are passed, and the SaveHandler object is
* expected to instantiate a new object.
*
*@param atts The new Atts value
*@exception Exception Description of Exception
***********************************************************/
public void setAtts(Attributes atts) throws Exception
{
String className = atts.getValue("type");
config = (ProxyControl)Class.forName(className).newInstance();
}
/************************************************************
* Gets the tag name that will trigger the use of this object's TagHandler.
*
*@return The PrimaryTagName value
***********************************************************/
public String getPrimaryTagName()
{
return "ProxyControl";
}
/************************************************************
* Called by reflection when the <property> tag is ended.
***********************************************************/
public void propertyTagEnd()
{
List children = xmlParent.takeChildObjects(this);
if(children.size() == 1) {
// Include or Exclude list, encapsulated as a set of Arguments
Object model = ((TagHandler)children.get(0)).getModel();
if (model instanceof Arguments) {
Arguments args = (Arguments) model;
List list = null;
ProxyControl proxy = (ProxyControl) config;
if (currentProperty.equals("includes")) {
list = proxy.getIncludePatterns();
} else if (currentProperty.equals("excludes")) {
list = proxy.getExcludePatterns();
}
if (list != null) {
for (Iterator iter = args.iterator(); iter.hasNext(); ) {
Argument arg = (Argument) iter.next();
list.add(arg.getValue());
}
}
}
}
}
/************************************************************
* Tells the object to save itself to the given output stream.
*
*@param obj Description of Parameter
*@param out Description of Parameter
*@exception IOException Description of Exception
***********************************************************/
public void save(Saveable obj, Writer out) throws IOException
{
ProxyControl saved = (ProxyControl)obj;
String tagName = getPrimaryTagName();
out.write("<" + tagName);
out.write(" type=\"");
out.write(JMeterHandler.convertToXML(saved.getClass().getName()));
out.write("\"");
out.write(">\n");
for (Iterator iter = saved.getPropertyNames().iterator(); iter.hasNext(); ) {
String key = (String)iter.next();
Object value = saved.getProperty(key);
writeProperty(out, key, value);
}
writePatterns(saved.getIncludePatterns(), "includes", out);
writePatterns(saved.getExcludePatterns(), "excludes", out);
out.write("</" + tagName + ">");
}
private void writePatterns(List list, String name, Writer out) throws IOException {
Arguments args = new Arguments();
int i = 0;
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
String pattern = (String) iter.next();
args.addArgument("arg" + i++, pattern);
}
writeProperty(out, name, args);
}
}
1.5 +16 -5 jakarta-jmeter/src/org/apache/jmeter/protocol/http/util/SSLStaticProvider.java
Index: SSLStaticProvider.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/protocol/http/util/SSLStaticProvider.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- SSLStaticProvider.java 2001/07/26 00:34:48 1.4
+++ SSLStaticProvider.java 2001/08/30 17:19:02 1.5
@@ -64,17 +64,28 @@
package org.apache.jmeter.protocol.http.util;
import java.security.Security;
-import com.sun.net.ssl.internal.ssl.Provider;
+import java.security.Provider;
+import org.apache.jmeter.util.JMeterUtils;
public class SSLStaticProvider
{
public SSLStaticProvider()
{ // add ssl provider from jsse
- Security.addProvider(new Provider());
- // register https protocol handler with jsse provider
- System.setProperty("java.protocol.handler.pkgs",
- "com.sun.net.ssl.internal.www.protocol");
+ try
+ {
+ Security.addProvider((Provider)Class.forName(
+ JMeterUtils.getPropDefault(
+ "ssl_provider","com.sun.net.ssl.internal.ssl.Provider")).newInstance());
+ // register https protocol handler with jsse provider
+ System.setProperty("java.protocol.handler.pkgs",
+ JMeterUtils.getPropDefault("ssl.pkgs","com.sun.net.ssl.internal.www.protocol"));
+ }
+ catch(Exception e)
+ {
+ System.out.println("Initialization of SSL support failed");
+ }
+
}
}
1.1 jakarta-jmeter/src/org/apache/jmeter/protocol/http/util/Base64Encoder.java
Index: Base64Encoder.java
===================================================================
/*
* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache JMeter" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache JMeter", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.jmeter.protocol.http.util;
/************************************************************
* This class provides an implementation of Base64 encoding without relying on
* the the sun.* packages.
*
*@author $Author: mstover1 $
*@created $Date: 2001/08/30 17:19:02 $
*@version $Revision: 1.1 $
***********************************************************/
public class Base64Encoder
{
private final static char[] pem_array = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, 88, 89, 90, 97, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116,
117, 118, 119, 120, 121, 122, 48, 49, 50,
51, 52, 53, 54, 55, 56, 57, 43, 47};
private final static char eq = 61;
/************************************************************
* !ToDo (Constructor description)
***********************************************************/
public Base64Encoder()
{
}
/************************************************************
* !ToDo (Method description)
*
*@param s !ToDo (Parameter description)
*@return !ToDo (Return description)
***********************************************************/
public final static String encode(String s)
{
return encode(s.getBytes());
}
/************************************************************
* !ToDo (Method description)
*
*@param bs !ToDo (Parameter description)
*@return !ToDo (Return description)
***********************************************************/
public final static String encode(byte[] bs)
{
StringBuffer out = new StringBuffer("");
int bl = bs.length;
for (int i = 0; i < bl; i += 3)
{
out.append(encodeAtom(bs, i, (bl - i)));
}
return out.toString();
}
/************************************************************
* !ToDo (Method description)
*
*@param b !ToDo (Parameter description)
*@param strt !ToDo (Parameter description)
*@param left !ToDo (Parameter description)
*@return !ToDo (Return description)
***********************************************************/
public final static String encodeAtom(byte[] b, int strt, int left)
{
StringBuffer out = new StringBuffer("");
if (left == 1)
{
byte b1 = b[strt];
int k = 0;
out.append(String.valueOf(pem_array[b1 >>> 2 & 63]));
out.append(String.valueOf(pem_array[(b1 << 4 & 48) + (k >>> 4 & 15)]));
out.append(String.valueOf(eq));
out.append(String.valueOf(eq));
return out.toString();
}
if (left == 2)
{
byte b2 = b[strt];
byte b4 = b[strt + 1];
int l = 0;
out.append(String.valueOf(pem_array[b2 >>> 2 & 63]));
out.append(String.valueOf(pem_array[(b2 << 4 & 48) + (b4 >>> 4 & 15)]));
out.append(String.valueOf(pem_array[(b4 << 2 & 60) + (l >>> 6 & 3)]));
out.append(String.valueOf(eq));
return out.toString();
}
byte b3 = b[strt];
byte b5 = b[strt + 1];
byte b6 = b[strt + 2];
out.append(String.valueOf(pem_array[b3 >>> 2 & 63]));
out.append(String.valueOf(pem_array[(b3 << 4 & 48) + (b5 >>> 4 & 15)]));
out.append(String.valueOf(pem_array[(b5 << 2 & 60) + (b6 >>> 6 & 3)]));
out.append(String.valueOf(pem_array[b6 & 63]));
return out.toString();
}
}
1.6 +1 -1 jakarta-jmeter/src/org/apache/jmeter/resources/messages.properties
Index: messages.properties
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/resources/messages.properties,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- messages.properties 2001/08/28 21:28:33 1.5
+++ messages.properties 2001/08/30 17:19:02 1.6
@@ -53,4 +53,4 @@
patterns_to_include=Patterns to Include
patterns_to_exclude=Patterns to Exclude
add_pattern=Add Pattern
-
+ramp_up=Ramp-Up Period (sec)
1.6 +0 -0 jakarta-jmeter/src/org/apache/jmeter/samplers/RemoteSampleListenerImpl.java
Index: RemoteSampleListenerImpl.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/samplers/RemoteSampleListenerImpl.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- RemoteSampleListenerImpl.java 2001/08/28 21:28:33 1.5
+++ RemoteSampleListenerImpl.java 2001/08/30 17:19:03 1.6
@@ -61,8 +61,8 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2001/08/28 21:28:33 $
- *@version $Revision: 1.5 $
+ *@created $Date: 2001/08/30 17:19:03 $
+ *@version $Revision: 1.6 $
***********************************************************/
public class RemoteSampleListenerImpl
extends java.rmi.server.UnicastRemoteObject
1.12 +0 -0 jakarta-jmeter/src/org/apache/jmeter/samplers/SampleResult.java
Index: SampleResult.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/samplers/SampleResult.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- SampleResult.java 2001/08/28 21:28:33 1.11
+++ SampleResult.java 2001/08/30 17:19:03 1.12
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/samplers/SampleResult.java,v 1.11 2001/08/28 21:28:33 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/samplers/SampleResult.java,v 1.12 2001/08/30 17:19:03 mstover1 Exp $
*/
package org.apache.jmeter.samplers;
@@ -19,8 +19,8 @@
* sample of an entry.
*
*@author $Author: mstover1 $
- *@created $Date: 2001/08/28 21:28:33 $
- *@version $Revision: 1.11 $
+ *@created $Date: 2001/08/30 17:19:03 $
+ *@version $Revision: 1.12 $
***********************************************************/
public class SampleResult implements Serializable
{
1.10 +3 -14 jakarta-jmeter/src/org/apache/jmeter/save/handlers/AbstractConfigElementHandler.java
Index: AbstractConfigElementHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/AbstractConfigElementHandler.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- AbstractConfigElementHandler.java 2001/07/26 00:34:50 1.9
+++ AbstractConfigElementHandler.java 2001/08/30 17:19:03 1.10
@@ -83,9 +83,9 @@
public class AbstractConfigElementHandler extends TagHandler
{
- private AbstractConfigElement config;
+ protected AbstractConfigElement config;
- private String currentProperty;
+ protected String currentProperty;
/************************************************************
@@ -169,17 +169,11 @@
public void property(String data)
{
-
-
if(data != null && data.trim().length() > 0)
{
-
config.putProperty(currentProperty, data.trim());
-
currentProperty = null;
-
}
-
}
@@ -189,16 +183,11 @@
public void propertyTagEnd()
{
-
List children = xmlParent.takeChildObjects(this);
-
if(children.size() == 1)
{
-
config.putProperty(currentProperty, ((TagHandler)children.get(0)).getModel());
-
}
-
}
@@ -248,7 +237,7 @@
*@exception IOException Description of Exception
***********************************************************/
- private void writeProperty(Writer out, String key, Object value) throws IOException
+ protected void writeProperty(Writer out, String key, Object value) throws IOException
{
out.write("<property name=\"");
1.11 +11 -2 jakarta-jmeter/src/org/apache/jmeter/save/handlers/ThreadGroupHandler.java
Index: ThreadGroupHandler.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/ThreadGroupHandler.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- ThreadGroupHandler.java 2001/08/16 23:36:57 1.10
+++ ThreadGroupHandler.java 2001/08/30 17:19:03 1.11
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/ThreadGroupHandler.java,v 1.10 2001/08/16 23:36:57 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/save/handlers/ThreadGroupHandler.java,v 1.11 2001/08/30 17:19:03 mstover1 Exp $
*/
package org.apache.jmeter.save.handlers;
@@ -23,7 +23,7 @@
* Title: Description: Copyright: Copyright (c) 2001 Company:
*
*@author Michael Stover
- *@created $Date: 2001/08/16 23:36:57 $
+ *@created $Date: 2001/08/30 17:19:03 $
*@version 1.0
***********************************************************/
@@ -52,6 +52,7 @@
try
{
group.setNumThreads(Integer.parseInt(atts.getValue("numThreads")));
+ group.setRampUp(Integer.parseInt(atts.getValue("rampUp")));
}
catch (Exception ex)
{
@@ -93,8 +94,16 @@
out.write("<ThreadGroup name=\"");
out.write(JMeterHandler.convertToXML(save.getName()));
out.write("\" numThreads=\"");
+
+ out.write(" numThreads=\"");
out.write("" + save.getNumThreads());
out.write("\">\n");
+
+ out.write(" rampUp=\"");
+ out.write("" + save.getRampUp());
+ out.write("\"");
+
+ out.write(">\n");
Collection controllers = new LinkedList();
controllers.add(save.getSamplerController());
JMeterHandler.writeControllers(controllers, out);
1.15 +185 -204 jakarta-jmeter/src/org/apache/jmeter/threads/JMeterThread.java
Index: JMeterThread.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/threads/JMeterThread.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- JMeterThread.java 2001/08/16 23:36:57 1.14
+++ JMeterThread.java 2001/08/30 17:19:03 1.15
@@ -1,204 +1,185 @@
-/*
- * ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Apache JMeter" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Apache JMeter", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
- package org.apache.jmeter.threads;
-
-import java.util.*;
-
-import org.apache.jmeter.samplers.SampleListener;
-import org.apache.jmeter.control.NoEntryException;
-import org.apache.jmeter.timers.Timer;
-import org.apache.jmeter.control.SamplerController;
-import org.apache.jmeter.samplers.SampleEvent;
-import org.apache.jmeter.samplers.Sampler;
-import org.apache.jmeter.samplers.SampleResult;
-import org.apache.jmeter.samplers.*;
-import org.apache.jmeter.assertions.*;
-
-/************************************************************
- * The JMeter interface to the sampling process, allowing JMeter to see the
- * timing, add listeners for sampling events and to stop the sampling process.
- *
- *@author $Author: mstover1 $
- *@created $Date: 2001/08/16 23:36:57 $
- *@version $Revision: 1.14 $
- ***********************************************************/
-public class JMeterThread implements Runnable, java.io.Serializable
-{
-
- ThreadGroup group;
- Collection listeners;
- List timers;
- SamplerController controller;
- private boolean running;
- static Map samplers = new HashMap();
-
- /************************************************************
- * !ToDo (Constructor description)
- ***********************************************************/
- public JMeterThread()
- {
- }
-
- /************************************************************
- * !ToDo (Constructor description)
- *
- *@param group !ToDo (Parameter description)
- ***********************************************************/
- public JMeterThread(ThreadGroup group)
- {
- this.group = group;
- running = true;
- }
-
- /************************************************************
- * !ToDo (Method description)
- ***********************************************************/
- public void run()
- {
- running = true;
- timers = group.getTimers();
- controller = (SamplerController)group.getSamplerController().clone();
- listeners = controller.getListeners();
- Entry entry = null;
- while (running)
- {
- if(!((entry = controller.nextEntry()) instanceof CycleEntry))
- {
- delay(timers);
- if (entry == null)
- {
- running = false;
- break;
- }
- Sampler sampler = null;
- try
- {
- sampler = getSampler(entry);
- }
- catch (Exception ex)
- {
- ex.printStackTrace();
- running = false;
- }
- SampleResult result = sampler.sample(entry);
- checkAssertions(entry,result);
- notifyListeners(result);
- }
- }
- }
-
- private void checkAssertions(Entry entry,SampleResult result)
- {
- Iterator iter = entry.getAssertions().iterator();
- List resultList = new LinkedList();
- while(iter.hasNext())
- {
- resultList.add(((Assertion)iter.next()).getResult(result));
- }
- result.putValue(SampleResult.ASSERTION_RESULTS,resultList);
- }
-
- /************************************************************
- * !ToDo (Method description)
- ***********************************************************/
- public void stop()
- {
- running = false;
- }
-
- private Sampler getSampler(Entry entry) throws Exception
- {
- Class sClass = entry.getSamplerClass();
- Sampler sampler = (Sampler)samplers.get(sClass);
- if (sampler == null)
- {
- sampler = (Sampler)sClass.newInstance();
- samplers.put(sClass, sampler);
- }
- return sampler;
- }
-
- private void delay(List timers)
- {
- int sum = 0;
- Iterator iter = timers.iterator();
- while (iter.hasNext())
- {
- sum += ((Timer)iter.next()).delay();
- }
- try
- {
- Thread.sleep(sum);
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
-
- private void notifyListeners(SampleResult result)
- {
- SampleEvent event = new SampleEvent(result, group.getName());
- Iterator iter = listeners.iterator();
- while (iter.hasNext())
- {
- SampleListener item = (SampleListener)iter.next();
- item.sampleOccurred(event);
- }
- group.sampleOccurred(event);
- }
-
-}
-
+/* Project: Mako
+ * Copyright (c) Xerox Corporation 1999-2001. All rights reserved. Xerox, The
+ * Document Company, and the stylized X are trademarks of the Xerox
+ * Corporation. All other products are trademarks of their respective
+ * companies.
+ *
+ * All rights reserved
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/threads/JMeterThread.java,v 1.15 2001/08/30 17:19:03 mstover1 Exp $
+ */
+package org.apache.jmeter.threads;
+
+import java.util.*;
+
+import org.apache.jmeter.samplers.SampleListener;
+import org.apache.jmeter.control.NoEntryException;
+import org.apache.jmeter.timers.Timer;
+import org.apache.jmeter.control.SamplerController;
+import org.apache.jmeter.samplers.SampleEvent;
+import org.apache.jmeter.samplers.Sampler;
+import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.samplers.*;
+import org.apache.jmeter.assertions.*;
+
+/************************************************************
+ * The JMeter interface to the sampling process, allowing JMeter to see the
+ * timing, add listeners for sampling events and to stop the sampling process.
+ *
+ *@author $Author: mstover1 $
+ *@created $Date: 2001/08/30 17:19:03 $
+ *@version $Revision: 1.15 $
+ ***********************************************************/
+public class JMeterThread implements Runnable, java.io.Serializable
+{
+
+ ThreadGroup group;
+ Collection listeners;
+ List timers;
+ SamplerController controller;
+ private boolean running;
+ private int threadNumberInGroup;
+ static Map samplers = new HashMap();
+
+ /************************************************************
+ * !ToDo (Constructor description)
+ ***********************************************************/
+ public JMeterThread()
+ {
+ }
+
+ /************************************************************
+ * !ToDo (Constructor description)
+ *
+ *@param group !ToDo (Parameter description)
+ ***********************************************************/
+ public JMeterThread(ThreadGroup group)
+ {
+ this.group = group;
+ running = true;
+ threadNumberInGroup = group.threadNumber();
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ ***********************************************************/
+ public void run()
+ {
+ running = true;
+ timers = group.getTimers();
+ controller = (SamplerController)group.getSamplerController().clone();
+ listeners = controller.getListeners();
+ Entry entry = null;
+ rampUpDelay();
+ while (running)
+ {
+ if (!((entry = controller.nextEntry()) instanceof CycleEntry))
+ {
+ delay(timers);
+ if (entry == null)
+ {
+ running = false;
+ break;
+ }
+ Sampler sampler = null;
+ try
+ {
+ sampler = getSampler(entry);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ running = false;
+ }
+ SampleResult result = sampler.sample(entry);
+ checkAssertions(entry, result);
+ notifyListeners(result);
+ }
+ }
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ ***********************************************************/
+ public void stop()
+ {
+ running = false;
+ }
+
+ private Sampler getSampler(Entry entry) throws Exception
+ {
+ Class sClass = entry.getSamplerClass();
+ Sampler sampler = (Sampler)samplers.get(sClass);
+ if (sampler == null)
+ {
+ sampler = (Sampler)sClass.newInstance();
+ samplers.put(sClass, sampler);
+ }
+ return sampler;
+ }
+
+ private void checkAssertions(Entry entry, SampleResult result)
+ {
+ Iterator iter = entry.getAssertions().iterator();
+ List resultList = new LinkedList();
+ while (iter.hasNext())
+ {
+ resultList.add(((Assertion)iter.next()).getResult(result));
+ }
+ result.putValue(SampleResult.ASSERTION_RESULTS, resultList);
+ }
+
+ private void delay(List timers)
+ {
+ int sum = 0;
+ Iterator iter = timers.iterator();
+ while (iter.hasNext())
+ {
+ sum += ((Timer)iter.next()).delay();
+ }
+ try
+ {
+ Thread.sleep(sum);
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ private void notifyListeners(SampleResult result)
+ {
+ SampleEvent event = new SampleEvent(result, group.getName());
+ Iterator iter = listeners.iterator();
+ while (iter.hasNext())
+ {
+ SampleListener item = (SampleListener)iter.next();
+ item.sampleOccurred(event);
+ }
+ group.sampleOccurred(event);
+ }
+
+ /**
+ * Initial delay if ramp-up period is active for this group
+ */
+ private void rampUpDelay()
+ {
+ int rampUpMs = group.getRampUp() * 1000;
+ int threads = group.getNumThreads();
+ if (rampUpMs > 0 && threads > 0)
+ {
+ int delayPerThread = rampUpMs / threads;
+ int initialDelay = delayPerThread * threadNumberInGroup;
+ try
+ {
+ Thread.sleep(initialDelay);
+ System.out.println("Thread #" + (threadNumberInGroup + 1) + " of " + threads + " now active.");
+ }
+ catch (InterruptedException e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
+
1.15 +32 -0 jakarta-jmeter/src/org/apache/jmeter/threads/ThreadGroup.java
Index: ThreadGroup.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/threads/ThreadGroup.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ThreadGroup.java 2001/08/28 21:28:33 1.14
+++ ThreadGroup.java 2001/08/30 17:19:03 1.15
@@ -73,7 +73,7 @@
* Apache Foundation
*
*@author Michael Stover
- *@created $Date: 2001/08/28 21:28:33 $
+ *@created $Date: 2001/08/30 17:19:03 $
*@version 1.0
***********************************************************/
@@ -87,6 +87,8 @@
List timers = new LinkedList();
private String name;
private SampleQueue queue = null;
+ int rampUp = 0;
+ private int threadsStarted = 0;
private static List addableList;
@@ -149,10 +151,35 @@
}
/************************************************************
+ * !ToDo (Method aadescription)
+ *
+ *@param rampUp !ToDo (Parameter description)
+ ***********************************************************/
+ public void setRampUp(int rampUp)
+ {
+ this.rampUp = rampUp;
+ }
+
+ /************************************************************
* !ToDoo (Method description)
*
*@return !ToDo (Return description)
***********************************************************/
+ public int getRampUp()
+ {
+ return this.rampUp;
+ }
+
+ public synchronized int threadNumber()
+ {
+ return threadsStarted++;
+ }
+
+ /************************************************************
+ * !ToDoo (Method description)
+ *
+ *@return !ToDo (Return description)
+ ***********************************************************/
public SamplerController getSamplerController()
{
return this.control;
@@ -173,6 +200,11 @@
{
return this.numThreads;
}
+
+ public synchronized void resetThreadCount()
+ {
+ threadsStarted = 0;
+ }
/************************************************************
* !ToDoo (Method description)
1.7 +160 -150 jakarta-jmeter/src/org/apache/jmeter/threads/gui/ThreadGroupGui.java
Index: ThreadGroupGui.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/threads/gui/ThreadGroupGui.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ThreadGroupGui.java 2001/07/26 00:34:51 1.6
+++ ThreadGroupGui.java 2001/08/30 17:19:03 1.7
@@ -1,150 +1,160 @@
-/*
- * ====================================================================
- * The Apache Software License, Version 1.1
- *
- * Copyright (c) 2001 The Apache Software Foundation. All rights
- * reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes software developed by the
- * Apache Software Foundation (http://www.apache.org/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Apache" and "Apache Software Foundation" and
- * "Apache JMeter" must not be used to endorse or promote products
- * derived from this software without prior written permission. For
- * written permission, please contact apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache",
- * "Apache JMeter", nor may "Apache" appear in their name, without
- * prior written permission of the Apache Software Foundation.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- */
- package org.apache.jmeter.threads.gui;
-
-import javax.swing.*;
-import java.awt.event.*;
-
-import org.apache.jmeter.gui.*;
-import org.apache.jmeter.threads.ThreadGroup;
-import org.apache.jmeter.util.JMeterUtils;
-
-/**
- * Title: JMeter
- * Description:
- * Copyright: Copyright (c) 2000
- * Company: Apache
- * @author Michael Stover
- * @version 1.0
- */
-
-public class ThreadGroupGui extends JPanel implements ModelSupported,KeyListener
-{
-
- ThreadGroup model;
- LoopControlPanel loopPanel;
-
- private JLabel nameLabel = new JLabel(JMeterUtils.getResString("name"));
- private JTextField nameInput = new JTextField(30);
- private JLabel threadLabel = new JLabel(JMeterUtils.getResString("number_of_threads"));
- private JTextField threadInput = new JTextField(5);
-
- public ThreadGroupGui()
- {
- }
-
- public void setModel(Object model)
- {
- this.model = (ThreadGroup)model;
- init();
- }
-
- public void updateGui()
- {
- if(model != null)
- {
- nameInput.setText(model.getName());
- threadInput.setText(""+model.getNumThreads());
- loopPanel.updateGui();
- }
- }
-
- private void init()
- {
- nameInput.addKeyListener(this);
- threadInput.addKeyListener(this);
- nameInput.setName(NAME_FIELD);
- threadInput.setName("Number Threads");
- this.setLayout(new VerticalLayout(2,VerticalLayout.LEFT,VerticalLayout.TOP));
- JPanel namePanel = new JPanel();
- namePanel.add(nameLabel);
- namePanel.add(nameInput);
- this.add(namePanel);
-
- JPanel threadPanel = new JPanel();
- threadPanel.add(threadLabel);
- threadPanel.add(threadInput);
- this.add(threadPanel);
- this.add(createControllerPanel());
- }
-
- public JPanel createControllerPanel()
- {
- loopPanel = new LoopControlPanel(false);
- loopPanel.setModel(model.getSamplerController());
- return loopPanel;
- }
-
- public void keyReleased(KeyEvent e)
- {
- String field = e.getComponent().getName();
- if(field.equals(NAME_FIELD))
- {
- model.setName(nameInput.getText());
- }
- else
- {
- model.setNumThreads(Integer.parseInt(threadInput.getText()));
- }
- }
-
- public void keyTyped(KeyEvent e)
- {
- }
-
- public void keyPressed(KeyEvent e)
- {
- }
-}
\ No newline at end of file
+/* Project: Mako
+ * Copyright (c) Xerox Corporation 1999-2001. All rights reserved. Xerox, The
+ * Document Company, and the stylized X are trademarks of the Xerox
+ * Corporation. All other products are trademarks of their respective
+ * companies.
+ *
+ * All rights reserved
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/threads/gui/ThreadGroupGui.java,v 1.7 2001/08/30 17:19:03 mstover1 Exp $
+ */
+package org.apache.jmeter.threads.gui;
+
+import javax.swing.*;
+import java.awt.event.*;
+
+import org.apache.jmeter.gui.*;
+import org.apache.jmeter.threads.ThreadGroup;
+import org.apache.jmeter.util.JMeterUtils;
+
+/************************************************************
+ * Title: JMeter Description: Copyright: Copyright (c) 2000 Company: Apache
+ *
+ *@author Michael Stover
+ *@created $Date: 2001/08/30 17:19:03 $
+ *@version 1.0
+ ***********************************************************/
+
+public class ThreadGroupGui extends JPanel implements ModelSupported, KeyListener
+{
+
+ ThreadGroup model;
+ LoopControlPanel loopPanel;
+
+ private JLabel nameLabel = new JLabel(JMeterUtils.getResString("name"));
+ private JTextField nameInput = new JTextField(30);
+ private JLabel threadLabel = new JLabel(JMeterUtils.getResString("number_of_threads"));
+ private JLabel rampLabel = new JLabel(JMeterUtils.getResString("ramp_up"));
+ private JTextField threadInput = new JTextField(5);
+ private JTextField rampInput = new JTextField(5);
+ private final static String THREAD_NAME = "Number Threads";
+ private final static String RAMP_NAME = "Ramp-Up";
+
+ /************************************************************
+ * !ToDo (Constructor description)
+ ***********************************************************/
+ public ThreadGroupGui()
+ {
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ *
+ *@param model !ToDo (Parameter description)
+ ***********************************************************/
+ public void setModel(Object model)
+ {
+ this.model = (ThreadGroup)model;
+ init();
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ ***********************************************************/
+ public void updateGui()
+ {
+ if (model != null)
+ {
+ nameInput.setText(model.getName());
+ threadInput.setText("" + model.getNumThreads());
+ rampInput.setText("" + model.getRampUp());
+ loopPanel.updateGui();
+ }
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ *
+ *@return !ToDo (Return description)
+ ***********************************************************/
+ public JPanel createControllerPanel()
+ {
+ loopPanel = new LoopControlPanel(false);
+ loopPanel.setModel(model.getSamplerController());
+ return loopPanel;
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ *
+ *@param e !ToDo (Parameter description)
+ ***********************************************************/
+ public void keyReleased(KeyEvent e)
+ {
+ String field = e.getComponent().getName();
+ if (field.equals(NAME_FIELD))
+ {
+ model.setName(nameInput.getText());
+ }
+ else if (field.equals(THREAD_NAME))
+ {
+ model.setNumThreads(Integer.parseInt(threadInput.getText()));
+ }
+ else if (field.equals(RAMP_NAME))
+ {
+ try
+ {
+ model.setRampUp(Integer.parseInt(rampInput.getText()));
+ }
+ catch (NumberFormatException nfe)
+ {
+ // Ignore - only set value if valid
+ }
+ }
+
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ *
+ *@param e !ToDo (Parameter description)
+ ***********************************************************/
+ public void keyTyped(KeyEvent e)
+ {
+ }
+
+ /************************************************************
+ * !ToDo (Method description)
+ *
+ *@param e !ToDo (Parameter description)
+ ***********************************************************/
+ public void keyPressed(KeyEvent e)
+ {
+ }
+
+ private void init()
+ {
+ nameInput.addKeyListener(this);
+ threadInput.addKeyListener(this);
+ rampInput.addKeyListener(this);
+ nameInput.setName(NAME_FIELD);
+ threadInput.setName(THREAD_NAME);
+ rampInput.setName(RAMP_NAME);
+ this.setLayout(new VerticalLayout(2, VerticalLayout.LEFT, VerticalLayout.TOP));
+ JPanel namePanel = new JPanel();
+ namePanel.add(nameLabel);
+ namePanel.add(nameInput);
+ this.add(namePanel);
+
+ JPanel threadPanel = new JPanel();
+ threadPanel.add(threadLabel);
+ threadPanel.add(threadInput);
+ this.add(threadPanel);
+
+ JPanel rampPanel = new JPanel();
+ rampPanel.add(rampLabel);
+ rampPanel.add(rampInput);
+ this.add(rampPanel);
+
+ this.add(createControllerPanel());
+ }
+}
1.15 +0 -0 jakarta-jmeter/src/org/apache/jmeter/timers/ConstantTimer.java
Index: ConstantTimer.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/ConstantTimer.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ConstantTimer.java 2001/08/28 21:28:33 1.14
+++ ConstantTimer.java 2001/08/30 17:19:03 1.15
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/ConstantTimer.java,v 1.14 2001/08/28 21:28:33 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/ConstantTimer.java,v 1.15 2001/08/30 17:19:03 mstover1 Exp $
*/
package org.apache.jmeter.timers;
@@ -25,8 +25,8 @@
* value update and user interaction.
*
*@author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- *@created $Date: 2001/08/28 21:28:33 $
- *@version $Revision: 1.14 $ $Date: 2001/08/28 21:28:33 $
+ *@created $Date: 2001/08/30 17:19:03 $
+ *@version $Revision: 1.15 $ $Date: 2001/08/30 17:19:03 $
***********************************************************/
public class ConstantTimer implements Timer, JMeterComponentModel, Saveable,
1.12 +0 -0 jakarta-jmeter/src/org/apache/jmeter/timers/GaussianRandomTimer.java
Index: GaussianRandomTimer.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/GaussianRandomTimer.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- GaussianRandomTimer.java 2001/08/28 21:28:33 1.11
+++ GaussianRandomTimer.java 2001/08/30 17:19:03 1.12
@@ -66,7 +66,7 @@
* an average value and a gaussian distributed variation.
*
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @version $Revision: 1.11 $ $Date: 2001/08/28 21:28:33 $
+ * @version $Revision: 1.12 $ $Date: 2001/08/30 17:19:03 $
*/
public class GaussianRandomTimer extends RandomTimer implements JMeterComponentModel,
Serializable
1.14 +0 -0 jakarta-jmeter/src/org/apache/jmeter/timers/RandomTimer.java
Index: RandomTimer.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/RandomTimer.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- RandomTimer.java 2001/08/28 21:28:33 1.13
+++ RandomTimer.java 2001/08/30 17:19:03 1.14
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/RandomTimer.java,v 1.13 2001/08/28 21:28:33 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/RandomTimer.java,v 1.14 2001/08/30 17:19:03 mstover1 Exp $
*/
package org.apache.jmeter.timers;
@@ -23,8 +23,8 @@
* method, is abstract and must be extended to provide full functionality.
*
*@author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- *@created $Date: 2001/08/28 21:28:33 $
- *@version $Revision: 1.13 $ $Date: 2001/08/28 21:28:33 $
+ *@created $Date: 2001/08/30 17:19:03 $
+ *@version $Revision: 1.14 $ $Date: 2001/08/30 17:19:03 $
***********************************************************/
public abstract class RandomTimer implements Timer,
1.12 +0 -0 jakarta-jmeter/src/org/apache/jmeter/timers/UniformRandomTimer.java
Index: UniformRandomTimer.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/timers/UniformRandomTimer.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- UniformRandomTimer.java 2001/08/28 21:28:33 1.11
+++ UniformRandomTimer.java 2001/08/30 17:19:03 1.12
@@ -66,7 +66,7 @@
* an average value and a uniformly distributed variation.
*
* @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
- * @version $Revision: 1.11 $ $Date: 2001/08/28 21:28:33 $
+ * @version $Revision: 1.12 $ $Date: 2001/08/30 17:19:03 $
*/
public class UniformRandomTimer extends RandomTimer implements JMeterComponentModel,
Serializable
1.13 +0 -0 jakarta-jmeter/src/org/apache/jmeter/util/ClassFinder.java
Index: ClassFinder.java
===================================================================
RCS file: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/ClassFinder.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ClassFinder.java 2001/08/28 21:28:33 1.12
+++ ClassFinder.java 2001/08/30 17:19:03 1.13
@@ -5,7 +5,7 @@
* companies.
*
* All rights reserved
- * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/ClassFinder.java,v 1.12 2001/08/28 21:28:33 mstover1 Exp $
+ * $Header: /home/cvs/jakarta-jmeter/src/org/apache/jmeter/util/ClassFinder.java,v 1.13 2001/08/30 17:19:03 mstover1 Exp $
*/
package org.apache.jmeter.util;
@@ -811,8 +811,8 @@
* !ToDo (Class description)
*
*@author $Author: mstover1 $
- *@created $Date: 2001/08/28 21:28:33 $
- *@version $Revision: 1.12 $
+ *@created $Date: 2001/08/30 17:19:03 $
+ *@version $Revision: 1.13 $
***********************************************************/
public static class Test extends TestCase
{
1.3 +0 -0 jakarta-jmeter/xdocs/running.xml
Index: running.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/running.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- running.xml 2001/08/28 21:28:33 1.2
+++ running.xml 2001/08/30 17:19:03 1.3
@@ -50,7 +50,7 @@
<p align="center"><font size="-1">Copyright (c) 1998-99 <a href="http://java.apache.org">The Java Apache
Project</a>.<br/>
-$Id: running.xml,v 1.2 2001/08/28 21:28:33 mstover1 Exp $</font> <br/>
+$Id: running.xml,v 1.3 2001/08/30 17:19:03 mstover1 Exp $</font> <br/>
<font size="-1">All rights reserved.</font></p>
</section>
</body>
1.4 +1 -4 jakarta-jmeter/xdocs/user_manual/proxy_server.xml
Index: proxy_server.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/user_manual/proxy_server.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- proxy_server.xml 2001/08/28 21:28:34 1.3
+++ proxy_server.xml 2001/08/30 17:19:03 1.4
@@ -47,8 +47,6 @@
not.</p>
<p>
When you are ready to begin, hit "start".</p>
-<p>
-Currently, the Proxy Server does not save these settings when saved to file.</p>
</section>
<section name="Where do the samples get recorded to?">
<p>
@@ -57,8 +55,7 @@
Url Sample element with domain or path settings, then your Web Test controllers will be created with blank domain and/or path settings (provided
they match, of course). This allows you to simply create test plans with a single top level config element to control which server name is
being tested.<br/>
-If there are no Simple Controllers in your test plan, then the Web Test controllers will be generated directly under the ThreadGroup
-object in your tree.
+If there are no Simple Controllers in your test plan, then no samples will be recorded.
</p>
</section>
<section name="All Done">
1.3 +15 -0 jakarta-jmeter/xdocs/user_manual/threadgroups.xml
Index: threadgroups.xml
===================================================================
RCS file: /home/cvs/jakarta-jmeter/xdocs/user_manual/threadgroups.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- threadgroups.xml 2001/08/02 22:27:33 1.2
+++ threadgroups.xml 2001/08/30 17:19:03 1.3
@@ -65,6 +65,21 @@
multiple different servers with only a single change. Additionally, its always best to put the CookieManager element at
the ThreadGroup level so that all test samples will share the same cookies.
</p>
+</section>
+<section name="Ramp-Up">
+<p>
+A ThreadGroup can have a <i>ramp-up</i> period associated with it, to provide a way to gradually increase
+the simulated load. The default value of the ramp-up parameter is zero. With this setting, the number of threads
+specified for the ThreadGroup are all started immediately when the test begins.
+</p>
+
+<p>
+If the ramp-up parameter is set to a value greater than zero, the threads are started one at a time, spaced evenly
+over the ramp-up period. The first thread is started immediately, at time=zero. After that, another thread is started
+every <rampUp> / <numThreads> seconds. After <rampUp> seconds have elapsed, all threads will be running.
+</p>
+
+
</section>
</body>
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org