paint-brush
Chalba - open source load testing toolby@skd
198 reads

Chalba - open source load testing tool

by ᕦ( ▨̅ ͜▨̅ )ᕥOctober 22nd, 2019
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

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.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Chalba - open source load testing tool
ᕦ( ▨̅ ͜▨̅ )ᕥ HackerNoon profile picture

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/