Skip to content

Commit 2a02f06

Browse files
committed
Back to Netty 4.2.0
Experiencing unexpected disconnections in some tests.
1 parent 238f9ed commit 2a02f06

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<spotless.check.skip>true</spotless.check.skip>
5151
<slf4j.version>1.7.36</slf4j.version>
5252
<logback.version>1.2.13</logback.version>
53-
<netty.version>4.2.1.Final</netty.version>
53+
<netty.version>4.2.0.Final</netty.version>
5454
<proton-j.version>0.34.1</proton-j.version>
5555
<metrics.version>4.2.30</metrics.version>
5656
<micrometer.version>1.14.6</micrometer.version>

src/test/java/com/rabbitmq/stream/impl/StreamProducerTest.java

+63
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import java.util.concurrent.CountDownLatch;
4242
import java.util.concurrent.ExecutorService;
4343
import java.util.concurrent.Executors;
44+
import java.util.concurrent.Semaphore;
4445
import java.util.concurrent.TimeUnit;
4546
import java.util.concurrent.atomic.AtomicBoolean;
4647
import java.util.concurrent.atomic.AtomicInteger;
@@ -57,6 +58,7 @@
5758
import org.junit.jupiter.api.extension.ExtendWith;
5859
import org.junit.jupiter.params.ParameterizedTest;
5960
import org.junit.jupiter.params.provider.ValueSource;
61+
import wiremock.org.checkerframework.checker.units.qual.A;
6062

6163
@ExtendWith(TestUtils.StreamTestInfrastructureExtension.class)
6264
public class StreamProducerTest {
@@ -88,6 +90,67 @@ void tearDown() {
8890
environment.close();
8991
}
9092

93+
private static AtomicLong rate() {
94+
AtomicLong count = new AtomicLong();
95+
AtomicLong tick = new AtomicLong(System.nanoTime());
96+
97+
Executors.newSingleThreadScheduledExecutor()
98+
.scheduleAtFixedRate(
99+
() -> {
100+
long now = System.nanoTime();
101+
long before = tick.getAndSet(now);
102+
long elapsed = now - before;
103+
long sent = count.getAndSet(0);
104+
System.out.println("Rate " + (sent * 1_000_000_000L / elapsed) + " msg/s");
105+
},
106+
1,
107+
1,
108+
TimeUnit.SECONDS);
109+
return count;
110+
}
111+
112+
@Test
113+
void test() {
114+
AtomicLong count = rate();
115+
Producer producer = environment.producerBuilder().stream(stream)
116+
.maxUnconfirmedMessages(10)
117+
.build();
118+
119+
while(true) {
120+
producer.send(producer.messageBuilder().build(), s -> { });
121+
count.incrementAndGet();
122+
}
123+
124+
}
125+
126+
@Test
127+
void client() throws Exception {
128+
int permits = 10;
129+
Semaphore semaphore = new Semaphore(permits);
130+
Client client = cf.get(new Client.ClientParameters().publishConfirmListener(new Client.PublishConfirmListener() {
131+
@Override
132+
public void handle(byte publisherId, long publishingId) {
133+
semaphore.release();
134+
}
135+
}));
136+
137+
byte pubId = (byte) 0;
138+
client.declarePublisher(pubId, null, stream);
139+
140+
AtomicLong count = rate();
141+
142+
List<Message> messages = IntStream.range(0, permits).mapToObj(ignored -> client
143+
.messageBuilder()
144+
.addData("hello".getBytes(StandardCharsets.UTF_8))
145+
.build()).collect(Collectors.toList());
146+
while (true) {
147+
semaphore.acquire(permits);
148+
client.publish(pubId, messages);
149+
count.addAndGet(permits);
150+
}
151+
152+
}
153+
91154
@Test
92155
void send() throws Exception {
93156
int batchSize = 10;

0 commit comments

Comments
 (0)