Giter Site home page Giter Site logo

apache / jmeter Goto Github PK

View Code? Open in Web Editor NEW
7.9K 319.0 2.0K 130.22 MB

Apache JMeter open-source load testing tool for analyzing and measuring the performance of a variety of services

Home Page: https://jmeter.apache.org/

License: Apache License 2.0

Java 91.24% Batchfile 0.25% Shell 0.24% CSS 0.23% JavaScript 0.36% HTML 0.93% Groovy 0.01% XSLT 0.91% Kotlin 5.77% Less 0.06%
java performance test

jmeter's Introduction

Apache JMeter logo

An Open Source Java application designed to measure performance and load test applications.

By The Apache Software Foundation

Build Status codecov License Stack Overflow Maven Central Javadocs Twitter

What Is It?

Apache JMeter can measure performance and load test static and dynamic web applications.

It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance under different load types.

JMeter screen

Features

Complete portability and 100% Java.

Multi-threading allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.

Protocols

Ability to load and performance test many applications/server/protocol types:

  • Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET,...)
  • SOAP / REST Webservices
  • FTP
  • Database via JDBC
  • LDAP
  • Message-oriented Middleware (MOM) via JMS
  • Mail - SMTP(S), POP3(S) and IMAP(S)
  • Native commands or shell scripts
  • TCP
  • Java Objects

IDE

Fully featured Test IDE that allows fast Test Plan recording (from Browsers or native applications), building and debugging.

Command Line

Command-line mode (Non GUI / headless mode) to load test from any Java compatible OS (Linux, Windows, Mac OSX, ...)

Reporting

A complete and ready to present dynamic HTML report

Dashboard screenshot

Live reporting into 3rd party databases like InfluxDB or Graphite

Live report

Correlation

Easy correlation through ability to extract data from most popular response formats, HTML, JSON, XML or any textual format

Highly Extensible Core

  • Pluggable Samplers allow unlimited testing capabilities.
  • Scriptable Samplers (JSR223-compatible languages like Groovy).
  • Several load statistics can be chosen with pluggable tiers.
  • Data analysis and visualization plugins allow great extensibility and personalization.
  • Functions can be used to provide dynamic input to a test or provide data manipulation.
  • Easy Continuous Integration via 3rd party Open Source libraries for Maven, Gradle and Jenkins.

The Latest Version

Details of the latest version can be found on the JMeter Apache Project web site

Requirements

The following requirements exist for running Apache JMeter:

  • Java Interpreter:

    A fully compliant Java 17 Runtime Environment is required for Apache JMeter to execute. A JDK with keytool utility is better suited for Recording HTTPS websites.

  • Optional jars:

    Some jars are not included with JMeter. If required, these should be downloaded and placed in the lib directory

    • JDBC - available from the database supplier
    • JMS - available from the JMS provider
    • Bouncy Castle - only needed for SMIME Assertion
  • Java Compiler (OPTIONAL):

    A Java compiler is not needed since the distribution includes a precompiled Java binary archive.

    Note that a compiler is required to build plugins for Apache JMeter.

Installation Instructions

Note that spaces in directory names can cause problems.

  • Release builds

    Unpack the binary archive into a suitable directory structure.

Running JMeter

  1. Change to the bin directory
  2. Run the jmeter (Un*x) or jmeter.bat (Windows) file.

Windows

For Windows, there are also some other scripts which you can drag-and-drop a JMX file onto:

  • jmeter-n.cmd - runs the file as a non-GUI test
  • jmeter-n-r.cmd - runs the file as a non-GUI remote (client-server) test
  • jmeter-t.cmd - loads the file ready to run it as a GUI test

Documentation

The documentation available as of the date of this release is also included, in HTML format, in the printable_docs directory, and it may be browsed starting from the file called index.html.

Reporting a bug/enhancement

See Issue Tracking.

Build instructions

Release builds

Unpack the source archive into a suitable directory structure. Most of the 3rd party library files can be extracted from the binary archive by unpacking it into the same directory structure.

Any optional jars (see above) should be placed in lib/opt and/or lib.

Jars in lib/opt will be used for building JMeter and running the unit tests, but won't be used at run-time.

This is useful for testing what happens if the optional jars are not downloaded by other JMeter users.

If you are behind a proxy, you can set a few build properties in ~/.gradle/gradle.properties for Gradle to use the proxy:

systemProp.http.proxyHost=proxy.example.invalid
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=your_user_name
systemProp.http.proxyPassword=your_password
systemProp.https.proxyHost=proxy.example.invalid
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=your_user_name
systemProp.https.proxyPassword=your_password

Test builds

JMeter is built using Gradle, and it uses Gradle's Toolchains for JVM projects for provisioning JDKs. It means the code would search for the needed JDKs locally, or download them if they are not found.

By default, the code would use JDK 17 for build purposes, however it would set the target release to 8, so the resulting artifacts would be compatible with Java 8.

The following command builds and tests JMeter:

./gradlew build

If you want to use a custom JDK for building you can set -PjdkBuildVersion=11, and you can select -PjdkTestVersion=21 if you want to use a different JDK for testing.

You can list the available build parameters by executing

./gradlew parameters

If the system does not have a GUI display then:

./gradlew build -Djava.awt.headless=true

The output artifacts (jars, reports) are placed in the build folder. For instance, binary artifacts can be found under src/dist/build/distributions.

The following command would compile the application and enable you to run jmeter from the bin directory.

Note that it completely refreshes lib/ contents, so it would remove custom plugins should you have them installed to lib/. However, it would keep lib/ext/ plugins intact.

./gradlew createDist

Alternatively, you could get Gradle to start the GUI:

./gradlew runGui

Developer Information

Building and contributing is explained in details at building JMeter and CONTRIBUTING.md. More information on the tasks available for building JMeter with Gradle is available in gradle.md.

The code can be obtained from:

Licensing and Legal Information

For legal and licensing information, please see the following files:

Cryptographic Software Notice

This distribution may include software that has been designed for use with cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See https://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included software that may be subject to export controls on cryptographic software:

Apache JMeter interfaces with the Java Secure Socket Extension (JSSE) API to provide

  • HTTPS support

Apache JMeter interfaces (via Apache HttpClient4) with the Java Cryptography Extension (JCE) API to provide

  • NTLM authentication

Apache JMeter does not include any implementation of JSSE or JCE.

Thanks

Thank you for using Apache JMeter.

Third party notices

  • Notice for mxparser:

    This product includes software developed by the Indiana University Extreme! Lab. For further information please visit http://www.extreme.indiana.edu/

jmeter's People

Contributors

bednar avatar eas5 avatar frschwab avatar fschumacher avatar geno1024 avatar ham1 avatar jmetertea avatar kaola89 avatar kkalinin avatar max3163 avatar milamberspace avatar mithrandir0407 avatar nmervaillie avatar orimarko avatar pecollet avatar pjfanning avatar pmouawad avatar renovate-bot avatar sampathkumaramex avatar sebbasf avatar sseide avatar stefanom avatar tilln avatar ubikloadpack avatar vdaburon avatar vlsi avatar vperaltac avatar weisj avatar wkurniawan07 avatar woonsan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jmeter's Issues

WebTesting: Cookie Manager control panel still visible after removing

khammond25 (Bug 3633):
In WebTesting, when you remove Cookie Manager (by right-clicking on Cookie
Manger and selecting Remove), the Cookie Manager control panel is still visible
and it even allows you to enter cookie values.

Once you click on another element (for example, WebTesting), the Cookie Manager
control panel is replaced with another control panel and there's no way to get
back to the Cookie Manager control panel. Not a big bug, but kinda weird.

Severity: normal
OS: other

Can put elements in TestPlan without having a ThreadGroup

khammond25 (Bug 3626):
The user interface allows a user to put elements in TestPlan without having a
ThreadGroup.

For example, create a Web Testing element in WorkBench. Save the element to a
file. Next, right-click on the TestPlan element and select Open. Load the
file you just created. The Web Testing element is placed in Test Plan and
there is no ThreadGroup element.

Severity: normal
OS: All

JMeter doesn't run without JSSE

Mike Stover (Bug 4424):
JMeter is currently in a state where it won't run unless the user has jsse jars
installed. JMeter should run fine without these encryption packages, but
JMeterMenuBar is now dependent on those classes being available. This is true
even after I modified SSLManager to compile without Iaik package.

Severity: normal
OS: other

ConstantTimer; enter non-numeric throws NumberFormatException

khammond25 (Bug 3638):
For the ConstantTimer element, if you enter a non-numeric in the "Constant
Delay" field, a java.lang.NumberFormatException error is thrown.

Also, a java.lang.NumberFormatException can be thrown when editing the field.

For example, enter 100 in the "Constant Delay" field. Next, use the BACKSPACE
key to delete 100 and enter 300. When you deleted 100, the field was
automatically converted to a number. Of course, the field was empty because we
just deleted the 100. So, an exception was thrown.

Also, if you enter a number that exceeds the maximum allowable integer, you get
a java.lang.NumberFormatException.

Severity: normal
OS: All

WebTesting: Url Sample element; delete non-existant param throws exception

khammond25 (Bug 3634):
The user interface allows a user to attempt to delete a non-existant parameter
in the WebTesting: Url Sample element. A java.lang.IndexOutOfBoundsException
is thrown.

For example, add a WebTesting element and within it, add an Url Sample element.
Next, with an empty Parameter Table, click the Delete button. You get the
following exception:

Exception occurred during event dispatching:
java.lang.IndexOutOfBoundsException: Index: -1, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:491)
at java.util.ArrayList.remove(ArrayList.java:375)
at org.apache.jmeter.config.Arguments.removeRow(Arguments.java:262)
at org.apache.jmeter.config.gui.ArgumentsPanel.actionPerformed(Arguments
Panel.java:146)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:14
50)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra
ctButton.java:1504)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:378)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250
)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:216)
at java.awt.Component.processMouseEvent(Component.java:3717)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
    at java.awt.Container.dispatchEventImpl(Container.java:1200)
    at java.awt.Window.dispatchEventImpl(Window.java:912)
    at java.awt.Component.dispatchEvent(Component.java:2499)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)
    at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:10
  1.  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)
    

Severity: normal
OS: other

Duplicated by:

ArgumentsPanel; bad row delete when editing a cell

khammond25 (Bug 3747):
In ArgumentsPanel, if you are in edit mode for a cell and click the delete
button, the value you are editing will not be deleted but the other column's
value will.

Here's an example using WebTesting's Parameter Table:

  1. Create two rows: 1st row contains "param1" and "value1".
    2nd row contains "param2" and "value2".
  2. Get into edit mode for the NAME column in row #1 by double-clicking on that
    cell. You should see a vertical bar in the text field.
  3. Click the DELETE button.

The expected result is for row #1 to be deleted, and row #2 moved up and into
row #1's place. So, the table should now only have one row, with
values "param2" and "value2". Instead, our single row table contains the
values "param1" and "value2". The contents of the cell that we were editing
remains intact.

Severity: normal
OS: All

CookieManager truncates cookie values if values contain '='

Marc Missire (Bug 2063):
CookieManager.java (in version 1.6Alpha) trucates the value of cookies if those
values themselves contain a '=' character. This is due to some StringTokenizer
use which doesn't seem quite right.

Some sites, such as Netscape's UREG login page for it's online Calendar
(calendar.netscape.com) set such cookies.

Here is a proposed fix which worked for me:
From CookieManager.java's addCookieFromHeader() method:

             // Bug: if cookie value contains a '='
             // character, like Netcenter UREG
             // cookies (i.e. "NSCP_USER_LOGIN1_NEW=SHA=xxxxx"),
             // this fails.
	 //String value = nvpTokenizer.nextToken();

              String value="";
              int cookieValueContainsEquals = nvp.indexOf('=');
              if( cookieValueContainsEquals != -1 && 

cookieValueContainsEquals < nvp.length() )
{
StringBuffer tmpBuffer = new StringBuffer(nvp);
value=tmpBuffer.substring( nvp.indexOf('=')+1 );
} else
value=nvpTokenizer.nextToken();


Hope this helps. -Marc Missire ([email protected])

Severity: major
OS: All

Hardcoded size on frame.

Bo Regnlin (Bug 2936):
As I saw hardcoded size on the frame I suggest to use this class
instead that can set the size and place it in center of another component.

package org.apache.jmeter.gui.util;

import java.awt.Dimension;
import java.awt.Component;

/**

  • This class is a Util for awt Component and could be
  • used to place them in center of an other.
  • @author <a href="mailto:[email protected]">Bo Regnlin</a>
  • @Version 1.0
    /
    public class ComponentUtil
    {
    /
    *
    * Use this static method if you want to center
    • and set its proposion compared to the size of
    • the current users screen size.
    • Valid percent is between +-(0-100) minus is treated
    • as plus, bigger than 100 is always set to 100.
      *
      *@param component The component you want to center and set
      size on.
      *@param percentOfScreen The percent of the current screensize
      you want
    •    the component to be.
      
      */
      public static void centerComponentInWindow(Component component, int
      percentOfScreen)
      {
      if(percentOfScreen < 0)
      {
      centerComponentInWindow(component, - percentOfScreen);
      return;
      }
      if(percentOfScreen > 100)
      {
      centerComponentInWindow(component, 100);
      return;
      }
      double percent = percentOfScreen / 100.d;
      Dimension dimension = component.getToolkit().getScreenSize();
      component.setSize((int)(dimension.getWidth()*percent),
      (int)(dimension.getHeight()*percent));
      centerComponentInWindow(component);
      }

/**
* Use this static method if you want to center a component in
Window.
*
*@param component The component you want to center in window.
*/
public static void centerComponentInWindow(Component component)
{
Dimension dimension = component.getToolkit().getScreenSize();

component.setLocation((int)((dimension.getWidth()-component.getWidth())/2),
                      (int)((dimension.getHeight()-component.getHeight

())/2));
component.validate();
component.repaint();
}

/**
* Use this static method if you want to center
* a component over an other component.
*
*@param parent The component you want to use to place it on.
*@param toBeCentered The component you want to center.
*/
public static void centerComponentInComponent(Component parent, Component
toBeCentered)
{
toBeCentered.setLocation((int)parent.getX() + (int)((parent.getWidth()-
toBeCentered.getWidth())/2),
(int)parent.getY() + (int)((parent.getHeight()-
toBeCentered.getHeight())/2));

toBeCentered.validate();
toBeCentered.repaint();

}

}

OS: All

WebTesting: Cookie Manager; Load does not refresh table

khammond25 (Bug 3632):
In WebTesting: Cookie Manager, loading a cookie file does not refresh the
table.

For example, with an empty cookie table and an existing cookie file, click the
Load button and open a cookie file. The table is not refreshed. It appears
that the cookie file was not loaded. It was however. Click on another element
(for example, WebTesting), and then click back on Cookie Manager. You now see
your cookie file in the table.

Severity: normal
OS: All

Can add elements to same level as TestPlan and Workbench

khammond25 (Bug 3625):
The user interface allows the user to add elements to the same level as
TestPlan and WorkBench.

For example, right-click on the Root element. Select Add --> Controller -->
Web Testing. The Web Testing element is now at the same level as TestPlan and
WorkBench.

You can also open a file (from the context menu and the main menu) and have the
elements added at the same level as TestPlan and WorkBench.

Severity: normal
OS: All

WebTesting: Http Authorization; password displayed

khammond25 (Bug 3630):
In WebTesting: Http Authorization, when you enter a password (from the Add
dialog), the user interface shows "" instead of the actual characters you
type. However, when you finishing entering the fields in the dialog and click
OK, the actual password (not the "
") is shown in the Http Authorization table.

Severity: normal
OS: All

jmeter.bat syntax error; bad IF statements

khammond25 (Bug 3557):
In bin/jmeter.bat and bin/jmeter-server.bat, all of the IF statements generate
errors on Windows 98.

The IF statements there check equality of two strings using the EQU operator.
I have never seen this operator before. I have only seen the use of "==". The
DOS references I've found on the net only mention "==". Additionally, I
verified that several other Apache products also use "==".

I changed each of the EQU's to "==", and the BAT files work fine.

Votes in Bugzilla: 1
Severity: normal
OS: All

Version 1.6: https and basic authentication do not work together

Gilbert Hamann (Bug 2362):
If a ulr with https is entered, the basic authentication list is not accessed.
This is in org.apache.jmeter.protocol.http.control.AuthManager.

In getAuthHeaderForURL the code reads:
if (!url.getProtocol().toUpperCase().equals("HTTP"))
{
return null;

	}

My suggested bug fix is:
String crntProtocol = url.getProtocol().toUpperCase();

	if (!(crntProtocol.equals("HTTP") || crntProtocol.equals

("HTTPS")))
{
return null;
}

Severity: major
OS: All

Out of Memory after testing some time.

rbernhar (Bug 4419):
I'm getting an Stack Out of Memory Error when running JMeter 1.7Beta after a
couple of hours in testmode. After starting an normal test you can see how the
demand of memory rises in taskmanager, and after one or two hours JMeter hangs.

regards

Ronald Bernhard

Severity: blocker
OS: All
Resolution: WORKSFORME

DatabaseTesting; enter non-numeric throws NumberFormatException

khammond25 (Bug 3639):
For the DatabaseTesting element, if you enter a non-numeric in the "Number of
Connections in Pool" field or "Max usage for each connection" field, a
java.lang.NumberFormatException error is thrown.

Also, a java.lang.NumberFormatException can be thrown when editing the field.

Finally, if you enter a number that exceeds the maximum allowable integer, you
get a java.lang.NumberFormatException.

Severity: normal
OS: All

timers control doesnt match with results

Jan Kester (Bug 1264):
The class SSLStaticProvider (or should it be SSL.StaticProvider?) contains an
import of the com.sun.net.ssl package of Sun's jsse implementation. This
shouldn't be hard-coded, as it does not allow now to change to other
implementations.

Version 1.6 Alpha

Votes in Bugzilla: 1
Severity: critical
OS: All

ClassCastException Testing Database in 1.6

fradelos (Bug 1297):
Running following setup in version 1.6

  • Test Plan
    - Thread Group
    - Database Testing
    - SQL Query

I always get the exeption:

    java.lang.ClassCastException: org.apache.jmeter.config.LoginConfig
            at org.apache.jmeter.protocol.jdbc.sampler.JDBCSampler.sample

(JDBCSampler.java:102)
at org.apache.jmeter.threads.JMeterThread.run
(JMeterThread.java:133)
at java.lang.Thread.run(Thread.java:484)

Here is the line that does it (JDBCSampler.java:102):

    DBKey key = getKey((DbConfig)e.getConfigElement(DbConfig.class),
            (PoolConfig)e.getConfigElement(PoolConfig.class));

I think that the cause is that DbConfig extends
org.apache.jmeter.config.LoginConfig but does not override the clone() method.
This means that aDbConfig.clone() returns an instance of LoginConfig. Since
the Entry class clones ConfigElements before putting them on a hash, the return
value of getConfigElement() is a LoginConfig. Hope this helps.

Severity: normal
OS: All

JMeter doesn't c ompile

Mike Stover (Bug 4423):
Current CVS code does not compile. It is dependent on an Iaik package that
isn't part of JMeter. In particular, the SSLManager class is dependent on it,
and several other classes are depended on SSLManager (like JMeterMenuBar.java,
for instance)

Severity: normal
OS: other

version 1.6 JMeterThread calls getSampler with entry == null

Jan Kester (Bug 1292):
Version 1.6a

Trying to get JMeter running with a ThreadGroup, a constant timer, a view
results listener, a once only logic, and a URL sample as a part of the once
only logic controller. URL sample contains an ip, index.html as file, and
method get.
JMeter causes a null pointer exception in
org.apache.jmeter.threads.JMeterThread.getSampler(entry)
In the run method of JMeterThread first a test is done whether entry == null,
but regardless the result of this, the getSampler(entry) method is called. This
method causes an error as a method of entry is called, though the object does
not exist. I guess that if entry equals null, the getSampler method shouldn't
be called.

Severity: critical
OS: Linux

Can add elements to leaf nodes using "open"

khammond25 (Bug 3635):
The user interface allows a user to add elements to a leaf node by right-
clicking the element and selecting Open from the context menu. For example,
you can see this by right clicking on a WebTesting: Url Sample element. You can
add any file and all of the contents will be placed in the Url Sample element.

Severity: normal
OS: All

Using a web testing generative controller with no method selected generates null pointer

Douglas Sellers (Bug 3827):
If you attempt to use the web testing generative controller, and leave the parameter table blank a null pointer occurs with a stack trace of:

java.lang.NullPointerException
at org.apache.jmeter.protocol.http.config.UrlConfig.getUrl(UrlConfig.java:201)
at org.apache.jmeter.protocol.http.sampler.HTTPSampler.sample(HTTPSampler.java:405)
at org.apache.jmeter.protocol.http.sampler.HTTPSampler.sample(HTTPSampler.java:155)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:138)
at java.lang.Thread.run(Thread.java:484)

This seems to happen because the method radio button on a web testing piece is not defaulted to anything, so if you don't fill it out, a null is generated.

Severity: minor
OS: All

repaint of JFrame

Bo Regnlin (Bug 2893):
When I use the Gui and try to open or save via a rightclick on a node in the
tree and then enter cancel the popup sometimes is still visable.
I have found out why and its due to the fact that in the code you need to
repaint the frame after a popup is shown.
Se my exampel that I have tried and it seems to do the work.

In file org.apache.jmeter.gui.action.Load.java look for <new code>

public void doAction(ActionEvent e)
{
JFileChooser chooser = FileDialoger.promptToOpenFile();
FileInputStream reader = null;
try {
File f = chooser.getSelectedFile();
if (f!=null) {
reader = new FileInputStream(f);
XmlHandler handler =
new XmlHandler(new JMeterNameSpaceHandler());
XMLReader parser = JMeterUtils.getXMLParser();
parser.setContentHandler(handler);
parser.setErrorHandler(handler);
parser.parse(new InputSource(reader));
ListedHashTree tree = handler.getDataTree();
GuiPackage.getInstance().addSubTree(handler.getDataTree
());
}
}
catch (Throwable ex) {
ex.printStackTrace();
//<new code> }
finally
{
GuiPackage.getInstance().getMainFrame().repaint();
}
//</new code>
}

And in file org.apache.jmeter.gui.action.Save.java

public void doAction(ActionEvent e) {
JMeterComponentModel model = GuiPackage.getInstance
().getCurrentModel();
if (model instanceof Saveable) {
JFileChooser chooser = FileDialoger.promptToSaveFile
(model.getName() + ".jmx");
FileWriter writer = null;
try {
writer = new FileWriter(chooser.getSelectedFile
());
TagHandler handler = (TagHandler) ((Saveable)
model).getTagHandlerClass().newInstance();
handler.startSave(writer);
handler.save((Saveable) model, writer);
}
catch (Throwable ex) {
ex.printStackTrace();
}
finally {
closeWriter(writer);
//<new code>
GuiPackage.getInstance().getMainFrame().repaint();
//</new code>
}
}
}

Severity: minor
OS: All

Can add Url Sample and Ftp Sample directly to ThreadGroup

khammond25 (Bug 3636):
The user interface allows the user to add Url Sample and Ftp Sample elements
directly to the ThreadGroup. As far as I know, you should only be able to add
Url Sample to a WebTesting element, and add Ftp Sample to a FTPTesting element.

Severity: normal
OS: All

jmeter 1.6 alpha looks for SSL.StaticProvider in stead of SSLStaticProvider

Jan Kester (Bug 1263):
Version is 1.6, which is an alpha. I don't know whether I should use this tool
to report this bug, as it only provides up to 1.5

I added jsse jars to my jmeter startup script, started jmeter, and the
NewDriver call gave a classNotFound exception for org.apache. .....
util.SSL.StaticProvider. Indeed, this class doesn't exist in the apacheJmeter
jar, but there is a SSLStaticProvider in the util package one above. Suppose
this is a bug.

Severity: major
OS: Linux

update documentation; invalid manifest file; cannot run using java -jar

khammond25 (Bug 3558):
In release 1.6, the manifest file is as follows:

Manifest-Version: 1.0
Main-Class: org.apache.jmeter.Driver

Because the Driver class was removed (February 15) and replaced with
org.apache.jmeter.NewDriver, you cannot run JMeter from the command line
with "java -jar".

The manifest file has already been corrected in CVS, but the user documentation
has not been updated with this important information. I only found one page
(noted in the URL field of this bug report) that needs to be updated.

The section, "From the Command Line", should be updated to say

  1. You cannot run the current release of JMeter using java -jar.

  2. Change the following text so that it says "NewDriver" instead of "Driver":

    CURRENT

    UNIX: <java interpreterer> <options> -classpath $CLASSPATH:ApacheJMeter.jar
    org.apache.jmeter.Driver [properties file]
    Windows: <java interpreter> <options> -classapth %
    classpath%;ApacheJMeter.jar org.apache.jmeter.Driver [properties file]

    CHANGE TO

    UNIX: <java interpreterer> <options> -classpath $CLASSPATH:ApacheJMeter.jar
    org.apache.jmeter.NewDriver [properties file]
    Windows: <java interpreter> <options> -classapth %
    classpath%;ApacheJMeter.jar org.apache.jmeter.NewDriver [properties file]

Severity: normal
OS: All

System.exit

Bo Regnlin (Bug 2896):
I found out that the behavior for File - exit, and the behavior of the right
upper "x" doesn´t exit in same way.
I think you should use the same method when closing even if you still not
are finnished with it yet as I can see in outprint when closing.
I have included the change I did so it used the same Command "ExitCommand.java".
I allso suggest that you declare the command strings in your class as
public final static String EXIT = "exit"; instead of hardcode them in different
places in the code. That way one could use them and get a compilationcheck
for them instead. That aplies for all Commands.
Changes made with comment <new code>
in file:
org.apache.jmeter.gui.MainFrame.java

private void init()
{
menuBar = new JMeterMenuBar();
createToolBar();
createTreePanel();
createMainPanel();
addThemAll();
addWindowListener(new WindowAdapter() {
public void windowClosing
(WindowEvent evt) {
//<new code>
//System.exit(0);
actionHandler.actionPerformed(new ActionEvent(this,evt.getID(),"exit"));
//</new code>
}
});
}

Severity: minor
OS: All

Cannot remove multiple elements; must remove one at a time

khammond25 (Bug 3624):
The user interface allows a user to select (highlight) multiple elements. The
user can then right-click, and choose "Remove" from the menu. Only one of the
elements is removed.

Solution: Either do not allow the user to select multiple elements, or add
functionality to the "Remove" command to remove all elements.

Severity: normal
OS: All

JDBC connection string incorrect

Mike Stover (Bug 4079):
The JDBC connection string format is different for different JDBC drivers, so
the UI needs to allow users to enter the entire connection string, rather than
3 fields for the different parts of the string.

Votes in Bugzilla: 2
Severity: normal
OS: other

Need the ability to change the port number for HTTP.

Rainer Mager (Bug 1204):
We want to run JMeter on some servlets that are running on port 8080 (not the
normal 80), it appears this can't be configured right now. I put this priority
to high because there currently is no workaround (aside from editing the source
code ;-).

OS: All

File Reporter Listener; does not catch FileNotFoundException

khammond25 (Bug 3637):
In the File Reporter Listener, if you attempt to open a non-existant file, a
java.io.FileNotFoundException is thrown.

For example, create a File Reporter Listener, then without browsing for a file,
click the "Open" button. You will see the following exception thrown:

java.io.FileNotFoundException: (The specified path is invalid)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:100)
at org.apache.jmeter.reporters.Filer.open(Filer.java:177)
at org.apache.jmeter.visualizers.FileVisualizer.open(FileVisualizer.java
:348)
at org.apache.jmeter.visualizers.FileVisualizer.actionPerformed(FileVisu
alizer.java:432)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:14
50)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(Abstra
ctButton.java:1504)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:378)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250
)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:216)
at java.awt.Component.processMouseEvent(Component.java:3717)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
    at java.awt.Container.dispatchEventImpl(Container.java:1200)
    at java.awt.Window.dispatchEventImpl(Window.java:912)
    at java.awt.Component.dispatchEvent(Component.java:2499)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)
    at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:10
  1.  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)
    

Severity: normal
OS: All

Running of TestPlan cannot be stop automatically i.e. without user interaction

Kunle.Adetona (Bug 2134):
No option to specify the number of times threads in a ThreadGroup should
iterate through the testcases. Therefore a TestPlan continues to run until
user selects Run->Stop from the menu. It would be nice for the TestPlan to
stop running after a number of iterations through the test cases and without
any user interaction.

OS: All

LoopControlPanel; non-standard GUI feedback

khammond25 (Bug 3682):
In the latest version of org.apache.jmeter.gui.LoopControlPanel (, there are
two problems:

  1. When the "infinite" checkbox is checked, the text field is disabled, but the
    text label "Number of iterations" remains enabled. The defacto standard is to
    disable both the label and the text field.

  2. When the "infinite" checkbox is unchecked, and you enter an non-numeric
    value, you get an Error Dialog. This is fine, but when you click OK to leave
    the dialog, the text field you were typing in is cleared out and the "infinite"
    checkbox is checked. Since we are validating this field after every keypress,
    one typing mistake and your penalized. You have to deselect the checkbox and
    type in your value again. It's an extra mouse click. It's fine to clear out
    the text field, but since the user was trying to enter a valid iteration count,
    let him try it again without having him deselect the checkbox again.

Severity: normal
OS: All

Broken link to "Running a test script"

jlinwood (Bug 1386):
Should be lower case r in running.html, not Running.html.

This is the "Usage" page, and the link is in the bulleted list at the top.

Thanks!
Jeff

Severity: normal
OS: All

Reading in web testing params == can't delete

Bruce Barrett (Bug 4503):
Fairly minor but here goes.
When I create a "web testing" "generative controller" in a thread group, then add
a parameter (say: aaa with a value bbb), save and re-open the [Delete] button
stays disabled.

Without the save/open operations the delete is active when a parameter name or
value is selected.

If I add another parameter then I can go back and delete the first. (Or I can
unchech the "use parameters" box and "selete" them all.)

Severity: minor
OS: Linux

2001.09.15 build does not compile in JDK1.2; dependency on JDK1.3

khammond25 (Bug 3642):
As of the 2001.09.15 nightly build

According to the documentation
(http://jakarta.apache.org/jmeter/installing.html), JMeter runs in a Java 1.2
environment.

JMeter currently depends on JDK 1.3 for the following reasons:

  1. File: org.apache.gui.MainFrame.java
    Method: addThemAll()
    Introduced: File Version 1.7

This method calls JSplitPane.setResizeWeight(double), which is a new method in
JDK 1.3.

  1. File: org.apache.protocol.http.parser.HtmlParser.java
    Method: createUrlFromAnchor(String, URL)
    Introduced: File Version 1.8

This method calls URL.getPath(), which is a new method in JDK 1.3.

  1. File: org.apache.protocol.http.config.UrlConfig.java
    Method: parseArguments(String)
    Introduced: File Version 1.19

This method calls URLDecoder.decode(String). In JDK 1.2, the decode() method
has a throws clause: "throws Exception". In JDK 1.3, the method does not have a
throws clause. So, in order to be JDK 1.2 compliant, we need to add a try/catch
around the method call.

FYI: Looking at the source code, I see two places where runtime exceptions can
be thrown. First, an IllegalArgumentException is thrown if the URL-encoded
value is an invalid hex number. Second, the method has a call to String.getBytes
(String), which throws an UnsupportedEncodingException if the named encoding
(in this case, 8859_1) is not supported.

Votes in Bugzilla: 1
Severity: normal
OS: All

Hard to see buttons in the frame

Bo Regnlin (Bug 2895):
When I start the application it is a little bigger than my screen is.
And when I reduse its size I can´t see the buttons on the controller Web Testing
that says "add" and "delete".
I have tried to solve it the code by change the panel to a scrollpane and then
I can scroll so I can see them, see my example below.
I don´t know if that is a solotion or if you could make the panel smaller in
some other way.
Anyway use it if you want to.
I have add <new code> were I have inserted code.

in the file:
org.apache.jmeter.gui.MainFrame.java

public void setMainPanel(Component comp)
{
mainPanel.removeAll();
mainPanel.add(comp);
mainPanel.setVisible(true);
mainPanel.validate();
mainPanel.repaint();
//<new code>
this.validate();
this.repaint();
//</new code>
}

private void addThemAll()
{
	this.setJMenuBar(menuBar);
	all = new JPanel(new GridBagLayout());
	GridBagConstraints gbc = new GridBagConstraints();

		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.gridheight = 1;
		gbc.gridwidth = 1;
		gbc.fill = gbc.BOTH;
		gbc.weightx = 1;
		gbc.weighty = 0;
		all.add(toolPanel,gbc.clone());

	JSplitPane treeAndMain = new JSplitPane

(JSplitPane.HORIZONTAL_SPLIT);
treeAndMain.setLeftComponent(new JScrollPane(treePanel));
//<new code>
treeAndMain.setRightComponent(new JScrollPane(mainPanel));
//</new code>
gbc.gridy++;
gbc.weighty = 1;
all.add(treeAndMain,gbc.clone());

	this.getContentPane().add(all);
}

OS: All

WebTesting element; delete non-existant param throws exception

khammond25 (Bug 3628):
The user interface allows a user to attempt to delete a non-existant parameter
in the WebTesting element. A java.lang.IndexOutOfBoundsException is thrown.

For example, add a WebTesting element. Next, with an empty Parameter Table,
click the Delete button. You get the following exception:

Exception occurred during event dispatching:
java.lang.IndexOutOfBoundsException: Index: -1, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:491)
at java.util.ArrayList.remove(ArrayList.java:375)
at org.apache.jmeter.config.Arguments.removeRow(Arguments.java:262)
at org.apache.jmeter.config.gui.ArgumentsPanel.actionPerformed
(Arguments Panel.java:146)
at javax.swing.AbstractButton.fireActionPerformed
(AbstractButton.java:1450)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed
(AbstractButton.java:1504)
at javax.swing.DefaultButtonModel.fireActionPerformed
(DefaultButtonModel.java:378)
at javax.swing.DefaultButtonModel.setPressed
(DefaultButtonModel.java:250)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased
(BasicButtonListener.java:216)
at java.awt.Component.processMouseEvent(Component.java:3717)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.LightweightDispatcher.retargetMouseEvent
(Container.java:2451)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2216)

    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
    at java.awt.Container.dispatchEventImpl(Container.java:1200)
    at java.awt.Window.dispatchEventImpl(Window.java:912)
    at java.awt.Component.dispatchEvent(Component.java:2499)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)
    at java.awt.EventDispatchThread.pumpOneEvent

(EventDispatchThread.java:103)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)

Severity: normal
OS: All

Duplicates:

Missing 'proxy server' in config elements

Jesse Strachman (Bug 3184):
Can't set up the browser monitoring because the pop-up menu is not showing
the 'proxy server' option. Documentation says the following:

To use the proxy server, create a Threadgroup in your testplan or workbench. In
the Threadgroup, add the Proxy Server (it will be an option under Config
Elements).

In the enclosed screen-shot, no 'Proxy Server' can be found in the 'Config
Elements' selection.

OS: All
Resolution: WORKSFORME

Can remove WorkBench and TestPlan elements

khammond25 (Bug 3623):
In version 1.6.1, the user interface allows a user to remove (by right-clicking
and selecting Remove) the WorkBench and TestPlan elements with no way to put
them back in.

Also, if you attempt to remove the Root element, a Java exception is thrown.

The context menu should gray-out the "Remove" menu item for Root, TestPlan, and
WorkBench elements.

Severity: normal
OS: All

CookiePanel: CookieUpdater has hard-coded JButton text

khammond25 (Bug 3758):
In CookiePanel -- CookieUpdater has hard-coded text for the OK and CANCEL
buttons. We should instead get these values from the resource file, since we
are already using it in other classes.

I didn't see an entry for OK in the resource files. Whoever created the
Japanese resource files needs to add it. I can add it to the english resource
file. The CANCEL text is already present.

Severity: normal
OS: All

Checkbox in HttpTestSample unnecessary and broken

Mike Stover (Bug 4425):
The checkbox in the Web Test controller ("Send Parameter With the Request") is
unnecessary (if I put parameters in, that implies I want to send them,
otherwise, they don't get sent, which is what the code does anyway).

Furthermore, if I created the Web Test using the proxy server, arguments are
added, but the checkbox isn't checked, which I assume would mean it wouldn't
work if I just hit "start" and expected JMeter to send the arguments. I have
to manually check the box for every Web Test made

And lastly, if I uncheck the box, all arguments are deleted, which is not a
nice thing to do :-)

Severity: normal
OS: other

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.