How to run overnight endurance test consecutively using jmeter

Endurance Test:

Performing a long run load test and finding the performance bottleneck of the given server is called Endurance Test.

Often in performance testing  testers would face the following 2 scenarios,

1) Running single testplan for more than 8 hours

2) Running Multiple testplans one after another for more than 8 hours or overnight (without much of manual effort, just click run and go , take the report in the next day morning )

So what is the method of implementing the above 2 scenarios? Here is my suggestion though it depends entirely on your workload model requirement.

Scenario1:

To Run a single testplan ,

a) first calculate the hours that your test has to run in milliseconds

b) Add constant timer/uniform random timer to the samplers wherever it is required to pause the run and release it together.

c) Divide the time that you have in milliseconds from step #a , and put it in each timer.

d) Now Run the Test and make your life easy 🙂

jmee1

 Scenario2:

Here it comes a simple feature and readily available in our Iron Man, JMETER.

a) Put all your thread groups under single test plan.

b) Right click on Testplan and check ‘Run Thread Groups consecutively’

jmeter2

 Happy testing 🙂 🙂 🙂

How to execute Linux command or shell script from APACHE JMETER

linux1

linux1Sometimes it is necessary for the load test to send a linux command to verify the content/file exists in the remote linux server. Every time it is not a fair idea to connect remote server by file server browsers like winscp ,putty etc… as it is a load test. In such situations JMETER offers a sampler called ‘SSH sampler’ . This sampler is introduced to communicate with the linux server over ssh shell . It will be definitely useful for both Functional and Performance Testers.

Apache Jmeter’s SSH Sampler:

Sampler which will connect to linux server and execute linux commands

Steps in detail:

1) Download SSH Sampler plugin from google’s website
https://code.google.com/p/jmeter-ssh-sampler/
2) Copy the jar to your local Apache Jmeter’s “lib/ext” folder.

3) Download “jsch-0.1.51.jar” and place it in your local Apache Jmeter’s “lib/” folder.

4) Open Jmeter-> ThreadGroup->Samplers-> SSH Command

5) Give hostname,username, password and the linux command to be executed

6) Run Jmeter

7) Capture results in ‘View Results Tree’

 

Here is the image for your reference:

test

 

Unable to install IBM Installation Manager on RHEL 6.* (64-bit)

There was an issue, with IBM installation manager not able to install or start in RHEL 6.* series. This issue is fixed by IBM and is available in Fix central for download. The fix name is agent.installer.linux.gtk.x86_64_1.6.0.20120831_1216.

If you are using the old IBM installation manager, during install you may face errors like this.

[root@rhel64]# ./install
bash: ./install: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

Cause:

Installation Manager is a 32-bit application and requires 32-bit versions of OS system libraries. These libraries are not installed on RHEL 6.0/6.1 x86_64 (64-bit) by default. You must install these 32-bit libraries on your system before you run Installation Manager.

Solution:

Configure yum on your server, install the required 32bit binaries.

To configure yum on your server refer here https://www.technix.in/local-yum-setup-for-rhel/

after the yum configuration install the dependent 32bit binaries as shown below.

[root@localhost]# yum install gtk2.i686
[root@localhost]# yum install libXtst.i686
[root@localhost]# yum install compat-libstdc++

Once the install is complete. IBM installation manager installation can be proceeded as normal.

 

How to use proxy server from Linux terminal

In Linux/Unix there is an environment variable called “http_proxy” which can be configured for text based internet sessions.  This variable is used by wget, curl, lynx etc.

How to set http_proxy variable

Type the following command to set proxy server

#export http_proxy=http://10.99.2.197:8080

 How to set the http_proxy variable globally

#vi /etc/profile

add the following lines.

#export http_proxy=http://10.99.2.197:8080

 How to I use a password protected proxy while using command line internet

#curl --proxy-user <username>:<password> www.technix.in

 

 

What’s WSDL?

Web Service Definition Language in short WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure oriented information.

WSDL is a

  • XML document written to describe a web service.
  • It specifies the location of the web service and the operations or methods the web service exposes.

A WSDL document uses the following elements in the definition of network services (Web services)

  • Types – a container for data type definitions. This describes the data. The XML schema Language(Known as XSD also) is used for this purpose.
  • Message – an abstract, typed definition of the data being communicated. The contains the information needed to perform the operation.
  • Operation – an abstract description of an action supported by a service. This defines the actions and the way the message is encoded.
  • Port Type – an abstract set of operations supported by one or more endpoints.
  • Binding – a concrete protocol and data format specification for a particular port type. Defines the interface and the binding style.
  • Port – a Single endpoint defined as a combination of a binding and a network address. It defines the address or the connection point to a web service.
  • Service – a collection of related endpoints
Representation of concepts defined by WSDL 1.1 and WSDL 2.0 documents.
Representation of concepts defined by WSDL 1.1 and WSDL 2.0 documents.

WSDL 1.2 has been renamed to WSDL 2.0,  because of the major differences, like

  • Removed message constructs.
  • Operator overloading not supported.
  • PortTypes renamed to interfaces.
  • Ports renamed to interfaces.
  • Added further semantics to the description language. 
<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://www.w3.org/ns/wsdl" 
             xmlns:tns="http://www.tmsws.com/wsdl20sample" 
             xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/"
             xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
             targetNamespace="http://www.tmsws.com/wsdl20sample">

<!-- Abstract type -->
   <types>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns="http://www.tmsws.com/wsdl20sample"
                targetNamespace="http://www.example.com/wsdl20sample">

         <xs:element name="request"> ... </xs:element>
         <xs:element name="response"> ... </xs:element>
      </xs:schema>
   </types>

<!-- Abstract interfaces -->
   <interface name="Interface1">
      <fault name="Error1" element="tns:response"/>
      <operation name="Opp1" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="In" element="tns:request"/>
         <output messageLabel="Out" element="tns:response"/>
      </operation>
   </interface>

<!-- Concrete Binding Over HTTP -->
   <binding name="HttpBinding" interface="tns:Interface1" 
            type="http://www.w3.org/ns/wsdl/http">
      <operation ref="tns:Get" whttp:method="GET"/>
   </binding>

<!-- Concrete Binding with SOAP-->
   <binding name="SoapBinding" interface="tns:Interface1" 
            type="http://www.w3.org/ns/wsdl/soap" 
            wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
            wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
      <operation ref="tns:Get" />
   </binding>

<!-- Web Service offering endpoints for both bindings-->
   <service name="Service1" interface="tns:Interface1">
      <endpoint name="HttpEndpoint" 
                binding="tns:HttpBinding" 
                address="http://www.example.com/rest/"/>
      <endpoint name="SoapEndpoint" 
                binding="tns:SoapBinding" 
                address="http://www.example.com/soap/"/>
   </service>
</description>

 

Example WSDL

Websphere MQ

As per IBM notes

IBM WebSphere MQ can transport any type of data as messages, enabling businesses to build flexible, reusable architectures such as service-oriented architecture (SOA) environments. It works with a broad range of computing platforms, applications, web services and communications protocols for security-rich message delivery. WebSphere MQ provides a communications layer for visibility and control of the flow of messages and data inside and outside your organization.”

WebSphere MQ provides:

  • Versatile messaging integration from mainframe to mobile that provides a single, robust messaging backbone for dynamic heterogeneous environments.
  • Message delivery with security-rich features that produce auditable results.
  • High-performance message transport to deliver data with improved speed and reliability.
  • Administrative features that simplify messaging management and reduce time spent using complex tools.
  • Open standards development tools that support extensibility and business growth

More details can be availed from IBM website

dist_400px

 

 

 

 

 

 

 

 

For more information on Load testing IBM Websphere MQ using Jmeter check here.

Symmetric Encryption Vs Asymmetric Encryption

Symmetric Encryption

  • Symmetric encryption is the oldest and best-known technique.
  • A secret key, which can be a number, a word, or just a string of random letters, is applied to the text of a message to change the content in a particular way.This might be as simple as shifting each letter by a number of places in the alphabet.
  • Symmetric encryption uses the identical key to both encrypt and decrypt the data. 
  • As long as both sender and recipient know the secret key, they can encrypt and decrypt all messages that use this key.

Examples of Symmetric Encryption includes: DES, Triple-DES (3DES), IDEA, CAST5, BLOWFISH, TWOFISH.

Asymmetric Encryption

  • This encryption technique is born from the disadvantage of Symmetric Encryption.
  • Asymmetric encryption, in which there are two related keys–a key pair(A public Key and a Private Key). 
  • A public key is made freely available to anyone who might want to send you a message. A second, private key is kept secret, so that only you know it. 
  • Any message (text, binary files, or documents) that are encrypted by using the public key can only be decrypted by applying the same algorithm, but by using the matching private key. 
  • Any message that is encrypted by using the private key can only be decrypted by using the matching public key.

Examples of Asymmetric Encryption includes: RSA, DSA.

Known performance issues in Oracle SOA Products and Oracle AIA Foundation Pack for 11g Release 1 (11.1.1.7)

These are Known performance issues in Oracle SOA Products and Oracle AIA Foundation Pack for 11g Release 1 (11.1.1.7):

  • PermGen Space Out-of-Memory Error when Using the Sun JDK
  • Maximum Heap Memory Size Recommendations on Windows 2008 Server
  • Increasing the XA Transaction Timeout Value
  • Inconsistent States for SOA Composite Application Instances in Recovery
  • Google Chrome Browser Limitation on Displaying XML
  • Exception: Internal Error While Activating AIAJMSSERVER (JMS Server)
  • Dequeuer Returns the Same Message in High Concurrency Environments with Oracle Database 11.2
  • Default/Last Active Revision of a Composite Is Not Identified When Retiring All Composites in a Partition.

For more information visit : http://www.oracle.com/technetwork/middleware/docs/aiasoarelnotesps6-1866030.html

Loadtesting Websphere IBM MQ server using JMETER

 

 About :

For Loadtesting Apache Active MQ , JMS-Point-to-Point sampler in Jmeter will help us. Think that you do not have JNDI settings and no apache activemq for JMS messaging, instead IBM Websphere MQ is in place.  One day your manager is coming and asking you to test IBM MQ using open source testing tool as they do not ready to pay for small scale performance testing.

In that case , here is the steps to use Jmeter to load test IBM Websphere MQ.
The content here is pretty much precious and definitely it will save your valuable time 🙂

  • Below are the Java and MQ jars needed.  Download these jar files and place it under Jmeter’s libext directory. ‘jmeter-jms-skip-jndi-0.0.1.jar‘ is the jar contains the MQ declaration and coding to connect it. You can down it from the URL :http://www.java2s.com/Code/Jar/j/Downloadjmeterjmsskipjndi001jar.htm
    • com.ibm.mq.jar
    • org.springframework.beans.jar
    • org.springframework.jms.jar
    • javax.jms.jar
    • jmeter-jms-skip-jndi-0.0.1.jar
    • spring-core.jar
  •  Open Jmeter -> File-> New->TestPlan -> Add Thread Group
  • Under Thread Group add Samplers->JMS Point-to-Point Sampler and configure the parameter. As given in the below Screenshot.
  •  Run Jmeter Script and Enjoy IBM MQ load testing .

MQ1

TOP 15 Reasons why you can use jmeter for performance testing

 

  1. Jmeter is an open source tool.
  2. There seem to be more cost saving for MQ ,SOAP,FTP protocols when considering other proprietary tools in the market.
  3. Customized/Specialized reports are given in proprietary tools to attract the end users. Jmeter has simple reports and it will be helpful to analyse the server logs and get into the root cause of the performance issue. So if you do not want Grand UI reports , Jmeter will save more money from you pocket.
  4. User friendly UI.
  5. All the components are pre-built and readily available for use. Even the person who is not much comfortable with coding can understand and script in jmeter.
  6. Test can be executed in NON-GUI mode to save the machine resources.
  7. You can extend or write the new samplers in java and it can be included in jmeter.
  8. You can send the files with the request using simple configuration.
  9. It is easy to run multiple users (1000 User logins in ~2GB system) without worrying license cost.
  10.  Simple and effective session correlation for a web application.
  11. You can run multiple scripts consecutively(One at a time) , also all at a time (concurrently)
  12.  Response time results can be exported to CSV.
  13. Assertions will help to validate the response from the server easily.
  14. You can send JSON string and test JSON response for HTTP request.
  15. Various timers are there to introduce the delay concept