mirror of https://github.com/waku-org/js-waku.git
test: fix for nwaku 24 (#1820)
* bump nwaku to v0.24.0 * fix tests on nwaku 0.24 * fix multiple service node filter sub tests * fix timeout for metadata tests
This commit is contained in:
parent
66824d6daa
commit
dbb51e4c86
|
@ -72,14 +72,14 @@ jobs:
|
|||
uses: ./.github/workflows/test-node.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
nim_wakunode_image: ${{ inputs.nim_wakunode_image || 'wakuorg/nwaku:v0.22.0' }}
|
||||
nim_wakunode_image: ${{ inputs.nim_wakunode_image || 'wakuorg/nwaku:v0.24.0' }}
|
||||
test_type: node
|
||||
allure_reports: true
|
||||
|
||||
node_optional:
|
||||
uses: ./.github/workflows/test-node.yml
|
||||
with:
|
||||
nim_wakunode_image: ${{ inputs.nim_wakunode_image || 'wakuorg/nwaku:v0.22.0' }}
|
||||
nim_wakunode_image: ${{ inputs.nim_wakunode_image || 'wakuorg/nwaku:v0.24.0' }}
|
||||
test_type: node-optional
|
||||
|
||||
node_with_go_waku_master:
|
||||
|
|
|
@ -28,7 +28,7 @@ const WAKU_SERVICE_NODE_PARAMS =
|
|||
const NODE_READY_LOG_LINE = "Node setup complete";
|
||||
|
||||
export const DOCKER_IMAGE_NAME =
|
||||
process.env.WAKUNODE_IMAGE || "wakuorg/nwaku:v0.22.0";
|
||||
process.env.WAKUNODE_IMAGE || "wakuorg/nwaku:v0.24.0";
|
||||
|
||||
const isGoWaku = DOCKER_IMAGE_NAME.includes("go-waku");
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ import { promisify } from "util";
|
|||
|
||||
const execAsync = promisify(exec);
|
||||
|
||||
const WAKUNODE_IMAGE = process.env.WAKUNODE_IMAGE || "wakuorg/nwaku:v0.22.0";
|
||||
const WAKUNODE_IMAGE = process.env.WAKUNODE_IMAGE || "wakuorg/nwaku:v0.24.0";
|
||||
|
||||
async function main() {
|
||||
try {
|
||||
|
|
|
@ -226,7 +226,7 @@ describe("Waku Filter V2: Subscribe: Single Service Node", function () {
|
|||
|
||||
it("Subscribe to 100 topics (new limit) at once and receives messages", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.24.0")) {
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
this.timeout(50000);
|
||||
topicCount = 100;
|
||||
} else {
|
||||
|
@ -262,10 +262,10 @@ describe("Waku Filter V2: Subscribe: Single Service Node", function () {
|
|||
}
|
||||
});
|
||||
|
||||
//TODO: remove test when WAKUNODE_IMAGE is 0.24.0
|
||||
//TODO: remove test when WAKUNODE_IMAGE is 0.25.0
|
||||
it("Subscribe to 30 topics (old limit) at once and receives messages", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.24.0")) {
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
// skipping for new versions where the new limit is 100
|
||||
this.skip();
|
||||
} else {
|
||||
|
@ -303,7 +303,7 @@ describe("Waku Filter V2: Subscribe: Single Service Node", function () {
|
|||
|
||||
it("Error when try to subscribe to more than 101 topics (new limit)", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.24.0")) {
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
topicCount = 101;
|
||||
} else {
|
||||
// skipping for old versions where the limit is 30
|
||||
|
@ -330,10 +330,10 @@ describe("Waku Filter V2: Subscribe: Single Service Node", function () {
|
|||
}
|
||||
});
|
||||
|
||||
//TODO: remove test when WAKUNODE_IMAGE is 0.24.0
|
||||
//TODO: remove test when WAKUNODE_IMAGE is 0.25.0
|
||||
it("Error when try to subscribe to more than 31 topics (old limit)", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.24.0")) {
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
// skipping for new versions where the new limit is 100
|
||||
this.skip();
|
||||
} else {
|
||||
|
|
|
@ -17,6 +17,7 @@ import { expect } from "chai";
|
|||
import {
|
||||
delay,
|
||||
generateTestData,
|
||||
isNwakuAtLeast,
|
||||
ServiceNodesFleet,
|
||||
TEST_STRING
|
||||
} from "../../src/index.js";
|
||||
|
@ -269,11 +270,17 @@ const runTests = (strictCheckNodes: boolean): void => {
|
|||
});
|
||||
});
|
||||
|
||||
it("Subscribe to 30 topics at once and receives messages", async function () {
|
||||
const topicCount = 30;
|
||||
it("Subscribe to 100 topics (new limit) at once and receives messages", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
this.timeout(50000);
|
||||
topicCount = 100;
|
||||
} else {
|
||||
// skipping for old versions where the limit is 30
|
||||
this.skip();
|
||||
}
|
||||
const td = generateTestData(topicCount);
|
||||
|
||||
// Subscribe to all 30 topics.
|
||||
await subscription.subscribe(
|
||||
td.decoders,
|
||||
serviceNodes.messageCollector.callback
|
||||
|
@ -286,35 +293,127 @@ const runTests = (strictCheckNodes: boolean): void => {
|
|||
});
|
||||
}
|
||||
|
||||
// Open issue here: https://github.com/waku-org/js-waku/issues/1790
|
||||
// That's why we use the try catch block
|
||||
try {
|
||||
// Verify that each message was received on the corresponding topic.
|
||||
expect(await serviceNodes.messageCollector.waitForMessages(30)).to.eq(
|
||||
true
|
||||
);
|
||||
expect(
|
||||
await serviceNodes.messageCollector.waitForMessages(topicCount)
|
||||
).to.eq(true);
|
||||
td.contentTopics.forEach((topic, index) => {
|
||||
serviceNodes.messageCollector.verifyReceivedMessage(index, {
|
||||
expectedContentTopic: topic,
|
||||
expectedMessageText: `Message for Topic ${index + 1}`
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn(
|
||||
"This test still fails because of https://github.com/waku-org/js-waku/issues/1790"
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
it("Error when try to subscribe to more than 30 topics", async function () {
|
||||
const topicCount = 31;
|
||||
//TODO: remove test when WAKUNODE_IMAGE is 0.25.0
|
||||
it("Subscribe to 30 topics (old limit) at once and receives messages", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
// skipping for new versions where the new limit is 100
|
||||
this.skip();
|
||||
} else {
|
||||
topicCount = 30;
|
||||
}
|
||||
|
||||
const td = generateTestData(topicCount);
|
||||
|
||||
await subscription.subscribe(
|
||||
td.decoders,
|
||||
serviceNodes.messageCollector.callback
|
||||
);
|
||||
|
||||
// Send a unique message on each topic.
|
||||
for (let i = 0; i < topicCount; i++) {
|
||||
await waku.lightPush.send(td.encoders[i], {
|
||||
payload: utf8ToBytes(`Message for Topic ${i + 1}`)
|
||||
});
|
||||
}
|
||||
|
||||
// Open issue here: https://github.com/waku-org/js-waku/issues/1790
|
||||
// That's why we use the try catch block
|
||||
try {
|
||||
// Verify that each message was received on the corresponding topic.
|
||||
expect(
|
||||
await serviceNodes.messageCollector.waitForMessages(topicCount)
|
||||
).to.eq(true);
|
||||
td.contentTopics.forEach((topic, index) => {
|
||||
serviceNodes.messageCollector.verifyReceivedMessage(index, {
|
||||
expectedContentTopic: topic,
|
||||
expectedMessageText: `Message for Topic ${index + 1}`
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
console.warn(
|
||||
"This test still fails because of https://github.com/waku-org/js-waku/issues/1790"
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
it("Error when try to subscribe to more than 101 topics (new limit)", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
topicCount = 101;
|
||||
} else {
|
||||
// skipping for old versions where the limit is 30
|
||||
this.skip();
|
||||
}
|
||||
const td = generateTestData(topicCount);
|
||||
|
||||
// Attempt to subscribe to 31 topics
|
||||
try {
|
||||
await subscription.subscribe(
|
||||
td.decoders,
|
||||
serviceNodes.messageCollector.callback
|
||||
);
|
||||
throw new Error(
|
||||
"Subscribe to 31 topics was successful but was expected to fail with a specific error."
|
||||
`Subscribe to ${topicCount} topics was successful but was expected to fail with a specific error.`
|
||||
);
|
||||
} catch (err) {
|
||||
if (
|
||||
err instanceof Error &&
|
||||
err.message.includes("exceeds maximum content topics: 30")
|
||||
err.message.includes(
|
||||
`exceeds maximum content topics: ${topicCount - 1}`
|
||||
)
|
||||
) {
|
||||
return;
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//TODO: remove test when WAKUNODE_IMAGE is 0.25.0
|
||||
it("Error when try to subscribe to more than 31 topics (old limit)", async function () {
|
||||
let topicCount: number;
|
||||
if (isNwakuAtLeast("0.25.0")) {
|
||||
// skipping for new versions where the new limit is 100
|
||||
this.skip();
|
||||
} else {
|
||||
topicCount = 31;
|
||||
}
|
||||
const td = generateTestData(topicCount);
|
||||
|
||||
try {
|
||||
await subscription.subscribe(
|
||||
td.decoders,
|
||||
serviceNodes.messageCollector.callback
|
||||
);
|
||||
throw new Error(
|
||||
`Subscribe to ${topicCount} topics was successful but was expected to fail with a specific error.`
|
||||
);
|
||||
} catch (err) {
|
||||
if (
|
||||
err instanceof Error &&
|
||||
err.message.includes(
|
||||
`exceeds maximum content topics: ${topicCount - 1}`
|
||||
)
|
||||
) {
|
||||
return;
|
||||
} else {
|
||||
|
|
|
@ -342,9 +342,7 @@ describe("Waku Light Push (named sharding): Multiple PubsubTopics", function ()
|
|||
let nwaku2: ServiceNode;
|
||||
let messageCollector: MessageCollector;
|
||||
|
||||
// When using lightpush, we have to use a cluster id of 1 because that is the default cluster id for autosharding
|
||||
// With a different cluster id, we never find a viable peer
|
||||
const clusterId = 1;
|
||||
const clusterId = 0;
|
||||
const customContentTopic1 = "/waku/2/content/utf8";
|
||||
const customContentTopic2 = "/myapp/1/latest/proto";
|
||||
const autoshardingPubsubTopic1 = contentTopicToPubsubTopic(
|
||||
|
|
|
@ -15,11 +15,13 @@ import {
|
|||
|
||||
chai.use(chaiAsPromised);
|
||||
|
||||
describe("Metadata Protocol", () => {
|
||||
describe("Metadata Protocol", function () {
|
||||
this.timeout(55000);
|
||||
let waku: LightNode;
|
||||
let nwaku1: ServiceNode;
|
||||
|
||||
beforeEach(function () {
|
||||
this.timeout(15000);
|
||||
nwaku1 = new ServiceNode(makeLogFileName(this) + "1");
|
||||
});
|
||||
|
||||
|
@ -30,8 +32,6 @@ describe("Metadata Protocol", () => {
|
|||
|
||||
describe("connections", function () {
|
||||
it("same cluster, same shard: nodes connect", async function () {
|
||||
this.timeout(55_000);
|
||||
|
||||
const shardInfo: ShardInfo = {
|
||||
clusterId: 1,
|
||||
shards: [1]
|
||||
|
@ -63,8 +63,6 @@ describe("Metadata Protocol", () => {
|
|||
});
|
||||
|
||||
it("same cluster, different shard: nodes connect", async function () {
|
||||
this.timeout(55_000);
|
||||
|
||||
const shardInfo1: ShardInfo = {
|
||||
clusterId: 1,
|
||||
shards: [1]
|
||||
|
@ -101,8 +99,6 @@ describe("Metadata Protocol", () => {
|
|||
});
|
||||
|
||||
it("different cluster, same shard: nodes don't connect", async function () {
|
||||
this.timeout(55_000);
|
||||
|
||||
const shardInfo1: ShardInfo = {
|
||||
clusterId: 1,
|
||||
shards: [1]
|
||||
|
@ -135,8 +131,6 @@ describe("Metadata Protocol", () => {
|
|||
});
|
||||
|
||||
it("different cluster, different shard: nodes don't connect", async function () {
|
||||
this.timeout(55_000);
|
||||
|
||||
const shardInfo1: ShardInfo = {
|
||||
clusterId: 1,
|
||||
shards: [1]
|
||||
|
|
Loading…
Reference in New Issue