Author: sebb
Date: Fri Sep 19 19:43:41 2008
New Revision: 697317
URL: http://svn.apache.org/viewvc?rev=697317&view=rev
Log:
Add Random Variable config element; rearrange test elements into correct
document sections
Added:
jakarta/jmeter/trunk/docs/images/screenshots/random_variable.png (with
props)
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
(with props)
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java
(with props)
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigResources.properties
(with props)
jakarta/jmeter/trunk/xdocs/images/screenshots/random_variable.png (with
props)
Modified:
jakarta/jmeter/trunk/bin/saveservice.properties
jakarta/jmeter/trunk/xdocs/changes.xml
jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
Modified: jakarta/jmeter/trunk/bin/saveservice.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/bin/saveservice.properties?rev=697317&r1=697316&r2=697317&view=diff
==============================================================================
--- jakarta/jmeter/trunk/bin/saveservice.properties (original)
+++ jakarta/jmeter/trunk/bin/saveservice.properties Fri Sep 19 19:43:41 2008
@@ -189,6 +189,7 @@
RandomController=org.apache.jmeter.control.RandomController
RandomOrderController=org.apache.jmeter.control.RandomOrderController
RandomOrderControllerGui=org.apache.jmeter.control.gui.RandomOrderControllerGui
+RandomVariableConfig=org.apache.jmeter.config.RandomVariableConfig
RecordController=org.apache.jmeter.protocol.http.control.gui.RecordController
RecordingController=org.apache.jmeter.protocol.http.control.RecordingController
ReflectionThreadGroup=org.apache.jmeter.threads.ReflectionThreadGroup
Added: jakarta/jmeter/trunk/docs/images/screenshots/random_variable.png
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/random_variable.png?rev=697317&view=auto
==============================================================================
Binary file - no diff available.
Propchange: jakarta/jmeter/trunk/docs/images/screenshots/random_variable.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java?rev=697317&view=auto
==============================================================================
---
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
(added)
+++
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
Fri Sep 19 19:43:41 2008
@@ -0,0 +1,223 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.jmeter.config;
+
+import java.text.DecimalFormat;
+import java.util.Random;
+
+import org.apache.commons.lang.math.NumberUtils;
+import org.apache.jmeter.engine.event.LoopIterationEvent;
+import org.apache.jmeter.engine.event.LoopIterationListener;
+import org.apache.jmeter.engine.util.NoThreadClone;
+import org.apache.jmeter.testbeans.TestBean;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.JMeterVariables;
+import org.apache.jorphan.logging.LoggingManager;
+import org.apache.log.Logger;
+
+public class RandomVariableConfig extends ConfigTestElement
+ implements TestBean, LoopIterationListener, NoThreadClone
+{
+ private static final Logger log = LoggingManager.getLoggerForClass();
+
+ private static final long serialVersionUID = 233L;
+
+ private String minimumValue;
+
+ private String maximumValue;
+
+ private String variableName;
+
+ private String outputFormat;
+
+ private String randomSeed;
+
+ private boolean perThread;
+
+ // This class is not cloned per thread, so this is shared
+ private Random globalRandom = null;
+
+ // Used for per-thread/user numbers
+ private transient ThreadLocal perThreadRandom = new ThreadLocal() {
+ protected Object initialValue() {
+ init();
+ return new Random(getRandomSeedAsLong());
+ }};
+
+ private int n;
+ private long minimum;
+
+ /*
+ * nextInt(n) returns values in the range [0,n),
+ * so n must be set to max-min+1
+ */
+ private void init(){
+ final String minAsString = getMinimumValue();
+ minimum = NumberUtils.toLong(minAsString);
+ final String maxAsString = getMaximumValue();
+ long maximum = NumberUtils.toLong(maxAsString);
+ long rangeL=maximum-minimum+1; // This can overflow
+ if (minimum >= maximum){
+ log.error("maximum("+maxAsString+") must be >
minimum"+minAsString+")");
+ n=0;// This is used as an error indicator
+ return;
+ }
+ if (rangeL > Integer.MAX_VALUE || rangeL <= 0){// check for overflow
too
+ log.warn("maximum("+maxAsString+") - minimum"+minAsString+") must
be <="+Integer.MAX_VALUE);
+ rangeL=Integer.MAX_VALUE;
+ }
+ n = (int)rangeL;
+ }
+ public void iterationStart(LoopIterationEvent iterEvent) {
+ Random randGen=null;
+ if (getPerThread()){
+ randGen = (Random) perThreadRandom.get();
+ } else {
+ synchronized(this){
+ if (globalRandom == null){
+ init();
+ globalRandom = new Random(getRandomSeedAsLong());
+ }
+ randGen=globalRandom;
+ }
+ }
+ if (n <=0){
+ return;
+ }
+ long nextRand = minimum + randGen.nextInt(n);
+ // Cannot use getThreadContext() as we are not cloned per thread
+ JMeterVariables variables =
JMeterContextService.getContext().getVariables();
+ variables.put(getVariableName(), formatNumber(nextRand));
+ }
+
+ // Use format to create number; if it fails, use the default
+ private String formatNumber(long value){
+ String format = getOutputFormat();
+ if (format != null && format.length() > 0) {
+ try {
+ DecimalFormat myFormatter = new DecimalFormat(format);
+ return myFormatter.format(value);
+ } catch (NumberFormatException ignored) {
+ } catch (IllegalArgumentException ignored) {
+ }
+ }
+ return Long.toString(value);
+ }
+
+ /**
+ * @return the minValue
+ */
+ public synchronized String getMinimumValue() {
+ return minimumValue;
+ }
+
+ /**
+ * @param minValue the minValue to set
+ */
+ public synchronized void setMinimumValue(String minValue) {
+ this.minimumValue = minValue;
+ }
+
+ /**
+ * @return the maxvalue
+ */
+ public synchronized String getMaximumValue() {
+ return maximumValue;
+ }
+
+ /**
+ * @param maxvalue the maxvalue to set
+ */
+ public synchronized void setMaximumValue(String maxvalue) {
+ this.maximumValue = maxvalue;
+ }
+
+ /**
+ * @return the variableName
+ */
+ public synchronized String getVariableName() {
+ return variableName;
+ }
+
+ /**
+ * @param variableName the variableName to set
+ */
+ public synchronized void setVariableName(String variableName) {
+ this.variableName = variableName;
+ }
+
+ /**
+ * @return the randomSeed
+ */
+ public synchronized String getRandomSeed() {
+ return randomSeed;
+ }
+
+ /**
+ * @return the randomSeed as a long
+ */
+ private synchronized long getRandomSeedAsLong() {
+ long seed = 0;
+ if (randomSeed.length()==0){
+ seed = System.currentTimeMillis();
+ } else {
+ try {
+ seed = Long.parseLong(randomSeed);
+ } catch (NumberFormatException e) {
+ seed = System.currentTimeMillis();
+ log.warn("Cannot parse seed "+e.getLocalizedMessage());
+ }
+ }
+ return seed;
+ }
+
+ /**
+ * @param randomSeed the randomSeed to set
+ */
+ public synchronized void setRandomSeed(String randomSeed) {
+ this.randomSeed = randomSeed;
+ }
+
+ /**
+ * @return the perThread
+ */
+ public synchronized boolean getPerThread() {
+ return perThread;
+ }
+
+ /**
+ * @param perThread the perThread to set
+ */
+ public synchronized void setPerThread(boolean perThread) {
+ this.perThread = perThread;
+ }
+ /**
+ * @return the outputFormat
+ */
+ public synchronized String getOutputFormat() {
+ return outputFormat;
+ }
+ /**
+ * @param outputFormat the outputFormat to set
+ */
+ public synchronized void setOutputFormat(String outputFormat) {
+ this.outputFormat = outputFormat;
+ }
+
+}
Propchange:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfig.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java?rev=697317&view=auto
==============================================================================
---
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java
(added)
+++
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java
Fri Sep 19 19:43:41 2008
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.jmeter.config;
+
+import java.beans.PropertyDescriptor;
+
+import org.apache.jmeter.testbeans.BeanInfoSupport;
+
+public class RandomVariableConfigBeanInfo extends BeanInfoSupport {
+
+ // These group names must have .displayName properties
+ private static final String VARIABLE_GROUP = "variable"; // $NON-NLS-1$
+ private static final String OPTIONS_GROUP = "options"; // $NON-NLS-1$
+ private static final String RANDOM_GROUP = "random"; // $NON-NLS-1$
+
+ // These variable names must have .displayName properties and agree with
the getXXX()/setXXX() methods
+ private static final String PER_THREAD = "perThread"; // $NON-NLS-1$
+ private static final String RANDOM_SEED = "randomSeed"; // $NON-NLS-1$
+ private static final String MAXIMUM_VALUE = "maximumValue"; // $NON-NLS-1$
+ private static final String MINIMUM_VALUE = "minimumValue"; // $NON-NLS-1$
+ private static final String OUTPUT_FORMAT = "outputFormat"; // $NON-NLS-1$
+ private static final String VARIABLE_NAME = "variableName"; // $NON-NLS-1$
+
+ public RandomVariableConfigBeanInfo() {
+ super(RandomVariableConfig.class);
+
+ PropertyDescriptor p;
+
+ createPropertyGroup(VARIABLE_GROUP, new String[] { VARIABLE_NAME,
OUTPUT_FORMAT, });
+
+ p = property(VARIABLE_NAME);
+ p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+ p.setValue(DEFAULT, ""); // $NON-NLS-1$
+
+ p = property(OUTPUT_FORMAT);
+ p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+ p.setValue(DEFAULT, ""); // $NON-NLS-1$
+
+ createPropertyGroup(RANDOM_GROUP,
+ new String[] { MINIMUM_VALUE, MAXIMUM_VALUE, RANDOM_SEED, });
+
+ p = property(MINIMUM_VALUE);
+ p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+ p.setValue(DEFAULT, "1"); // $NON-NLS-1$
+
+ p = property(MAXIMUM_VALUE);
+ p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+ p.setValue(DEFAULT, ""); // $NON-NLS-1$
+
+ p = property(RANDOM_SEED);
+ p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+ p.setValue(DEFAULT, ""); // $NON-NLS-1$
+
+ createPropertyGroup(OPTIONS_GROUP, new String[] { PER_THREAD, });
+
+ p = property(PER_THREAD);
+ p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+ p.setValue(NOT_EXPRESSION, Boolean.TRUE);
+ p.setValue(NOT_OTHER, Boolean.TRUE);
+ p.setValue(DEFAULT, Boolean.FALSE);
+ }
+}
Propchange:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigBeanInfo.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Added:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigResources.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigResources.properties?rev=697317&view=auto
==============================================================================
---
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigResources.properties
(added)
+++
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigResources.properties
Fri Sep 19 19:43:41 2008
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+displayName=Random Variable
+# Groups
+variable.displayName=Output variable
+random.displayName=Configure the Random generator
+options.displayName=Options
+# fields
+minimumValue.displayName=Minimum Value
+minimumValue.shortDescription=Minimum Value
+maximumValue.displayName=Maximum Value
+maximumValue.shortDescription=Maximum Value
+variableName.displayName=Variable Name
+variableName.shortDescription=Variable Name
+outputFormat.displayName=Output Format
+outputFormat.shortDescription=Output Format, e.g. ####
+randomSeed.displayName=Seed for Random function
+randomSeed.shortDescription=Seed for Random function - long number (defaults
to current time)
+perThread.displayName=Per Thread(User) ?
+perThread.shortDescription=Use independent random generators for each
thread(user) ?
Propchange:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/config/RandomVariableConfigResources.properties
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=697317&r1=697316&r2=697317&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Fri Sep 19 19:43:41 2008
@@ -68,7 +68,7 @@
<h3>Incompatible changes</h3>
<p>
-The test elements "Save Results to a file" and "" are now shown as Listeners.
+The test elements "Save Results to a file" and "Generate Summary Results" are
now shown as Listeners.
They were previously shown as Post-Processors, even though they are
implemented as Listeners.
</p>
<p>
@@ -102,6 +102,10 @@
<li>Bug 45749 - Response Assertion does not work with a substring that is not
a valid RE</li>
<li>Mailer Visualizer documentation now agrees with code i.e. failure/success
counts need to be exceeded.</li>
<li>Mailer Visualizer now shows the failure count</li>
+<li>Fix incorrect GUI classifications:
+"Save Results to a file" and "Generate Summary Results" are now shown as
Listeners.
+"Counter" is now shown as a Configuration element.
+</li>
</ul>
<h3>Improvements</h3>
@@ -118,6 +122,7 @@
<li>Added __escapeHtml() function: encodes text using Html-encoding.</li>
<li>Allow spaces in JMeter path names (apply work-round for Java bug
4496398)</li>
<li>Bug 45694 - Support GZIP compressed logs</li>
+<li>Random Variable - new configuration element to create random numeric
variables</li>
</ul>
<h3>Non-functional changes</h3>
Added: jakarta/jmeter/trunk/xdocs/images/screenshots/random_variable.png
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/random_variable.png?rev=697317&view=auto
==============================================================================
Binary file - no diff available.
Propchange: jakarta/jmeter/trunk/xdocs/images/screenshots/random_variable.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=697317&r1=697316&r2=697317&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Fri Sep 19
19:43:41 2008
@@ -2238,6 +2238,53 @@
<p>For details of all the methods available on each of the above variables,
please check the Javadoc</p>
</component>
+<component name="Generate Summary Results" index="§-num;.3.18"
width="358" height="131" screenshot="summary.png">
+ <description>This test element can be placed anywhere in the test plan.
+Generates a summary of the test run so far to the log file and/or
+standard output. Both running and differential totals are shown.
+Output is generated every n seconds (default 3 minutes) on the appropriate
+time boundary, so that multiple test runs on the same time will be
synchronised.
+The interval is defined by the property "summariser.interval" - see
jmeter.properties.
+This element is mainly intended for batch (non-GUI) runs.
+The output looks like the following:
+<pre>
+label + 171 in 20.3s = 8.4/s Avg: 1129 Min: 1000 Max: 1250 Err: 0
(0.00%)
+label + 263 in 31.3s = 8.4/s Avg: 1138 Min: 1000 Max: 1250 Err: 0
(0.00%)
+label = 434 in 50.4s = 8.6/s Avg: 1135 Min: 1000 Max: 1250 Err: 0
(0.00%)
+label + 263 in 31.0s = 8.5/s Avg: 1138 Min: 1000 Max: 1250 Err: 0
(0.00%)
+label = 697 in 80.3s = 8.7/s Avg: 1136 Min: 1000 Max: 1250 Err: 0
(0.00%)
+label + 109 in 12.4s = 8.8/s Avg: 1092 Min: 47 Max: 1250 Err: 0
(0.00%)
+label = 806 in 91.6s = 8.8/s Avg: 1130 Min: 47 Max: 1250 Err: 0
(0.00%)
+</pre>
+The "label" is the the name of the element.
+The "+" means that the line is a delta line, i.e. shows the changes since the
last output.
+The "=" means that the line is a totals line, i.e. it shows the running total.
+Entries in the jmeter log file also include time-stamps.
+The example "806 in 91.6s = 8.8/s" means that there were 806 samples
recorded in 91.6 seconds,
+and that works out at 8.8 samples per second.
+The Avg (Average), Min(imum) and Max(imum) times are in milliseonds.
+"Err" means number of errors (also shown as percentage).
+The last two lines will appear at the end of a test.
+They will not be synchronised to the appropriate time boundary.
+Note that the initial and final deltas may be for less than the interval (in
the example above this is 30 seconds).
+The first delta will generally be lower, as JMeter synchronises to the
interval boundary.
+The last delta will be lower, as the test will generally not finish on an
exact interval boundary.
+<p>
+The label is used to group sample results together.
+So if you have multiple Thread Groups and want to summarize across them all,
then use the same label
+ - or add the summariser to the Test Plan (so all thread groups are in scope).
+Different summary groupings can be implemented
+by using suitable labels and adding the summarisers to appropriate parts of
the test plan.
+</p>
+
+ </description>
+ <properties>
+ <property name="Name" required="Yes">Descriptive name for this element that
is shown in the tree.
+ It appears as the "label" in the output. Details for all elements with the
same label will be added together.
+ </property>
+ </properties>
+</component>
+
<a href="#">^</a>
</section>
@@ -2672,14 +2719,75 @@
</properties>
</component>
-<component name="Simple Config Element" index="§-num;.4.14" width="393"
height="245" screenshot="simple_config_element.png">
+<component name="Random Variable" index="§-num;.4.14" width="411"
height="306" screenshot="random_variable.png">
+<description>
+<p>
+The Random Variable Config Element is used to generate random numeric strings
and store them in variable for use later.
+It's simpler than using <complink name="User Defined Variables"/> together
with the __Random() function.
+</p>
+<p>
+The output variable is constructed by using the random number generator,
+and then the resulting number is formatted using the format string.
+The number is calculated using the formula
<code>minimum+Random.nextInt(maximum-minimum+1)</code>.
+Random.nextInt() requires a positive integer.
+This means that maximum-minimum - i.e. the range - must be less than
2147483647,
+however the minimum and maximum values can be any long values so long as the
range is OK.
+</p>
+</description>
+
+<properties>
+ <property name="Name" required="Yes">Descriptive name for this element that
is shown in the tree.</property>
+ <property name="Variable Name" required="Yes">The name of the variable in
which to store the random string.</property>
+ <property name="Format String" required="No">The java.text.DecimalFormat
format string to be used.
+ For example "000" which will generate numbers with at least 3 digits,
+ or "USER_000" which will generate output of the form USER_nnn.
+ If not specified, the default is to generate the number using
Long.toString()</property>
+ <property name="Minimum Value" required="Yes">The minimum value (long) of
the generated random number.</property>
+ <property name="Maximum Value" required="Yes">The maximum value (long) of
the generated random number.</property>
+ <property name="Random Seed" required="No">The seed for the random number
generator. Default is the current time in milliseconds.</property>
+ <property name="Per Thread(User)?" required="Yes">If False, the generator is
shared between all threads in the thread group.
+ If True, then each thread has its own random generator.</property>
+</properties>
+
+</component>
+
+<component name="Counter" index="§-num;.4.15" width="399" height="244"
screenshot="counter.png">
+<description><p>Allows the user to create a counter that can be referenced
anywhere
+in the Thread Group. The counter config lets the user configure a starting
point, a maximum,
+and the increment. The counter will loop from the start to the max, and then
start over
+with the start, continuing on like that until the test is ended. </p>
+<p>From version 2.1.2, the counter now uses a long to store the value, so the
range is from -2^63 to 2^63-1.</p>
+</description>
+<properties>
+ <property name="Name" required="">Descriptive name for this element
that is shown in the tree.</property>
+ <property name="Start" required="Yes">The starting number for the
counter. The counter will equal this
+ number during the first iteration.</property>
+ <property name="Increment" required="Yes">How much to increment the
counter by after each
+ iteration.</property>
+ <property name="Maximum" required="No">If the counter exceeds the
maximum, then it is reset to the Start value.
+ For versions after 2.2 the default is Long.MAX_VALUE (previously it
was 0).
+ </property>
+ <property name="Format" required="No">Optional format, e.g. 000 will
format as 001, 002 etc.
+ This is passed to DecimalFormat, so any valid formats can be used.
+ If there is a problem interpreting the format, then it is ignored.
+ [The default format is generated using Long.toString()]
+ </property>
+ <property name="Reference Name" required="Yes">This controls how you
refer to this value in other elements. Syntax is
+ as in <a href="functions.html">user-defined values</a>:
<code>$(reference_name}</code>.</property>
+ <property name="Track Counter Independently for each User"
required="No">In other words, is this a global counter, or does each user get
their
+ own counter? If unchecked, the counter is global (ie, user #1 will
get value "1", and user #2 will get value "2" on
+ the first iteration). If checked, each user has an independent
counter.</property>
+</properties>
+</component>
+
+<component name="Simple Config Element" index="§-num;.4.16" width="393"
height="245" screenshot="simple_config_element.png">
<description><p>The Simple Config Element lets you add or override arbitrary
values in samplers. You can choose the name of the value
and the value itself. Although some adventurous users might find a use for
this element, it's here primarily for developers as a basic
GUI that they can use while developing new JMeter components.</p>
</description>
<properties>
- <property name="Name" required="No">Descriptive name for this element
that is shown in the tree. </property>
+ <property name="Name" required="Yes">Descriptive name for this element
that is shown in the tree. </property>
<property name="Parameter Name" required="Yes">The name of each parameter.
These values are internal to JMeter's workings and
are not generally documented. Only those familiar with the code will know
these values.</property>
<property name="Parameter Value" required="Yes">The value to apply to that
parameter.</property>
@@ -3352,35 +3460,6 @@
</properties>
</component>
-<component name="Counter" index="§-num;.7.6" width="399" height="244"
screenshot="counter.png">
-<description><p>Allows the user to create a counter that can be referenced
anywhere
-in the Thread Group. The counter config lets the user configure a starting
point, a maximum,
-and the increment. The counter will loop from the start to the max, and then
start over
-with the start, continuing on like that until the test is ended. </p>
-<p>From version 2.1.2, the counter now uses a long to store the value, so the
range is from -2^63 to 2^63-1.</p>
-</description>
-<properties>
- <property name="Name" required="">Descriptive name for this element
that is shown in the tree.</property>
- <property name="Start" required="Yes">The starting number for the
counter. The counter will equal this
- number during the first iteration.</property>
- <property name="Increment" required="Yes">How much to increment the
counter by after each
- iteration.</property>
- <property name="Maximum" required="No">If the counter exceeds the
maximum, then it is reset to the Start value.
- For versions after 2.2 the default is Long.MAX_VALUE (previously it
was 0).
- </property>
- <property name="Format" required="No">Optional format, e.g. 000 will
format as 001, 002 etc.
- This is passed to DecimalFormat, so any valid formats can be used.
- If there is a problem interpreting the format, then it is ignored.
- [The default format is generated using Long.toString()]
- </property>
- <property name="Reference Name" required="Yes">This controls how you
refer to this value in other elements. Syntax is
- as in <a href="functions.html">user-defined values</a>:
<code>$(reference_name}</code>.</property>
- <property name="Track Counter Independently for each User"
required="No">In other words, is this a global counter, or does each user get
their
- own counter? If unchecked, the counter is global (ie, user #1 will
get value "1", and user #2 will get value "2" on
- the first iteration). If checked, each user has an independent
counter.</property>
-</properties>
-</component>
-
<component name="BeanShell PreProcessor" index="§-num;.7.7" width="597"
height="303" screenshot="beanshell_preprocessor.png">
<description>
<p>
@@ -3633,54 +3712,7 @@
</properties>
</component>
-<component name="Generate Summary Results" index="§-num;.8.4" width="358"
height="131" screenshot="summary.png">
- <description>This test element can be placed anywhere in the test plan.
-Generates a summary of the test run so far to the log file and/or
-standard output. Both running and differential totals are shown.
-Output is generated every n seconds (default 3 minutes) on the appropriate
-time boundary, so that multiple test runs on the same time will be
synchronised.
-The interval is defined by the property "summariser.interval" - see
jmeter.properties.
-This element is mainly intended for batch (non-GUI) runs.
-The output looks like the following:
-<pre>
-label + 171 in 20.3s = 8.4/s Avg: 1129 Min: 1000 Max: 1250 Err: 0
(0.00%)
-label + 263 in 31.3s = 8.4/s Avg: 1138 Min: 1000 Max: 1250 Err: 0
(0.00%)
-label = 434 in 50.4s = 8.6/s Avg: 1135 Min: 1000 Max: 1250 Err: 0
(0.00%)
-label + 263 in 31.0s = 8.5/s Avg: 1138 Min: 1000 Max: 1250 Err: 0
(0.00%)
-label = 697 in 80.3s = 8.7/s Avg: 1136 Min: 1000 Max: 1250 Err: 0
(0.00%)
-label + 109 in 12.4s = 8.8/s Avg: 1092 Min: 47 Max: 1250 Err: 0
(0.00%)
-label = 806 in 91.6s = 8.8/s Avg: 1130 Min: 47 Max: 1250 Err: 0
(0.00%)
-</pre>
-The "label" is the the name of the element.
-The "+" means that the line is a delta line, i.e. shows the changes since the
last output.
-The "=" means that the line is a totals line, i.e. it shows the running total.
-Entries in the jmeter log file also include time-stamps.
-The example "806 in 91.6s = 8.8/s" means that there were 806 samples
recorded in 91.6 seconds,
-and that works out at 8.8 samples per second.
-The Avg (Average), Min(imum) and Max(imum) times are in milliseonds.
-"Err" means number of errors (also shown as percentage).
-The last two lines will appear at the end of a test.
-They will not be synchronised to the appropriate time boundary.
-Note that the initial and final deltas may be for less than the interval (in
the example above this is 30 seconds).
-The first delta will generally be lower, as JMeter synchronises to the
interval boundary.
-The last delta will be lower, as the test will generally not finish on an
exact interval boundary.
-<p>
-The label is used to group sample results together.
-So if you have multiple Thread Groups and want to summarize across them all,
then use the same label
- - or add the summariser to the Test Plan (so all thread groups are in scope).
-Different summary groupings can be implemented
-by using suitable labels and adding the summarisers to appropriate parts of
the test plan.
-</p>
-
- </description>
- <properties>
- <property name="Name" required="Yes">Descriptive name for this element that
is shown in the tree.
- It appears as the "label" in the output. Details for all elements with the
same label will be added together.
- </property>
- </properties>
-</component>
-
-<component name="BeanShell PostProcessor" index="§-num;.8.5" width="597"
height="303" screenshot="beanshell_postprocessor.png">
+<component name="BeanShell PostProcessor" index="§-num;.8.4" width="597"
height="303" screenshot="beanshell_postprocessor.png">
<description>
<p>
The BeanShell PreProcessor allows arbitrary code to be applied after taking a
sample.
@@ -3726,7 +3758,7 @@
<p>If the property <b>beanshell.postprocessor.init</b> is defined, this is
used to load an initialisation file, which can be used to define methods etc
for use in the BeanShell script.</p>
</component>
-<component name="BSF PostProcessor" index="§-num;.8.6" width="529"
height="382" screenshot="bsf_postprocessor.png">
+<component name="BSF PostProcessor" index="§-num;.8.5" width="529"
height="382" screenshot="bsf_postprocessor.png">
<description>
<p>
The BSF PostProcessor allows BSF script code to be applied after taking a
sample.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]