Chalba - open source load testing tool

sapan


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

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 archive
  • Add bin directory to the path of your system.
    • In linux add 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 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 dealy 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 chalab 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 exeute 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/

Post a Comment

0Comments
Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !