Meet Chalba An Open Source Load Testing Tool For Java

Written by skd | Published 2019/10/22
Tech Story Tags: testing-frameworks | loading-testing | performancetest | load-test | jmeter | java | latest-tech-stories | java-development-resources

TLDR Chalba is an open source hackable load testing tool. It is inspired form jmeter, gatling, grinder like tool. Unlike jmeter it don’t have a GUI you have to write the load code and the code is written in java thus enables you to leverage the full power of java. Chalba supports java 8 and JAVA_HOME must be set the java JDK. It will work in any platform which support java 8 or JRE 8.via the TL;DR App

Chalba is an open source hackable load testing tool. Chalab is inspired form jmeter, gatling, grinder like tool.
Unlike jmeter it don’t have GUI you have to write the load code and the code is written in java 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 help of these I can easily tweak my scripts in the linux box from where I am generating load
  • Website : http://buglens.com
  • Github : https://github.com/sapandang/chalba
Installing
  • Chalba support java 8 and JAVA_HOME must be set 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 support java.
  • Extract the archiveAdd bin directory to the path of your system.
  • In linux add full path of bin folder to path of ~/.profileIn windows add bin directory to the environment variable.
  • Type chalba in terminal or command prompt.chalba should get executed.
First Script
Now lets write are first load script in chalba. Chalba provide 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.*;

/**
 * This is the template File for writing the load script
 * Please follow the structure as described in this file
 *
 * @author sapan.dang
 */
@ThreadCount(1)
@ThreadSpawnDelay(100)
public class Task1 extends Task {

    // this constructor is required
    public Task1(TaskParams taskParams) {
    }

    //This method is executed after constructor
    //script must implement this method
    @Override
    public void run() {
        super.run();
        //executable method
        //it is good practice to write your code in other method
        mainLoop();
        _testCompleted(); //call when the test is complete
    }

    //Main Loop write your logic here
    public void mainLoop() {

        //Write your code in the try-catch block
        //to avoid any unexpected closure of the script
        try {
            //create GET request
            System.out.println("send get request");
            ResponseData googleResponse = requests.get("https://www.google.com/");
            System.out.println("response code " + googleResponse.code);

            //create async request
            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 thread you want to start. 
@ThreadSpawnDelay(100) specify the delay after each thread specified in ms.
If you are familar with java it can be observed that 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 a easy to use api to generate the requests.
For get request requests.get() it accept the url, headers, query parameters as from the document
For async requset AsyncResponseCallback() to the same get method.
currently chalba support only GET and POST methods.
Running the script
To run the script just pass the file name to chalba and it will exectute 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/

Written by skd | ᕦ( ▨̅ ͜▨̅ )ᕥ
Published by HackerNoon on 2019/10/22