Introduction
Chalba is an open source hackable load testing tool. Chalab is inspired from jmeter, gatling, grinder like tool.
Unlike jmeter, it doesn’t have GUI, you have to write the load code and the code is written in Java and thus enables you to leverage the full power of Java.
The best part is you don’t need any build tool. Just pass the Java file to it for execution. With the help of these, I can easily tweak my scripts in the linux box from where I am generating load.
I have been using chalba for creating complex load scenario that can't be created using jmeter.
Installing
- Chalba support java 8 and JAVA_HOME must be set to the java JDK it won’t work with JRE
- Visit https://buglens.com/ download package for your environment. It is written in Java so it will work in any platform which supports Java.
- Extract the archive
- Add bin directory to the path of your system
- In Linux, add the full path of bin folder to path of ~/.profile
- In Windows, add bin directory to the
environment
variable
- Type
chalba
in terminal or command prompt. - chalba should get execute.
First Script
Now let's write our first load script in chalba. Chalba provides features to generate the boilerplate script.
chalba -newFile
It will generate the file name Task1.java in the current directory.
package chalba;
import skd.chalba.common.*;
import skd.chalba.requests.*;
import skd.chalba.runner.*;
import skd.chalba.interfaces.*;
@ThreadCount(1)
@ThreadSpawnDelay(100)
public class Task1 extends Task {
public Task1(TaskParams taskParams) {
}
@Override
public void run() {
super.run();
mainLoop();
_testCompleted();
}
public void mainLoop() {
try {
System.out.println("send get request");
ResponseData googleResponse = requests.get("https://www.google.com/");
System.out.println("response code " + googleResponse.code);
requests.get("https://www.google.com/", new AsyncResponseCallback() {
@Override
public void onResponse(ResponseData arg0) {
System.out.println(" "+arg0.body);
}
});
} catch (Exception e) {
LOG(e);
}
}
}
The script is java class file. So you can code using any IDE, just add chalba.jar found inside the lib directory of chalba in the classpath of the IDE.
Here, @ThreadCount(1)
specifies how many threads you want to start. @ThreadSpawnDelay(100)
specifies the delay after each thread specified in ms.
If you are familiar with Java, it can be observed that the first constructor public Task1(TaskParams taskParams)
is called after that public void run()
is executed.
The script logic can be written in public void mainLoop()
method.
_testCompleted();
is called after completion of the test.
Requests
chalba provides an easy to use API to generate the requests.
For get request requests.get(), it accepts the url, headers, query parameters as from the document.
For async request AsyncResponseCallback()
to the same get
method.
Currently, chalab supports only GET
and POST
methods.
Running the Script
To run the script, just pass the file name to chalba and it will execute the script.
chalba -f Task1.java
It will execute the Task1.java. chalba writes logs in chalba.log and reponses are logged in response.ctl. This is the csv file.
Analytics
Currently, chalba does not support out of the HTML reporting. However, you can use your own analytics tool to analyse the response.ctl file.
Chalaba documentation https://buglens.com/guide/guide/