Skip to content

Commit

Permalink
chore: Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
jigarkhwar committed Mar 31, 2024
1 parent 7a718c5 commit a3b8f6f
Show file tree
Hide file tree
Showing 71 changed files with 229 additions and 216 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ jobs:
java-version: [email protected]

- name: Test Release
run: sbt clean scalafmtCheckAll scalafmtSbtCheck compile coverage "Gatling / testOnly io.cosmospf.gatling.kafka.examples.KafkaGatlingTest" test coverageOff
run: sbt clean scalafmtCheckAll scalafmtSbtCheck compile coverage "Gatling / testOnly org.galaxio.gatling.kafka.examples.KafkaGatlingTest" test coverageOff

- name: Test Javaapi Methods
run: sbt compile "Gatling / testOnly io.cosmospf.gatling.kafka.examples.KafkaJavaapiMethodsGatlingTest"
run: sbt compile "Gatling / testOnly org.galaxio.gatling.kafka.examples.KafkaJavaapiMethodsGatlingTest"

- name: Coverage Report
run: sbt coverageReport
Expand Down
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Gatling Kafka Plugin

![Build](https://github.com/cosmospf/gatling-kafka-plugin/workflows/Build/badge.svg) [![Maven Central](https://img.shields.io/maven-central/v/io.cosmospf/gatling-kafka-plugin_2.13.svg?color=success)](https://search.maven.org/search?q=io.cosmospf.gatling-kafka) [![Scala Steward badge](https://img.shields.io/badge/Scala_Steward-helping-blue.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAMAAAARSr4IAAAAVFBMVEUAAACHjojlOy5NWlrKzcYRKjGFjIbp293YycuLa3pYY2LSqql4f3pCUFTgSjNodYRmcXUsPD/NTTbjRS+2jomhgnzNc223cGvZS0HaSD0XLjbaSjElhIr+AAAAAXRSTlMAQObYZgAAAHlJREFUCNdNyosOwyAIhWHAQS1Vt7a77/3fcxxdmv0xwmckutAR1nkm4ggbyEcg/wWmlGLDAA3oL50xi6fk5ffZ3E2E3QfZDCcCN2YtbEWZt+Drc6u6rlqv7Uk0LdKqqr5rk2UCRXOk0vmQKGfc94nOJyQjouF9H/wCc9gECEYfONoAAAAASUVORK5CYII=)](https://scala-steward.org)
[![codecov.io](https://codecov.io/github/cosmospf/gatling-kafka-plugin/coverage.svg?branch=master)](https://codecov.io/github/cosmospf/gatling-kafka-plugin?branch=master)
![Build](https://github.com/galax-io/gatling-kafka-plugin/workflows/Build/badge.svg) [![Maven Central](https://img.shields.io/maven-central/v/org.galaxio/gatling-kafka-plugin_2.13.svg?color=success)](https://search.maven.org/search?q=org.galaxio.gatling-kafka) [![Scala Steward badge](https://img.shields.io/badge/Scala_Steward-helping-blue.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAMAAAARSr4IAAAAVFBMVEUAAACHjojlOy5NWlrKzcYRKjGFjIbp293YycuLa3pYY2LSqql4f3pCUFTgSjNodYRmcXUsPD/NTTbjRS+2jomhgnzNc223cGvZS0HaSD0XLjbaSjElhIr+AAAAAXRSTlMAQObYZgAAAHlJREFUCNdNyosOwyAIhWHAQS1Vt7a77/3fcxxdmv0xwmckutAR1nkm4ggbyEcg/wWmlGLDAA3oL50xi6fk5ffZ3E2E3QfZDCcCN2YtbEWZt+Drc6u6rlqv7Uk0LdKqqr5rk2UCRXOk0vmQKGfc94nOJyQjouF9H/wCc9gECEYfONoAAAAASUVORK5CYII=)](https://scala-steward.org)
[![codecov.io](https://codecov.io/github/galax-io/gatling-kafka-plugin/coverage.svg?branch=master)](https://codecov.io/github/galax-io/gatling-kafka-plugin?branch=master)

# Introduction

Expand All @@ -18,42 +18,42 @@ You may include plugin as dependency in project with your tests. Write
### Scala

```scala
libraryDependencies += "io.cosmospf" %% "gatling-kafka-plugin" % <version> % Test
libraryDependencies += "org.galaxio" %% "gatling-kafka-plugin" % <version> % Test
```

### Java

Write this to your dependencies block in build.gradle:

```java
gatling "io.cosmospf:gatling-kafka-plugin_2.13:<version>"
gatling "org.galaxio:gatling-kafka-plugin_2.13:<version>"
```

### Kotlin

Write this to your dependencies block in build.gradle:

```kotlin
gatling("io.cosmospf:gatling-kafka-plugin_2.13:<version>")
gatling("org.galaxio:gatling-kafka-plugin_2.13:<version>")
```

## Example Scenarios

### Scala

Examples [here](src/test/scala/io/cosmospf/gatling/kafka/examples)
Examples [here](src/test/scala/org/galaxio/gatling/kafka/examples)

### Java

Examples [here](src/test/java/io/cosmospf/gatling/kafka/javaapi/examples)
Examples [here](src/test/java/org/galaxio/gatling/kafka/javaapi/examples)

### Kotlin

Examples [here](src/test/kotlin/io/cosmospf/gatling/kafka/javaapi/examples)
Examples [here](src/test/kotlin/org/galaxio/gatling/kafka/javaapi/examples)

## Download and create Avro schema

Avro schema is downloaded using the plugin [sbt-schema-registry-plugin](https://github.com/cosmospf/sbt-schema-registry-plugin)
Avro schema is downloaded using the plugin [sbt-schema-registry-plugin](https://github.com/galax-io/sbt-schema-registry-plugin)
and for that you need to configure schemas and url in `build.sbt` and run the command:

```bash
Expand All @@ -66,7 +66,7 @@ To run you should create scala object in root project directory and type `sbt ru

### Example download avro-schema

Example [here](https://github.com/cosmospf/gatling-kafka-plugin/tree/master/src/test/scala/io/cosmospf/gatling/kafka/examples)
Example [here](https://github.com/galax-io/gatling-kafka-plugin/tree/master/src/test/scala/org/galaxio/gatling/kafka/examples)

## Avro support in Request-Reply

Expand Down Expand Up @@ -119,8 +119,8 @@ val de = KafkaAvroDeserializer(CachedSchemaRegistryClient("schRegUrl".split(',')

### Example usage Avro in Request-Reply

Example [scala](src/test/scala/io/cosmospf/gatling/kafka/examples/AvroClassWithRequestReplySimulation.scala)
Example [scala](src/test/scala/org/galaxio/gatling/kafka/examples/AvroClassWithRequestReplySimulation.scala)

Example [java](src/test/java/io/cosmospf/gatling/kafka/javaapi/examples/AvroClassWithRequestReplySimulation.java)
Example [java](src/test/java/org/galaxio/gatling/kafka/javaapi/examples/AvroClassWithRequestReplySimulation.java)

Example [kotlin](src/test/kotlin/io/cosmospf/gatling/kafka/javaapi/examples/AvroClassWithRequestReplySimulation.kt)
Example [kotlin](src/test/kotlin/org/galaxio/gatling/kafka/javaapi/examples/AvroClassWithRequestReplySimulation.kt)
2 changes: 1 addition & 1 deletion build.sbt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Dependencies._
//import io.cosmospf.load.avro.RegistrySubject
//import org.galaxio.performance.avro.RegistrySubject

val scalaV = "2.13.10"
val avroSchemas = Seq() // for example Seq(RegistrySubject("test-hello-schema", 1))
Expand Down
8 changes: 4 additions & 4 deletions publish.sbt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
ThisBuild / organization := "io.cosmospf"
ThisBuild / organization := "org.galaxio"
ThisBuild / scmInfo := Some(
ScmInfo(
url("https://github.com/cosmospf/gatling-kafka-plugin"),
"[email protected]:cosmospf/gatling-kafka-plugin.git",
url("https://github.com/galax-io/gatling-kafka-plugin"),
"[email protected]:galax-io/gatling-kafka-plugin.git",
),
)

Expand All @@ -17,4 +17,4 @@ ThisBuild / developers := List(

ThisBuild / description := "Plugin to support kafka performance testing in Gatling(3.9.x)."
ThisBuild / licenses += ("Apache-2.0", url("http://www.apache.org/licenses/LICENSE-2.0"))
ThisBuild / homepage := Some(url("https://github.com/cosmospf/gatling-kafka-plugin"))
ThisBuild / homepage := Some(url("https://github.com/galax-io/gatling-kafka-plugin"))
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package io.cosmospf.gatling.kafka.javaapi;
package org.galaxio.gatling.kafka.javaapi;

import static io.gatling.javaapi.core.internal.Expressions.*;

import io.gatling.core.check.CheckBuilder;
import org.apache.avro.generic.GenericRecord;
import io.cosmospf.gatling.kafka.javaapi.checks.KafkaChecks;
import io.cosmospf.gatling.kafka.javaapi.protocol.*;
import io.cosmospf.gatling.kafka.javaapi.request.builder.*;
import io.cosmospf.gatling.kafka.request.KafkaProtocolMessage;
import org.galaxio.gatling.kafka.javaapi.checks.KafkaChecks;
import org.galaxio.gatling.kafka.javaapi.protocol.*;
import org.galaxio.gatling.kafka.javaapi.request.builder.*;
import org.galaxio.gatling.kafka.request.KafkaProtocolMessage;
import org.galaxio.gatling.kafka.javaapi.protocol.KafkaProtocolBuilderBase;
import org.galaxio.gatling.kafka.javaapi.request.builder.KafkaRequestBuilderBase;
import scala.Function1;

public final class KafkaDsl {
Expand All @@ -17,15 +19,15 @@ public static KafkaProtocolBuilderBase kafka() {
}

public static KafkaRequestBuilderBase kafka(String requestName) {
return new KafkaRequestBuilderBase(io.cosmospf.gatling.kafka.Predef.kafka(toStringExpression(requestName)), requestName);
return new KafkaRequestBuilderBase(org.galaxio.gatling.kafka.Predef.kafka(toStringExpression(requestName)), requestName);
}

public static KafkaChecks.KafkaCheckTypeWrapper simpleCheck(Function1<KafkaProtocolMessage, Boolean> f) {
return new KafkaChecks.KafkaCheckTypeWrapper(new KafkaChecks.SimpleChecksScala().simpleCheck(f.andThen(Boolean::valueOf)));
}

public static CheckBuilder.Find<Object, KafkaProtocolMessage, GenericRecord> avroBody() {
return new KafkaChecks.SimpleChecksScala().avroBody(io.cosmospf.gatling.kafka.javaapi.checks.KafkaChecks.avroSerde());
return new KafkaChecks.SimpleChecksScala().avroBody(org.galaxio.gatling.kafka.javaapi.checks.KafkaChecks.avroSerde());
}

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.checks;
package org.galaxio.gatling.kafka.javaapi.checks;

import io.gatling.javaapi.core.CheckBuilder.CheckType;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.checks
package org.galaxio.gatling.kafka.javaapi.checks

import io.gatling.core.check.Check
import io.gatling.core.check._
Expand All @@ -9,14 +9,14 @@ import io.gatling.core.check.string.BodyStringCheckType
import io.gatling.core.check.substring.SubstringCheckType
import io.gatling.core.check.xpath.XPathCheckType
import io.gatling.javaapi.core.internal.CoreCheckType
import io.cosmospf.gatling.kafka.checks.{KafkaCheckMaterializer, KafkaCheckSupport}
import io.cosmospf.gatling.kafka.request.KafkaProtocolMessage
import io.cosmospf.gatling.kafka.{KafkaCheck, checks}
import net.sf.saxon.s9api.XdmNode
import com.fasterxml.jackson.databind.JsonNode
import io.confluent.kafka.streams.serdes.avro.GenericAvroSerde
import org.apache.avro.generic.GenericRecord
import org.apache.kafka.common.serialization.Serde
import org.galaxio.gatling.kafka.KafkaCheck
import org.galaxio.gatling.kafka.checks.{KafkaCheckMaterializer, KafkaCheckSupport}
import org.galaxio.gatling.kafka.request.KafkaProtocolMessage

import java.{util => ju}
import scala.jdk.CollectionConverters._
Expand Down Expand Up @@ -63,7 +63,7 @@ object KafkaChecks {
)
case KafkaCheckType.ResponseCode =>
scalaCheck
.asInstanceOf[CheckBuilder[checks.KafkaCheckMaterializer.KafkaMessageCheckType, KafkaProtocolMessage]]
.asInstanceOf[CheckBuilder[KafkaCheckMaterializer.KafkaMessageCheckType, KafkaProtocolMessage]]
.build(
KafkaCheckMaterializer.kafkaStatusCheck,
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package io.cosmospf.gatling.kafka.javaapi.protocol;
package org.galaxio.gatling.kafka.javaapi.protocol;

import java.time.Duration;
import java.util.Map;

import static scala.jdk.javaapi.CollectionConverters.asScala;

import org.galaxio.gatling.kafka.protocol.KafkaProtocol;
import scala.jdk.javaapi.DurationConverters;

public class KPConsumeSettingsStep {
Expand All @@ -19,12 +21,12 @@ public KPConsumeSettingsStep(Map<String, Object> producerSettings, Map<String, O
public KafkaProtocolBuilderNew timeout(Duration timeout) {
scala.collection.immutable.Map<String, Object> ps = scala.collection.immutable.Map.from(asScala(this.producerSettings));
scala.collection.immutable.Map<String, Object> cs = scala.collection.immutable.Map.from(asScala(this.consumeSettings));
return new KafkaProtocolBuilderNew(io.cosmospf.gatling.kafka.protocol.KafkaProtocolBuilderNew.apply(ps, cs, DurationConverters.toScala(timeout), io.cosmospf.gatling.kafka.protocol.KafkaProtocol.KafkaKeyMatcher$.MODULE$));
return new KafkaProtocolBuilderNew(org.galaxio.gatling.kafka.protocol.KafkaProtocolBuilderNew.apply(ps, cs, DurationConverters.toScala(timeout), KafkaProtocol.KafkaKeyMatcher$.MODULE$));
}

public KafkaProtocolBuilderNew withDefaultTimeout() {
scala.collection.immutable.Map<String, Object> ps = scala.collection.immutable.Map.from(asScala(this.producerSettings));
scala.collection.immutable.Map<String, Object> cs = scala.collection.immutable.Map.from(asScala(this.consumeSettings));
return new KafkaProtocolBuilderNew(io.cosmospf.gatling.kafka.protocol.KafkaProtocolBuilderNew.apply(ps, cs, DurationConverters.toScala(Duration.ofSeconds(60)), io.cosmospf.gatling.kafka.protocol.KafkaProtocol.KafkaKeyMatcher$.MODULE$));
return new KafkaProtocolBuilderNew(org.galaxio.gatling.kafka.protocol.KafkaProtocolBuilderNew.apply(ps, cs, DurationConverters.toScala(Duration.ofSeconds(60)), KafkaProtocol.KafkaKeyMatcher$.MODULE$));
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.protocol;
package org.galaxio.gatling.kafka.javaapi.protocol;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package io.cosmospf.gatling.kafka.javaapi.protocol;
package org.galaxio.gatling.kafka.javaapi.protocol;

import io.gatling.core.protocol.Protocol;
import io.gatling.javaapi.core.ProtocolBuilder;

public class KafkaProtocolBuilder implements ProtocolBuilder {

private final io.cosmospf.gatling.kafka.protocol.KafkaProtocolBuilder wrapped;
private final org.galaxio.gatling.kafka.protocol.KafkaProtocolBuilder wrapped;

public KafkaProtocolBuilder(io.cosmospf.gatling.kafka.protocol.KafkaProtocolBuilder wrapped) {
public KafkaProtocolBuilder(org.galaxio.gatling.kafka.protocol.KafkaProtocolBuilder wrapped) {
this.wrapped = wrapped;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.protocol;
package org.galaxio.gatling.kafka.javaapi.protocol;

import java.util.Collections;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package io.cosmospf.gatling.kafka.javaapi.protocol;
package org.galaxio.gatling.kafka.javaapi.protocol;

import io.gatling.core.protocol.Protocol;
import io.gatling.javaapi.core.ProtocolBuilder;
import io.cosmospf.gatling.kafka.request.KafkaProtocolMessage;
import org.galaxio.gatling.kafka.request.KafkaProtocolMessage;
import scala.Function1;

public class KafkaProtocolBuilderNew implements ProtocolBuilder {

private io.cosmospf.gatling.kafka.protocol.KafkaProtocolBuilderNew wrapped;
private org.galaxio.gatling.kafka.protocol.KafkaProtocolBuilderNew wrapped;

public KafkaProtocolBuilderNew(io.cosmospf.gatling.kafka.protocol.KafkaProtocolBuilderNew wrapped) {
public KafkaProtocolBuilderNew(org.galaxio.gatling.kafka.protocol.KafkaProtocolBuilderNew wrapped) {
this.wrapped = wrapped;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.protocol;
package org.galaxio.gatling.kafka.javaapi.protocol;

import java.util.Map;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.protocol;
package org.galaxio.gatling.kafka.javaapi.protocol;

import java.util.Map;
import static scala.jdk.javaapi.CollectionConverters.asScala;
Expand All @@ -17,7 +17,7 @@ public KafkaProtocolBuilder properties(Map<String, Object> props) {
this.props = props;
scala.collection.immutable.Map<String, Object> scalaMap = scala.collection.immutable.Map.from(asScala(this.props));
return new KafkaProtocolBuilder(
io.cosmospf.gatling.kafka.protocol.KafkaProtocolBuilderPropertiesStep.apply(this.topic, scalaMap)
org.galaxio.gatling.kafka.protocol.KafkaProtocolBuilderPropertiesStep.apply(this.topic, scalaMap)
.properties(scalaMap)
);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
package io.cosmospf.gatling.kafka.javaapi.request.builder;
package org.galaxio.gatling.kafka.javaapi.request.builder;

import io.gatling.commons.validation.Validation;
import io.gatling.core.session.Session;
import org.apache.kafka.common.header.Headers;
import org.apache.kafka.common.header.internals.RecordHeaders;
import org.galaxio.gatling.kafka.request.builder.Sender;
import scala.Function1;

import static io.gatling.javaapi.core.internal.Expressions.*;
import static io.gatling.javaapi.core.internal.Expressions.toStaticValueExpression;

public class KafkaRequestBuilderBase {

private final io.cosmospf.gatling.kafka.request.builder.KafkaRequestBuilderBase wrapped;
private final org.galaxio.gatling.kafka.request.builder.KafkaRequestBuilderBase wrapped;
private final String requestName;

private <T> Function1<Session, Validation<T>> calculateExpression(T obj) {
Expand All @@ -25,7 +26,7 @@ private <T> Function1<Session, Validation<T>> calculateExpression(T obj) {
return expression;
}

public KafkaRequestBuilderBase(io.cosmospf.gatling.kafka.request.builder.KafkaRequestBuilderBase wrapped, String requestName) {
public KafkaRequestBuilderBase(org.galaxio.gatling.kafka.request.builder.KafkaRequestBuilderBase wrapped, String requestName) {
this.wrapped = wrapped;
this.requestName = requestName;
}
Expand All @@ -36,7 +37,7 @@ public KafkaRequestBuilderBase(io.cosmospf.gatling.kafka.request.builder.KafkaRe
calculateExpression(key),
calculateExpression(payload),
toStaticValueExpression(new RecordHeaders()),
io.cosmospf.gatling.kafka.request.builder.Sender.noSchemaSender()
Sender.noSchemaSender()
));
}

Expand All @@ -46,14 +47,14 @@ public KafkaRequestBuilderBase(io.cosmospf.gatling.kafka.request.builder.KafkaRe
calculateExpression(key),
calculateExpression(payload),
toStaticValueExpression(headers),
io.cosmospf.gatling.kafka.request.builder.Sender.noSchemaSender()
Sender.noSchemaSender()
));
}

public <V> RequestBuilder<?, ?> send(V payload) {
return new RequestBuilder<>(wrapped.send(
calculateExpression(payload),
io.cosmospf.gatling.kafka.request.builder.Sender.noSchemaSender()));
Sender.noSchemaSender()));
}

public <K, V> RequestBuilder<?, ?> send(V payload, Headers headers) {
Expand All @@ -62,7 +63,7 @@ public KafkaRequestBuilderBase(io.cosmospf.gatling.kafka.request.builder.KafkaRe
null,
calculateExpression(payload),
toStaticValueExpression(headers),
io.cosmospf.gatling.kafka.request.builder.Sender.noSchemaSender()
Sender.noSchemaSender()
));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.request.builder;
package org.galaxio.gatling.kafka.javaapi.request.builder;

public class RRInTopicStep {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.cosmospf.gatling.kafka.javaapi.request.builder;
package org.galaxio.gatling.kafka.javaapi.request.builder;

import org.apache.kafka.common.header.Headers;
import org.apache.kafka.common.header.internals.RecordHeaders;
import org.apache.kafka.common.serialization.*;
import io.cosmospf.gatling.kafka.request.builder.KafkaRequestBuilderBase;
import org.galaxio.gatling.kafka.request.builder.KafkaRequestBuilderBase;
import scala.reflect.ClassTag;

import static io.gatling.javaapi.core.internal.Expressions.*;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.cosmospf.gatling.kafka.javaapi.request.builder;
package org.galaxio.gatling.kafka.javaapi.request.builder;

public class ReqRepBase {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package io.cosmospf.gatling.kafka.javaapi.request.builder;
package org.galaxio.gatling.kafka.javaapi.request.builder;

import io.gatling.javaapi.core.ActionBuilder;

public class RequestBuilder<K, V> implements ActionBuilder {

private final io.cosmospf.gatling.kafka.request.builder.RequestBuilder<K, V> wrapped;
private final org.galaxio.gatling.kafka.request.builder.RequestBuilder<K, V> wrapped;

public RequestBuilder(io.cosmospf.gatling.kafka.request.builder.RequestBuilder<K,V> wrapped) {
public RequestBuilder(org.galaxio.gatling.kafka.request.builder.RequestBuilder<K,V> wrapped) {
this.wrapped = wrapped;
}

Expand Down
Loading

0 comments on commit a3b8f6f

Please sign in to comment.