Skip to content

Commit e388ec1

Browse files
committed
Refactor MemoryAlarms test
It is now more explicit about what it does. Cleaned up also some dead code.
1 parent 6fcf259 commit e388ec1

File tree

1 file changed

+10
-25
lines changed

1 file changed

+10
-25
lines changed

src/test/java/com/rabbitmq/client/test/server/MemoryAlarms.java

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,13 @@
1919
import static org.junit.jupiter.api.Assertions.assertNull;
2020

2121
import java.io.IOException;
22+
import java.time.Duration;
2223
import java.util.concurrent.TimeoutException;
2324

2425
import org.junit.jupiter.api.AfterEach;
2526
import org.junit.jupiter.api.BeforeEach;
2627
import org.junit.jupiter.api.Test;
2728

28-
import com.rabbitmq.client.Channel;
29-
import com.rabbitmq.client.Connection;
3029
import com.rabbitmq.client.QueueingConsumer;
3130
import com.rabbitmq.client.test.BrokerTestCase;
3231
import org.junit.jupiter.api.TestInfo;
@@ -35,34 +34,22 @@ public class MemoryAlarms extends BrokerTestCase {
3534

3635
private static final String Q = "Restart";
3736

38-
private Connection connection2;
39-
private Channel channel2;
37+
private static final Duration HEARTBEAT = Duration.ofSeconds(1);
38+
// Must exceed 2x heartbeat to also verify the connection survives the heartbeat timeout
39+
private static final long DELIVERY_TIMEOUT_MS = HEARTBEAT.multipliedBy(3).plusMillis(100).toMillis();
4040

4141
@BeforeEach
4242
@Override
4343
public void setUp(TestInfo info) throws IOException, TimeoutException {
44-
connectionFactory.setRequestedHeartbeat(1);
44+
connectionFactory.setRequestedHeartbeat((int) HEARTBEAT.getSeconds());
4545
super.setUp(info);
46-
if (connection2 == null) {
47-
connection2 = connectionFactory.newConnection();
48-
}
49-
channel2 = connection2.createChannel();
5046
}
5147

5248
@AfterEach
5349
@Override
5450
public void tearDown(TestInfo info) throws IOException, TimeoutException {
5551
clearAllResourceAlarms();
56-
if (channel2 != null) {
57-
channel2.abort();
58-
channel2 = null;
59-
}
60-
if (connection2 != null) {
61-
connection2.abort(10_000);
62-
connection2 = null;
63-
}
6452
super.tearDown(info);
65-
connectionFactory.setRequestedHeartbeat(0);
6653
}
6754

6855
@Override
@@ -85,19 +72,18 @@ protected void releaseResources() throws IOException {
8572
String consumerTag = channel.basicConsume(Q, true, c);
8673
// publishes after an alarm should not go through
8774
basicPublishVolatile(Q);
88-
// the publish is async, so this is racy. This also tests we don't die
89-
// by heartbeat (3x heartbeat interval + epsilon)
90-
assertNull(c.nextDelivery(3100));
75+
// the publish is async, so this is racy.
76+
// This also tests we don't die by heartbeat
77+
assertNull(c.nextDelivery(DELIVERY_TIMEOUT_MS));
9178
// once the alarm has cleared the publishes should go through
9279
clearResourceAlarm("memory");
93-
assertNotNull(c.nextDelivery(3100));
80+
assertNotNull(c.nextDelivery(DELIVERY_TIMEOUT_MS));
9481
// everything should be back to normal
9582
channel.basicCancel(consumerTag);
9683
basicPublishVolatile(Q);
9784
assertNotNull(basicGet(Q));
9885
}
9986

100-
10187
@Test public void overlappingAlarmsFlowControl() throws IOException, InterruptedException {
10288
QueueingConsumer c = new QueueingConsumer(channel);
10389
String consumerTag = channel.basicConsume(Q, true, c);
@@ -111,12 +97,11 @@ protected void releaseResources() throws IOException {
11197
clearResourceAlarm("memory");
11298
assertNull(c.nextDelivery(100));
11399
clearResourceAlarm("disk");
114-
assertNotNull(c.nextDelivery(3100));
100+
assertNotNull(c.nextDelivery(DELIVERY_TIMEOUT_MS));
115101

116102
channel.basicCancel(consumerTag);
117103
basicPublishVolatile(Q);
118104
assertNotNull(basicGet(Q));
119105
}
120106

121-
122107
}

0 commit comments

Comments
 (0)