|
44 | 44 | class SamplePulsarApplicationTests {
|
45 | 45 |
|
46 | 46 | @Container
|
47 |
| - static final PulsarContainer PULSAR_CONTAINER = new PulsarContainer(DockerImageNames.pulsar()) |
48 |
| - .withStartupAttempts(2) |
| 47 | + static final PulsarContainer container = new PulsarContainer(DockerImageNames.pulsar()).withStartupAttempts(2) |
49 | 48 | .withStartupTimeout(Duration.ofMinutes(3));
|
50 | 49 |
|
51 | 50 | @DynamicPropertySource
|
52 | 51 | static void pulsarProperties(DynamicPropertyRegistry registry) {
|
53 |
| - registry.add("spring.pulsar.client.service-url", PULSAR_CONTAINER::getPulsarBrokerUrl); |
54 |
| - registry.add("spring.pulsar.admin.service-url", PULSAR_CONTAINER::getHttpServiceUrl); |
| 52 | + registry.add("spring.pulsar.client.service-url", container::getPulsarBrokerUrl); |
| 53 | + registry.add("spring.pulsar.admin.service-url", container::getHttpServiceUrl); |
55 | 54 | }
|
56 | 55 |
|
57 |
| - @Nested |
58 |
| - @SpringBootTest |
59 |
| - @ActiveProfiles("smoketest.pulsar.imperative") |
60 |
| - class ImperativeApp { |
| 56 | + abstract class PulsarApplication { |
| 57 | + |
| 58 | + private final String type; |
| 59 | + |
| 60 | + PulsarApplication(String type) { |
| 61 | + this.type = type; |
| 62 | + } |
61 | 63 |
|
62 | 64 | @Test
|
63 | 65 | void appProducesAndConsumesMessages(CapturedOutput output) {
|
64 | 66 | List<String> expectedOutput = new ArrayList<>();
|
65 | 67 | IntStream.range(0, 10).forEachOrdered((i) -> {
|
66 |
| - expectedOutput.add("++++++PRODUCE IMPERATIVE:(" + i + ")------"); |
67 |
| - expectedOutput.add("++++++CONSUME IMPERATIVE:(" + i + ")------"); |
| 68 | + expectedOutput.add("++++++PRODUCE %s:(%s)------".formatted(this.type, i)); |
| 69 | + expectedOutput.add("++++++CONSUME %s:(%s)------".formatted(this.type, i)); |
68 | 70 | });
|
69 | 71 | Awaitility.waitAtMost(Duration.ofSeconds(30))
|
70 | 72 | .untilAsserted(() -> assertThat(output).contains(expectedOutput));
|
71 | 73 | }
|
72 | 74 |
|
73 | 75 | }
|
74 | 76 |
|
| 77 | + @Nested |
| 78 | + @SpringBootTest |
| 79 | + @ActiveProfiles("smoketest.pulsar.imperative") |
| 80 | + class ImperativePulsarApplication extends PulsarApplication { |
| 81 | + |
| 82 | + ImperativePulsarApplication() { |
| 83 | + super("IMPERATIVE"); |
| 84 | + } |
| 85 | + |
| 86 | + } |
| 87 | + |
75 | 88 | @Nested
|
76 | 89 | @SpringBootTest
|
77 | 90 | @ActiveProfiles("smoketest.pulsar.reactive")
|
78 |
| - class ReactiveApp { |
| 91 | + class ReactivePulsarApplication extends PulsarApplication { |
79 | 92 |
|
80 |
| - @Test |
81 |
| - void appProducesAndConsumesMessagesReactively(CapturedOutput output) { |
82 |
| - List<String> expectedOutput = new ArrayList<>(); |
83 |
| - IntStream.range(0, 10).forEachOrdered((i) -> { |
84 |
| - expectedOutput.add("++++++PRODUCE REACTIVE:(" + i + ")------"); |
85 |
| - expectedOutput.add("++++++CONSUME REACTIVE:(" + i + ")------"); |
86 |
| - }); |
87 |
| - Awaitility.waitAtMost(Duration.ofSeconds(30)) |
88 |
| - .untilAsserted(() -> assertThat(output).contains(expectedOutput)); |
| 93 | + ReactivePulsarApplication() { |
| 94 | + super("REACTIVE"); |
89 | 95 | }
|
90 | 96 |
|
91 | 97 | }
|
|
0 commit comments