Gatling as maven dependencies:
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>4.19.1</version>
</plugin>
<dependencies>
<dependency>
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>3.14.3</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
I have created load test:
import io.gatling.javaapi.core.*;
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import static io.gatling.javaapi.core.CoreDsl.*;
public class KafkaLoadTesting extends Simulation {
private static final String TOPIC = "likes-bucket";
private static final String BOOTSTRAP_SERVERS = "localhost:9092";
private static void sendKafkaMessage(String message) {
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVERS);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record = new ProducerRecord<>(TOPIC, message);
producer.send(record);
producer.close();
}
ChainBuilder kafkaAction = exec(session -> {
String payload = "{\"talkName\":\"Spring best practice\",\"likes\":1}";
sendKafkaMessage(payload);
return session;
});
{
setUp(
scenario("Kafka Load Test")
.exec(kafkaAction)
.pause(1, TimeUnit.SECONDS.ordinal())
.repeat(100).on(kafkaAction)
.injectOpen(atOnceUsers(10))
).protocols();
}
}
I run the test ./mvnw clean gatling:test
I got loop:
What i do wrong ?