Skip to content

0.10.0

Compare
Choose a tag to compare
@osoykan osoykan released this 10 Jun 08:38
· 289 commits to main since this release
fc234a7

What's Changed

New Feature

  • Standalone Kafka Integration has been implemented, framework agnostic Kafka message validations 🎉

Necessary configuration:

Testing side:

  kafka {
      stoveKafkaObjectMapperRef = objectMapperRef
      KafkaSystemOptions {
        listOf(
          "kafka.bootstrapServers=${it.bootstrapServers}",
          "kafka.interceptorClasses=${it.interceptorClass}"
        )
      }
    }

In the application side you need to do:

 // Kafka settings on the application side
 // To be able to validate consumed messages. The important thing here is the order of the intercept classes if you have any.  
// You should put the `StoveKafkaBridge` at the end of the list, 
// so that you won't miss any manipulations or header changes made by your interceptors.

  put(ConsumerConfig.INTERCEPTOR_CLASSES_CONFIG, config.kafka.interceptorClasses)

// For published messages:
  put(ProducerConfig.INTERCEPTOR_CLASSES_CONFIG, config.kafka.interceptorClasses)

To validate:

 validate {
      kafka {
        val productId = randomString() + "[productCreated]"
        publish("product", message = ProductCreated(productId), key = randomString().some())
        shouldBePublished<ProductCreated> {
          actual.productId == productId
        }
        shouldBeConsumed<ProductCreated>(1.minutes) {
          actual.productId == productId
        }
      }
    }

Please check recipes for more information and example scenarios.

Changes

  • feat: improve bridge system and add ktor bridge system #361 by @osoykan in #407
  • feat: introduce stove container base to implement common container operations such as pause or unpause a container @osoykan in #455
    • You can also provide your container override by implementing StoveKafkaContainer, StoveCouchbaseContainer, Stove{Placeholder}Container. For that you can use UseContainerFn that is placed in ContainerOptions while setting the components.
       containerOptions = KafkaContainerOptions(
             useContainerFn = { StoveKafkaContainer(it) } // your container that implements StoveKafkaContainer.
           ),
  • Standalone Kafka Improvements & Ktor Example App uses Standalone Kafka by @osoykan in #409
  • State store by @osoykan in #453
  • feat: introduce stove container base to implement common helpful by @osoykan in #455
  • You can now override the StateStore if you want to customize state capture logic.
     TestSystem {
     this.stateStorage(DefaultStateStorageFactory()) // your state store factory.
    }
     .with {
       kafka { ... // deleted for brevity

Deps

  • fix(deps): update dependency org.wiremock:wiremock-standalone to v3.5.4 by @renovate in #406
  • chore(deps): update gradle/gradle-build-action action to v3.3.2 by @renovate in #408
  • chore(deps): update dependency io.github.gradle-nexus.publish-plugin to v2.0.0 by @renovate in #410
  • fix(deps): update dependency com.couchbase.client:java-client to v3.6.2 by @renovate in #413
  • fix(deps): update dependency com.couchbase.client:metrics-micrometer to v0.6.2 by @renovate in #412
  • fix(deps): update dependency com.couchbase.client:kotlin-client to v1.3.2 by @renovate in #411
  • Update dependency org.mongodb:mongodb-driver-reactivestreams to v5.1.0 by @renovate in #415
  • fix(deps): update dependency co.elastic.clients:elasticsearch-java to v8.13.3 by @renovate in #417
  • chore(deps): update dependency io.spring.dependency-management to v1.1.5 by @renovate in #418
  • fix(deps): update jackson to v2.17.1 by @renovate in #419
  • fix(deps): update kotlin monorepo to v1.9.24 by @renovate in #420
  • fix(deps): update ktor to v2.3.11 by @renovate in #421
  • fix(deps): update kotest to v5.9.0 by @renovate in #424
  • fix(deps): update testcontainers-java monorepo to v1.19.8 - autoclosed by @renovate in #422
  • fix(deps): update dependency co.elastic.clients:elasticsearch-java to v8.13.4 by @renovate in #423
  • fix(deps): update kotlinx to v1.8.1 by @renovate in #425
  • fix(deps): update kotlinx to v1.8.1 by @renovate in #427
  • fix(deps): update dependency co.elastic.clients:elasticsearch-java to v8.13.4 by @renovate in #426
  • fix(deps): update ktor to v2.3.11 by @renovate in #428
  • fix(deps): update testcontainers-java monorepo to v1.19.8 by @renovate in #429
  • fix(deps): update kotest to v5.9.0 by @renovate in #430
  • fix(deps): update dependency io.projectreactor:reactor-core to v3.6.6 by @renovate in #431
  • chore(deps): update plugin ksp to v1.9.24-1.0.20 by @renovate in #433
  • fix(deps): update grpc-java monorepo to v1.64.0 by @renovate in #435
  • chore(deps): update dependency org.jetbrains.kotlinx.kover to v0.8.0 by @renovate in #434
  • fix(deps): update dependency com.squareup.wiregrpcserver:server to v1.0.0-alpha04 by @renovate in #436
  • fix(deps): update dependency com.squareup.wiregrpcserver:server-generator to v1.0.0-alpha04 by @renovate in #437
  • fix(deps): update spring core to v5.3.35 by @renovate in #438
  • fix(deps): update spring core to v6.1.7 by @renovate in #439
  • fix(deps): update dependency org.springframework.kafka:spring-kafka to v3.2.0 by @renovate in #441
  • fix(deps): update dependency io.github.smiley4:ktor-swagger-ui to v2.10.0 by @renovate in #440
  • chore(deps): update plugin ksp to v2 by @renovate in #444
  • chore(deps): update dependency org.jetbrains.kotlin.plugin.spring to v2 by @renovate in #443
  • fix(deps): update spring core by @renovate in #445
  • fix(deps): update dependency org.wiremock:wiremock-standalone to v3.6.0 by @renovate in #446
  • fix(deps): update spring boot to v3.2.6 by @renovate in #447
  • fix(deps): update dependency com.microsoft.sqlserver:mssql-jdbc to v12.6.2.jre11 by @renovate in #450
  • fix(deps): update spring boot to v3.3.0 by @renovate in #449
  • fix(deps): update dependency com.google.protobuf:protobuf-kotlin to v4.27.0 by @renovate in #448
  • fix(deps): update cohort to v2.5.1 by @renovate in #451
  • fix(deps): update dependency it.czerwinski:kotlin-util to v2 by @renovate in #452
  • chore(deps): update dependency gradle to v8.8 by @renovate in #454
  • chore(deps): update quarkus to v3.11.1 by @renovate in #456
  • chore(deps): update plugin gitversioning to v3.1.0 by @renovate in #457
  • chore(deps): update plugin ksp to v2.0.0-1.0.22 by @renovate in #459
  • fix(deps): update dependency co.elastic.clients:elasticsearch-java to v8.14.0 by @renovate in #458
  • fix(deps): update dependency com.google.protobuf:protobuf-kotlin to v4.27.1 by @renovate in #461
  • fix(deps): update kotest to v5.9.1 by @renovate in #460
  • fix(deps): update dependency io.github.smiley4:ktor-swagger-ui to v3 by @renovate in #462

Full Changelog: 0.9.8...0.10.0