09.11.2012

Replace function for JMeter

Here is code where implemented function which can be used for replace in string some pattern.
Of course for it can be used BeanShel scripting or something like that, but precompiled function works much faster and resource saving.
Compile ReplaceSJP.java or use precompiled somePlugins.jar
Examples for using:


Example >
Result

${__Replace(some_xml_big_data_with_#CustomerID#_and_another_else,#CustomerID#,3.15-9.20)} > 
some_xml_big_data_with_3.15-9.20_and_another_else

${__Replace(some_#FormatID#_big_data_with_#CustomerID#_and_another_else,#CustomerID#,3.15-9.20,#FormatID#,xml)} >
some_xml_big_data_with_3.15-9.20_and_another_else

${__Replace(123456,5,7,3,9)} >
129476

${__Replace(123456,[1-2],7,3,9)} >
779456

${__Replace(123456789qwerty,[1-2],7,3,9,[w],word)} >
779456789qworderty

in User defined variables                                                                            
string=123456789qwerty
${__Replace(${string},[1-2],7,3,9,[w],word)} >
779456789qworderty

01.07.2012

How to parse JMeter logs and import it into database for further processing

Bellow two scripts which can help you to export JMeter logs into Oracle through sqlplus&sqlldr (it should be installed in your system)
With jtl_to_db_struct.sql you can create in Oracle two tables, "tests" - with information about tests iterations and "results" - with responses from jtl, and sequence "test_id_seq" for tests identification.
With jtltodb.py you can parse jtl into csv and load it into database, use Python 2.7+ for it.

13.02.2012

How to execute command on remote server through ssh from JMeter script

Now JMeter hasn't sampler for execute command on remote server, but it has beanshell & beanshell framework which can everything what can program languages like Java, Jpython&Jython, Javascript, Perl, Groovy, Ruby, Prolog, VBScript, XSLT, etc.
Below described how with ssh library Ganymed SSH-2 for Java we can write java code, which execute for us command on remote server.
It library you can download from http://code.google.com/p/ganymed-ssh-2/ and should put into JMeter\lib directory.
PS Don't forget check exit code and set IsSuccess constant in accordance with it!!!
import java.io.*;
import java.util.*;
import ch.ethz.ssh2.*;
String hostname = "server";
String username = login;
String password = password;
String command = "uname -a";
// Connect to the server
connection = new Connection( hostname );
connection.connect();
// Authenticate
connection.authenticateWithPassword( username, password );
// Open a session
Session session = connection.openSession();
// Execute the command
session.execCommand( command );
// Read the results
StringBuilder sbOut = new StringBuilder();
StringBuilder sbErr = new StringBuilder();
InputStream stdOut = new StreamGobbler( session.getStdout() );
InputStream stdErr = new StreamGobbler( session.getStderr() );
BufferedReader brOut = new BufferedReader(new InputStreamReader(stdOut));
BufferedReader brErr = new BufferedReader(new InputStreamReader(stdErr));
String lineOut = brOut.readLine();
String lineErr = brErr.readLine();
while( lineOut != null )
{
sbOut.append( lineOut + "\n" );
lineOut = brOut.readLine();
}
while( lineErr != null )
{
sbErr.append( lineErr + "\n" );
lineErr = brErr.readLine();
}
// Close the session
session.close();
// Logout from the server
connection.close();
//Check exit code from shell
if (session.getExitStatus() == 0)
{
//Set beanshell status
IsSuccess = true;
// Return stdout
return sbOut.toString();
}
else
{
//Set beanshell status
IsSuccess = false;
// Return stderr
return sbErr.toString();
}