Skip to content

Commit

Permalink
Merge pull request #1940 from ably/rar-656
Browse files Browse the repository at this point in the history
test/realtime/message: reduce subscribes to filtered channel flakes
  • Loading branch information
Zariel authored Jan 27, 2025
2 parents f8047f6 + 2f1c99d commit 31d6f2e
Showing 1 changed file with 35 additions and 28 deletions.
63 changes: 35 additions & 28 deletions test/realtime/message.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -1439,36 +1439,43 @@ define(['ably', 'shared_helper', 'async', 'chai'], function (Ably, Helper, async

// Subscription to check all messages were received as expected
rtUnfilteredChannel.subscribe('end', function (msg) {
try {
expect(msg.data).to.equal(testData[testData.length - 1].data, 'Unexpected msg data received');

// Check that we receive expected messages on filtered channel
expect(filteredMessages.length).to.equal(2, 'Expect only two filtered message to be received');
expect(filteredMessages[0].data).to.equal(testData[0].data, 'Unexpected data received');
expect(filteredMessages[1].data).to.equal(testData[2].data, 'Unexpected data received');
expect(filteredMessages[0].extras.headers.name).to.equal(
testData[0].extras.headers.name,
'Unexpected header value received',
);
expect(filteredMessages[1].extras.headers.name).to.equal(
testData[2].extras.headers.name,
'Unexpected header value received',
);
// Check that message with header that doesn't meet filtering condition is not received.
for (msg of filteredMessages) {
expect(msg.extras.headers.number).to.equal(26095, 'Unexpected header filtering value received');
}
// Ensure all pending I/O operations complete and messages are processed
// before running assertions to avoid race conditions
//
// Using setTimeout with 0 timeout as setImmediate is not available
// in browsers.
setTimeout(() => {
try {
expect(msg.data).to.equal(testData[testData.length - 1].data, 'Unexpected msg data received');

// Check that we receive expected messages on filtered channel
expect(filteredMessages.length).to.equal(2, 'Expect only two filtered message to be received');
expect(filteredMessages[0].data).to.equal(testData[0].data, 'Unexpected data received');
expect(filteredMessages[1].data).to.equal(testData[2].data, 'Unexpected data received');
expect(filteredMessages[0].extras.headers.name).to.equal(
testData[0].extras.headers.name,
'Unexpected header value received',
);
expect(filteredMessages[1].extras.headers.name).to.equal(
testData[2].extras.headers.name,
'Unexpected header value received',
);
// Check that message with header that doesn't meet filtering condition is not received.
for (msg of filteredMessages) {
expect(msg.extras.headers.number).to.equal(26095, 'Unexpected header filtering value received');
}

// Check that we receive expected messages on unfiltered channel, including the `end` event message
expect(unFilteredMessages.length).to.equal(6, 'Expect only 6 unfiltered message to be received');
for (var i = 0; i < unFilteredMessages.length; i++) {
expect(unFilteredMessages[i].data).to.equal(testData[i].data, 'Unexpected data received');
// Check that we receive expected messages on unfiltered channel, including the `end` event message
expect(unFilteredMessages.length).to.equal(6, 'Expect only 6 unfiltered message to be received');
for (var i = 0; i < unFilteredMessages.length; i++) {
expect(unFilteredMessages[i].data).to.equal(testData[i].data, 'Unexpected data received');
}
} catch (err) {
helper.closeAndFinish(done, realtime, err);
return;
}
} catch (err) {
helper.closeAndFinish(done, realtime, err);
return;
}
helper.closeAndFinish(done, realtime);
helper.closeAndFinish(done, realtime);
}, 0);
});
var restChannel = rest.channels.get('chan');
restChannel.publish(testData);
Expand Down

0 comments on commit 31d6f2e

Please sign in to comment.