Skip to content

Commit

Permalink
Make reactive-messaging codestart work
Browse files Browse the repository at this point in the history
  • Loading branch information
ia3andy committed Nov 16, 2021
1 parent e97bdb8 commit aef52ff
Show file tree
Hide file tree
Showing 11 changed files with 96 additions and 93 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{#include readme-header /}

{#each input.selected-extensions-ga}
{#if it.equals("io.quarkus:quarkus-smallrye-reactive-messaging-kafka")}
// TODO : which one to choose ?
[Related Apache Kafka guide section...](https://quarkus.io/guides/kafka)
{#each input.selected-extensions-ga}
{#switch it}
{#case 'io.quarkus:quarkus-smallrye-reactive-messaging-kafka'}
[Related Apache Kafka guide section...](https://quarkus.io/guides/kafka-reactive-getting-started)
{/if}
{#if it.equals("io.quarkus:quarkus-smallrye-reactive-messaging-amqp")}

{#case 'io.quarkus:quarkus-smallrye-reactive-messaging-amqp'}
[Related Apache AMQP 1.0 guide section...](https://quarkus.io/guides/amqp)
{/if}

{/switch}
{/each}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{#each input.selected-extensions-ga}
{#if it.equals("io.quarkus:quarkus-smallrye-reactive-messaging-kafka")}
{#if count == 1 }

{#switch it}
{#case 'io.quarkus:quarkus-smallrye-reactive-messaging-kafka'}
mp:
messaging:
outgoing:
Expand All @@ -18,29 +17,8 @@ mp:
uppercase-in:
connector: smallrye-kafka
topic: uppercase-word
{#else}

#mp:
# messaging:
# outgoing:
# source-out:
# connector: smallrye-kafka
# topic: word
# uppercase-out:
# connector: smallrye-kafka
# topic: uppercase-word
# incoming:
# source-in:
# connector: smallrye-kafka
# topic: word
# uppercase-in:
# connector: smallrye-kafka
# topic: uppercase-word
{/if}
{/if}
{#if it.equals("io.quarkus:quarkus-smallrye-reactive-messaging-mqtt")}
{#if count == 1 }

{#case 'io.quarkus:quarkus-smallrye-reactive-messaging-mqtt'}
mp:
messaging:
outgoing:
Expand All @@ -65,37 +43,8 @@ mp:
host: localhost
port: '1883'
topic: uppercase-word
{#else}

#mp:
# messaging:
# outgoing:
# source-out:
# connector: smallrye-mqtt
# host: localhost
# port: '1883'
# topic: word
# uppercase-out:
# connector: smallrye-mqtt
# host: localhost
# port: '1883'
# topic: uppercase-word
# incoming:
# source-in:
# connector: smallrye-mqtt
# host: localhost
# port: '1883'
# topic: word
# uppercase-in:
# connector: smallrye-mqtt
# host: localhost
# port: '1883'
# topic: uppercase-word
{/if}
{/if}
{#if it.equals("io.quarkus:quarkus-smallrye-reactive-messaging-amqp")}
{#if count == 1 }

{#case 'io.quarkus:quarkus-smallrye-reactive-messaging-amqp'}
mp:
messaging:
outgoing:
Expand All @@ -112,24 +61,6 @@ mp:
uppercase-in:
address: uppercase-word
connector: smallrye-amqp
{#else}

#mp:
# messaging:
# outgoing:
# source-out:
# address: word
# connector: smallrye-amqp
# uppercase-out:
# connector: smallrye-amqp
# address: uppercase-word
# incoming:
# source-in:
# connector: smallrye-amqp
# address: word
# uppercase-in:
# address: uppercase-word
# connector: smallrye-amqp
{/if}
{/if}
{/switch}
{/each}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.acme;

import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
import io.quarkus.test.junit.QuarkusTest;
import io.smallrye.reactive.messaging.connectors.InMemoryConnector;
import io.smallrye.reactive.messaging.connectors.InMemorySink;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Instant;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
Expand Down Expand Up @@ -280,7 +281,8 @@ private AbstractPathAssert<?> checkGeneratedSource(String sourceDir, Language la

private String getTestId() {
String tool = buildTool != null ? buildTool.getKey() + "-" : "";
return tool + String.join("-", codestarts);
String suffix = codestarts.isEmpty() ? String.valueOf(Instant.now().toEpochMilli()) : String.join("-", codestarts);
return tool + suffix;
}

private void generateRealDataProjectIfNeeded(Path path, Language language) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,44 @@
public class ReactiveMessagingCodestartIT {

@RegisterExtension
public static QuarkusCodestartTest codestartTest = QuarkusCodestartTest.builder()
.codestarts("reactive-messaging")
public static QuarkusCodestartTest kafkaCodestartTest = QuarkusCodestartTest.builder()
.extension(ArtifactKey.fromString("io.quarkus:quarkus-smallrye-reactive-messaging-kafka"))
.extension(ArtifactKey.fromString("io.quarkus:quarkus-smallrye-reactive-messaging-amqp"))
.extension(ArtifactKey.fromString("io.quarkus:quarkus-smallrye-reactive-messaging-mqtt"))
.languages(JAVA)
.build();

@RegisterExtension
public static QuarkusCodestartTest amqpCodestartTest = QuarkusCodestartTest.builder()
.extension(ArtifactKey.fromString("io.quarkus:quarkus-smallrye-reactive-messaging-amqp"))
.languages(JAVA)
.build();

@RegisterExtension
public static QuarkusCodestartTest mqttCodestartTest = QuarkusCodestartTest.builder()
.extension(ArtifactKey.fromString("io.quarkus:quarkus-smallrye-reactive-messaging-mqtt"))
.languages(JAVA)
.build();

@Test
void testKafkaContent() throws Throwable {
kafkaCodestartTest.checkGeneratedSource("org.acme.MyReactiveMessagingApplication");
kafkaCodestartTest.assertThatGeneratedFileMatchSnapshot(JAVA, "src/main/resources/application.properties");
kafkaCodestartTest.checkGeneratedTestSource("org.acme.MyReactiveMessagingApplicationTest");
}

@Test
void testMQTTContent() throws Throwable {
mqttCodestartTest.assertThatGeneratedFileMatchSnapshot(JAVA, "src/main/resources/application.properties");
}

@Test
void testContent() throws Throwable {
codestartTest.checkGeneratedSource("org.acme.MyReactiveMessagingApplication");
// TODO : the generated application.properties is empty
codestartTest.assertThatGeneratedFileMatchSnapshot(JAVA, "src/main/resources/application.properties");
// TODO : the test class doesn't work using the inner class InMemoryChannelTestResource
codestartTest.checkGeneratedTestSource("org.acme.MyReactiveMessagingApplicationTest");
void testAMQPContent() throws Throwable {
amqpCodestartTest.assertThatGeneratedFileMatchSnapshot(JAVA, "src/main/resources/application.properties");
}

@Test
void buildAll() throws Throwable {
codestartTest.buildAllProjects();
kafkaCodestartTest.buildAllProjects();
mqttCodestartTest.buildAllProjects();
amqpCodestartTest.buildAllProjects();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
mp.messaging.outgoing.uppercase-out.connector=smallrye-amqp
mp.messaging.outgoing.uppercase-out.address=uppercase-word
mp.messaging.incoming.source-in.connector=smallrye-amqp
mp.messaging.incoming.uppercase-in.address=uppercase-word
mp.messaging.outgoing.source-out.address=word
mp.messaging.incoming.source-in.address=word
mp.messaging.outgoing.source-out.connector=smallrye-amqp
mp.messaging.incoming.uppercase-in.connector=smallrye-amqp
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
mp.messaging.outgoing.uppercase-out.connector=smallrye-kafka
mp.messaging.incoming.source-in.connector=smallrye-kafka
mp.messaging.outgoing.source-out.topic=word
mp.messaging.incoming.source-in.topic=word
mp.messaging.incoming.uppercase-in.topic=uppercase-word
mp.messaging.outgoing.source-out.connector=smallrye-kafka
mp.messaging.outgoing.uppercase-out.topic=uppercase-word
mp.messaging.incoming.uppercase-in.connector=smallrye-kafka
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ilove.quark.us;

import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
import io.quarkus.test.junit.QuarkusTest;
import io.smallrye.reactive.messaging.connectors.InMemoryConnector;
import io.smallrye.reactive.messaging.connectors.InMemorySink;
Expand All @@ -17,6 +18,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;

@QuarkusTest
@QuarkusTestResource(MyReactiveMessagingApplicationTest.InMemoryChannelTestResource.class)
class MyReactiveMessagingApplicationTest {

@Inject
Expand All @@ -38,4 +40,20 @@ void test() {
assertTrue(uppercase.received().stream().anyMatch(message -> message.getPayload().equals("CONNECTORS")));

}

public static class InMemoryChannelTestResource implements QuarkusTestResourceLifecycleManager {

@Override
public Map<String, String> start() {
Map<String, String> env = new HashMap<>();
env.putAll(InMemoryConnector.switchIncomingChannelsToInMemory("source-in"));
env.putAll(InMemoryConnector.switchOutgoingChannelsToInMemory("uppercase-out"));
return env;
}

@Override
public void stop() {
InMemoryConnector.clear();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
mp.messaging.outgoing.source-out.host=localhost
mp.messaging.outgoing.uppercase-out.connector=smallrye-mqtt
mp.messaging.outgoing.source-out.topic=word
mp.messaging.incoming.uppercase-in.host=localhost
mp.messaging.incoming.source-in.topic=word
mp.messaging.incoming.uppercase-in.topic=uppercase-word
mp.messaging.outgoing.uppercase-out.port=1883
mp.messaging.outgoing.uppercase-out.topic=uppercase-word
mp.messaging.incoming.source-in.port=1883
mp.messaging.incoming.uppercase-in.connector=smallrye-mqtt
mp.messaging.incoming.source-in.connector=smallrye-mqtt
mp.messaging.incoming.source-in.host=localhost
mp.messaging.outgoing.uppercase-out.host=localhost
mp.messaging.incoming.uppercase-in.port=1883
mp.messaging.outgoing.source-out.port=1883
mp.messaging.outgoing.source-out.connector=smallrye-mqtt

0 comments on commit aef52ff

Please sign in to comment.