Skip to content

Commit 791487f

Browse files
authored
Merge pull request #5 from majusko/feature/increase-test-coverage
Feature/increase test coverage
2 parents 6aec341 + a38b2c6 commit 791487f

File tree

6 files changed

+111
-8
lines changed

6 files changed

+111
-8
lines changed

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
<excludes>
6666
<exclude>**/*Properties.*</exclude>
6767
<exclude>**/*Configuration.*</exclude>
68+
<exclude>**/*Application.*</exclude>
6869
<exclude>**/mock/**/*</exclude>
6970
</excludes>
7071
</configuration>

src/main/java/io/github/majusko/pulsar/producer/ProducerCollector.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.github.majusko.pulsar.annotation.PulsarProducer;
44
import io.github.majusko.pulsar.collector.ProducerHolder;
5+
import io.github.majusko.pulsar.constant.Serialization;
56
import org.apache.pulsar.client.api.Producer;
67
import org.apache.pulsar.client.api.PulsarClient;
78
import org.apache.pulsar.client.api.PulsarClientException;
@@ -44,14 +45,21 @@ public Object postProcessAfterInitialization(Object bean, String beanName) {
4445

4546
private Producer<?> buildProducer(ProducerHolder holder) {
4647
try {
47-
return pulsarClient.newProducer(Schema.JSON(holder.getClazz()))
48+
return pulsarClient.newProducer(getSchema(holder))
4849
.topic(holder.getTopic())
4950
.create();
5051
} catch(PulsarClientException e) {
5152
throw new RuntimeException("TODO Custom Exception!", e);
5253
}
5354
}
5455

56+
private <T> Schema<?> getSchema(ProducerHolder holder) throws RuntimeException {
57+
if (holder.getSerialization().equals(Serialization.JSON)) {
58+
return Schema.JSON(holder.getClazz());
59+
}
60+
throw new RuntimeException("TODO custom runtime exception");
61+
}
62+
5563
Map<String, Producer> getProducers() {
5664
return producers;
5765
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.github.majusko.pulsar;
2+
3+
public class MyMsg2 {
4+
private String data;
5+
public MyMsg2(String data) {
6+
this.data = data;
7+
}
8+
9+
public String getData() {
10+
return data;
11+
}
12+
}
Lines changed: 71 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
package io.github.majusko.pulsar;
22

3+
import io.github.majusko.pulsar.collector.ConsumerCollector;
4+
import io.github.majusko.pulsar.collector.ConsumerHolder;
5+
import io.github.majusko.pulsar.constant.Serialization;
6+
import io.github.majusko.pulsar.consumer.ConsumerBuilder;
7+
import io.github.majusko.pulsar.producer.ProducerFactory;
38
import io.github.majusko.pulsar.producer.PulsarTemplate;
9+
import org.apache.pulsar.client.api.Consumer;
410
import org.apache.pulsar.client.api.PulsarClientException;
11+
import org.apache.pulsar.shade.org.apache.commons.lang3.tuple.ImmutablePair;
12+
import org.junit.Assert;
13+
import org.junit.Before;
514
import org.junit.jupiter.api.Test;
615
import org.junit.runner.RunWith;
716
import org.springframework.beans.factory.annotation.Autowired;
@@ -10,17 +19,73 @@
1019
import org.springframework.test.context.ActiveProfiles;
1120
import org.springframework.test.context.junit4.SpringRunner;
1221

22+
import java.util.HashSet;
23+
import java.util.List;
24+
import java.util.Map;
25+
import java.util.Set;
26+
1327
@RunWith(SpringRunner.class)
1428
@SpringBootTest
1529
@ActiveProfiles("test")
1630
@Import(TestProducerConfiguration.class)
1731
class PulsarJavaSpringBootStarterApplicationTests {
1832

19-
@Autowired
20-
private PulsarTemplate<MyMsg> testProducerConfiguration;
33+
@Autowired
34+
private ConsumerBuilder consumerBuilder;
35+
36+
@Autowired
37+
private ConsumerCollector consumerCollector;
38+
39+
@Autowired
40+
private ProducerFactory producerFactory;
41+
42+
@Autowired
43+
private PulsarTemplate<MyMsg> producer;
44+
45+
@Test
46+
void testProducerSendMethod() throws PulsarClientException {
47+
producer.send("topic-one", new MyMsg("bb"));
48+
}
49+
50+
@Before
51+
public void init() throws InterruptedException {
52+
Thread.sleep(100);
53+
}
54+
55+
@Test
56+
void testConsumerRegistration1() throws Exception {
57+
final List<Consumer> consumers = consumerBuilder.getConsumers();
58+
59+
Assert.assertEquals(1, consumers.size());
60+
61+
final Consumer consumer = consumers.stream().findFirst().orElseThrow(Exception::new);
62+
63+
Assert.assertNotNull(consumer);
64+
Assert.assertEquals("mock-topic", consumer.getTopic());
65+
}
66+
67+
@Test
68+
void testConsumerRegistration2() throws Exception {
69+
final Class<TestConsumerConfiguration> clazz = TestConsumerConfiguration.class;
70+
final String descriptor = clazz.getName() + "#" + clazz.getDeclaredMethods()[0].getName();
71+
final ConsumerHolder consumerHolder = consumerCollector.getConsumer(descriptor).orElseThrow(Exception::new);
72+
73+
Assert.assertNotNull(consumerHolder);
74+
Assert.assertEquals("mock-topic", consumerHolder.getAnnotation().topic());
75+
Assert.assertEquals(TestConsumerConfiguration.class, consumerHolder.getBean().getClass());
76+
Assert.assertEquals("mockTheListener", consumerHolder.getHandler().getName());
77+
}
78+
79+
@Test
80+
void testProducerRegistration() {
81+
82+
final Map<String, ImmutablePair<Class<?>, Serialization>> topics = producerFactory.getTopics();
83+
84+
Assert.assertEquals(2, topics.size());
85+
86+
final Set<String> topicNames = new HashSet<>(topics.keySet());
2187

22-
@Test
23-
void contextLoads() throws PulsarClientException {
24-
testProducerConfiguration.send("aa", new MyMsg("bb"));
25-
}
88+
Assert.assertTrue(topicNames.contains("topic-one"));
89+
Assert.assertTrue(topicNames.contains("topic-two"));
90+
}
2691
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.github.majusko.pulsar;
2+
3+
import io.github.majusko.pulsar.annotation.PulsarConsumer;
4+
import io.github.majusko.pulsar.constant.Serialization;
5+
import org.junit.Assert;
6+
import org.springframework.stereotype.Service;
7+
8+
@Service
9+
public class TestConsumerConfiguration {
10+
11+
@PulsarConsumer(topic = "mock-topic", clazz = MyMsg.class, serialization = Serialization.JSON)
12+
public void mockTheListener(MyMsg myMsg) {
13+
Assert.assertNotNull(myMsg);
14+
}
15+
}

src/test/java/io/github/majusko/pulsar/TestProducerConfiguration.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.majusko.pulsar;
22

3+
import io.github.majusko.pulsar.constant.Serialization;
34
import io.github.majusko.pulsar.producer.ProducerFactory;
45
import org.springframework.context.annotation.Bean;
56
import org.springframework.context.annotation.Configuration;
@@ -10,6 +11,7 @@ public class TestProducerConfiguration {
1011
@Bean
1112
public ProducerFactory producerFactory() {
1213
return new ProducerFactory()
13-
.addProducer("aa", MyMsg.class);
14+
.addProducer("topic-one", MyMsg.class)
15+
.addProducer("topic-two", MyMsg2.class, Serialization.JSON);
1416
}
1517
}

0 commit comments

Comments
 (0)