Java gatling example

Lillian 91 Published: 09/26/2024

Java gatling example

Here's an example of using the Gatling framework to create a Java-based load testing tool.

Introduction

Gatling is an open-source, commercially-friendly, pure-java load testing framework for web applications. It was built on top of the Scala programming language and allows you to easily write performance tests that mimic real users. In this example, we'll be creating a simple Gatling test in Java that simulates users accessing a web application.

Setup

Before we start, make sure you have Gatling installed on your machine. You can download it from their official website: https://gatling.io/.

Create a new Java project in your preferred IDE (Integrated Development Environment). Let's name our project "GatlingExample".

The Code

Here's the code for our simple Gatling test:

import io.gatling.core.CoreDsl;

import io.gatling.http.HttpRequest;

import io.gatling.http.HttpResponse;

public class MyLoadTest extends Simulation {

private HttpRequest request;

private HttpResponse response;

public MyLoadTest() {

// Create a new request to simulate

request = HttpRequest("http://localhost:8080")

.method(HttpRequest.POST)

.bodyString("Some data");

}

@Override

public Settings settings() {

return super.settings()

.gatlingHttp()

.baseURL("http://localhost:8080");

}

@TestScenario

public Scenario myScenario() {

// Create a new scenario with 10 concurrent users

return scenario("My Load Test")

.exec(session -> {

// Simulate the request

response = request.execute();

// Return a result based on the response

return 1;

});

}

public Results results(Runner runner) {

// Run our scenario with 1000 users for 30 seconds

return runner.run(myScenario().inject(atOnceUsers(1000).during(Duration.seconds(30))));

}

}

Explanation

Let's break down the code:

We create a new Java class that extends Gatling's Simulation class. Inside the constructor, we set up our request to simulate. In this case, we're making a POST request to a URL with some data in the body. In the settings() method, we configure our Gatling simulation to use a specific base URL for all requests. Our scenario is defined by the myScenario() method. We create a new scenario and execute our request inside it. Finally, we run our scenario with 1000 concurrent users for 30 seconds.

Running the Test

To run our test, compile your GatlingExample project and then use the following command to start the simulation:

java -cp  io.gatling.app.Gatling myLoadTest

Replace <path-to-gatling-jar> with the path to the Gatling JAR file.

Once you run the test, Gatling will create a report that shows the performance metrics for your application. You can view this report in a web browser by navigating to the directory where Gatling stored it.

That's it! This is just a basic example of what you can do with Gatling. There are many more features and configurations available to help you optimize and test your applications under various scenarios.

Java gatling tutorial

I'll provide a detailed tutorial on Java Gating (also known as Gatling) to help you understand how to use this popular performance testing tool.

What is Java Gatling?

Gatling is an open-source load testing framework that helps you simulate concurrent user behavior against your web application, database, or service. It allows you to create scripts for your tests in a simple and intuitive manner, making it easy for non-experts to create complex test scenarios. With Gatling, you can:

Test the performance of your application under heavy load

Identify performance bottlenecks Validate that your system behaves as expected under different traffic conditions

Getting Started with Java Gatling Tutorial

Step 1: Install Gatling

Download and install Gatling from the official website. You'll need to download the binary distribution (.zip file) for your operating system (Windows, macOS, or Linux).

Step 2: Write Your First Test Script

Create a new file named HelloWorld.gatling with the following content:

import io.gatling.core.CoreActions._

import io.gatling.http.HttpRequest

import io.gatling.http.HttpResponse

class HelloWorld extends Simulation {

def setUp() = {

http("my_request")

.get("/hello")

.check(status is 200)

}

def testScenarios() = {

scenario("Hello World Test")

.exec(setUp())

.exec(100 times repeat => {

http("my_request")

.get("/hello")

.check(status is 200)

})

}

}

This script defines a simple test that sends 100 GET requests to the /hello endpoint and verifies the response status code is 200.

Step 3: Run Your First Test

Open a command prompt or terminal, navigate to the directory where you saved your HelloWorld.gatling file, and run the following command:

gatling -v -s HelloWorld

This will execute your test script and display the results in a console-friendly format.

Step 4: Analyze Your Results

Once the test has completed, you'll see output like this:

------------------------------------------------

Hello World Test (100 users)

Simulation finished with result 'Succeeded'

[Summary]

[Throughput]: 81.42 requests/s

This output shows your test's duration, number of successful and failed requests, errors, and throughput.

Step 5: Create More Complex Tests

Now that you've successfully run your first test, you can create more complex scenarios by adding additional requests, loops, and conditions to your script. For example:

class ComplexTest extends Simulation {

def setUp() = {

http("my_request")

.get("/hello")

.check(status is 200)

}

def testScenarios() = {

scenario("Complex Test")

.exec(setUp())

.loop(5) {

exec(http("request1")

.get("/endpoint1")

.check(status is 200))

exec(http("request2")

.post("/endpoint2")

.body("Hello, World!")

.check(status is 201))

pause(10 seconds)

}

}

}

This script defines a scenario that sends five requests: two GET requests to different endpoints and three POST requests with a body. Each request is separated by a 10-second pause.

Conclusion

In this tutorial, you learned the basics of Java Gatling and how to create simple and complex test scripts using Scala. You also learned how to run your tests and analyze the results.

With Gatling, you can simulate various user scenarios, test performance under heavy load, and identify bottlenecks in your system. As you continue to explore Gatling's features, you'll become proficient in creating robust and realistic test scenarios that help you optimize your application's performance.