Skip to content

Commit 77f07f8

Browse files
committed
confuse at most one frame
since confusing more interferes with the test, e.g. we end up confusing the basic.qos we send for checking on errors
1 parent 504bb4a commit 77f07f8

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

test/src/com/rabbitmq/client/test/functional/UnexpectedFrames.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,23 @@ private interface Confuser {
1919
}
2020

2121
private static class ConfusedFrameHandler extends SocketFrameHandler {
22+
23+
private boolean confusedOnce = false;
24+
2225
public ConfusedFrameHandler(Socket socket) throws IOException {
2326
super(socket);
2427
}
2528

2629
@Override
2730
public void writeFrame(Frame frame) throws IOException {
28-
Frame confusedFrame = confuser.confuse(frame);
29-
if (confusedFrame != null) {
30-
super.writeFrame(confusedFrame);
31+
if (confusedOnce) {
32+
super.writeFrame(frame);
33+
} else {
34+
Frame confusedFrame = confuser.confuse(frame);
35+
if (confusedFrame != frame) confusedOnce = true;
36+
if (confusedFrame != null) {
37+
super.writeFrame(confusedFrame);
38+
}
3139
}
3240
}
3341

@@ -70,7 +78,11 @@ public Frame confuse(Frame frame) {
7078
if (frame.type == AMQP.FRAME_METHOD) {
7179
// We can't just skip the method as that will lead us to
7280
// send 0 bytes and hang waiting for a response.
73-
frame.type = AMQP.FRAME_HEADER;
81+
Frame confusedFrame = new Frame(AMQP.FRAME_HEADER,
82+
frame.channel,
83+
frame.payload);
84+
confusedFrame.accumulator = frame.accumulator;
85+
return confusedFrame;
7486
}
7587
return frame;
7688
}

0 commit comments

Comments
 (0)