Skip to content

Update to 4.0.0-M2 #321

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Apr 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions buildSrc/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
plugins {
id 'groovy-gradle-plugin'
}

repositories {
gradlePluginPortal()
mavenCentral()
}

dependencies {
implementation libs.gradle.micronaut
implementation libs.gradle.kotlin
implementation libs.gradle.kotlin.allopen
implementation libs.gradle.kotlin.noarg
}
10 changes: 10 additions & 0 deletions buildSrc/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
rootProject.name = 'nats-parent'
dependencyResolutionManagement {
dependencyResolutionManagement {
versionCatalogs {
libs {
from(files("../gradle/libs.versions.toml"))
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
plugins {
id 'java'
}

repositories {
mavenCentral()
maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots/" }
}
maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots/" }}

configurations.all {
resolutionStrategy.dependencySubstitution {
substitute(module("org.codehaus.groovy:groovy"))
.using(module("org.apache.groovy:groovy:${libs.versions.groovy.get()}"))
}
dependencies {
testRuntimeOnly mn.logback.classic
}

tasks.withType(GroovyCompile).configureEach {
options.forkOptions.jvmArgs << '-Dspock.iKnowWhatImDoing.disableGroovyVersionCheck=true'
test {
useJUnitPlatform()

jvmArgs '-Duser.country=US'
jvmArgs '-Duser.language=en'
failFast = true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
plugins {
id "io.micronaut.build.internal.nats-base"
id "io.micronaut.application"
id "io.micronaut.test-resources"
}

dependencies {
testImplementation projects.micronautNats

runtimeOnly mn.snakeyaml
testRuntimeOnly mn.snakeyaml
testImplementation mn.reactor
testImplementation libs.awaitility
testImplementation 'io.micronaut.testresources:micronaut-test-resources-client'
}


configurations.all {
resolutionStrategy.dependencySubstitution {
substitute module('io.micronaut.nats:micronaut-nats') using project(':micronaut-nats')
}
}

micronaut {
version libs.versions.micronaut.platform.get()
testRuntime "junit5"
testResources {
clientTimeout = 300
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
plugins {
id 'io.micronaut.build.internal.nats-examples'
id 'org.graalvm.buildtools.native'
}

tasks.named("check") { task ->
def graal = ["jvmci.Compiler", "java.vendor.version", "java.vendor"].any {
System.getProperty(it)?.toLowerCase(Locale.ENGLISH)?.contains("graal")
}
if (graal) {
task.dependsOn("nativeTest")
}
}

This file was deleted.

36 changes: 2 additions & 34 deletions docs-examples/example-groovy/build.gradle
Original file line number Diff line number Diff line change
@@ -1,45 +1,13 @@
plugins {
id "groovy"
id 'io.micronaut.build.internal.nats-tests'
}

repositories {
mavenCentral()
id 'io.micronaut.build.internal.nats-examples'
id 'groovy'
}

dependencies {
testImplementation projects.micronautNats

testCompileOnly mn.micronaut.inject.groovy
testImplementation libs.testcontainers.spock
testImplementation mn.micronaut.inject
testImplementation mn.reactor
testImplementation mnTest.micronaut.test.spock
testRuntimeOnly libs.junit.jupiter.engine
testRuntimeOnly mn.snakeyaml
}

test {
useJUnitPlatform()

jvmArgs '-Duser.country=US'
jvmArgs '-Duser.language=en'
failFast = true
}

tasks.withType(GroovyCompile) {
groovyOptions.forkOptions.jvmArgs.add('-Dgroovy.parameters=true')
}

java {
sourceCompatibility = JavaVersion.toVersion("17")
targetCompatibility = JavaVersion.toVersion("17")
}

test {
useJUnitPlatform()
testLogging {
showStandardStreams = true
exceptionFormat = 'full'
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,32 +1,51 @@
package io.micronaut.nats.docs.consumer.connection

import io.micronaut.nats.AbstractNatsTest

class ConnectionSpec extends AbstractNatsTest {

void "test product client and listener"() {
startContext()

when:
// tag::producer[]
def productClient = applicationContext.getBean(ProductClient)
productClient.send("connection-test".bytes)
// end::producer[]

ProductListener productListener = applicationContext.getBean(ProductListener)

then:
waitFor {
productListener.messageLengths.size() == 1
productListener.messageLengths[0] == "connection-test"
}

cleanup:
// Finding that the context is closing the channel before ack is sent
sleep 200
}

protected Map<String, Object> getConfiguration() {
super.configuration + ["nats.product-cluster.addresses": super.configuration.remove("nats.default.addresses")]
}
}
package io.micronaut.nats.docs.consumer.connection

import io.micronaut.context.annotation.Property
import io.micronaut.test.extensions.spock.annotation.MicronautTest
import io.micronaut.test.support.TestPropertyProvider
import io.micronaut.testresources.client.TestResourcesClientFactory
import jakarta.inject.Inject
import spock.lang.Specification

import static java.util.concurrent.TimeUnit.SECONDS
import static org.awaitility.Awaitility.await

@MicronautTest
@Property(name = "spec.name", value = "ConnectionSpec")
class ConnectionSpec extends Specification implements TestPropertyProvider {
@Inject ProductClient productClient
@Inject ProductListener productListener

void "test product client and listener"() {
when:
// tag::producer[]
productClient.send("connection-test".bytes)
// end::producer[]

then:
await().atMost(10, SECONDS).until {
productListener.messageLengths.size() == 1
productListener.messageLengths[0] == "connection-test"
}

cleanup:
// Finding that the context is closing the channel before ack is sent
sleep 200
}

@Override
Map<String, String> getProperties() {
var client = TestResourcesClientFactory.fromSystemProperties().get()
var natsPort = client.resolve("nats.port", Map.of(), Map.of(
"containers.nats.startup-timeout", "600s",
"containers.nats.image-name", "nats:latest",
"containers.nats.exposed-ports[0].nats.port", 4222,
"containers.nats.exposed-ports", List.of(Map.of("nats.port", 4222)),
"containers.nats.command", "--js",
"containers.nats.wait-strategy.log.regex", ".*Server is ready.*"
))
return natsPort
.map(port -> Map.of("nats.product-cluster.addresses[0]", "nats://localhost:$port"))
.orElse(Collections.emptyMap())
}
}
Original file line number Diff line number Diff line change
@@ -1,28 +1,34 @@
package io.micronaut.nats.docs.consumer.custom.annotation

import io.micronaut.nats.AbstractNatsTest

class SIDSpec extends AbstractNatsTest {

void "test using a custom annotation binder"() {
startContext()

when:
// tag::producer[]
def productClient = applicationContext.getBean(ProductClient)
productClient.send("body".getBytes())
productClient.send("body2".getBytes())
productClient.send("body3".getBytes())
// end::producer[]

ProductListener productListener = applicationContext.getBean(ProductListener)

then:
waitFor {
productListener.messages.size() == 3
}

cleanup:
sleep 200
}
}
package io.micronaut.nats.docs.consumer.custom.annotation

import io.micronaut.context.annotation.Property
import io.micronaut.test.extensions.spock.annotation.MicronautTest
import jakarta.inject.Inject
import spock.lang.Specification

import static java.util.concurrent.TimeUnit.SECONDS
import static org.awaitility.Awaitility.await

@MicronautTest
@Property(name = "spec.name", value = "SIDSpec")
class SIDSpec extends Specification {
@Inject ProductClient productClient
@Inject ProductListener productListener


void "test using a custom annotation binder"() {
when:
// tag::producer[]
productClient.send("body".getBytes())
productClient.send("body2".getBytes())
productClient.send("body3".getBytes())
// end::producer[]

then:
await().atMost(10, SECONDS).until {
productListener.messages.size() == 3
}

cleanup:
sleep 200
}
}
Loading