mirror of https://github.com/waku-org/js-waku.git
Merge #25
25: Upgrade nim-waku r=D4nte a=D4nte Co-authored-by: Franck Royer <franck@royer.one>
This commit is contained in:
commit
71a324dd3c
2
nim-waku
2
nim-waku
|
@ -1 +1 @@
|
||||||
Subproject commit d1c1a0ca13e3aa2690a6550faca13210e1f46877
|
Subproject commit 5d138f8a2c3f18703cfe6f7497e5d3fba074cdf2
|
|
@ -4,6 +4,7 @@ package waku.v2;
|
||||||
|
|
||||||
message WakuMessageProto {
|
message WakuMessageProto {
|
||||||
optional bytes payload = 1;
|
optional bytes payload = 1;
|
||||||
optional uint32 content_topic = 2;
|
optional string content_topic = 2;
|
||||||
optional uint32 version = 3;
|
optional uint32 version = 3;
|
||||||
|
optional double timestamp = 4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,13 +4,13 @@ import { Reader } from 'protobufjs/minimal';
|
||||||
// Protecting the user from protobuf oddities
|
// Protecting the user from protobuf oddities
|
||||||
import { WakuMessageProto } from '../proto/waku/v2/waku';
|
import { WakuMessageProto } from '../proto/waku/v2/waku';
|
||||||
|
|
||||||
const DEFAULT_CONTENT_TOPIC = 1;
|
const DEFAULT_CONTENT_TOPIC = '/waku/2/default-content/proto';
|
||||||
const DEFAULT_VERSION = 0;
|
const DEFAULT_VERSION = 0;
|
||||||
|
|
||||||
export class WakuMessage {
|
export class WakuMessage {
|
||||||
private constructor(
|
private constructor(
|
||||||
public payload?: Uint8Array,
|
public payload?: Uint8Array,
|
||||||
public contentTopic?: number,
|
public contentTopic?: string,
|
||||||
public version?: number
|
public version?: number
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
|
|
@ -239,77 +239,6 @@ describe('Waku Relay', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Js connects to nim', function () {
|
|
||||||
let waku: Waku;
|
|
||||||
let nimWaku: NimWaku;
|
|
||||||
|
|
||||||
beforeEach(async function () {
|
|
||||||
this.timeout(10_000);
|
|
||||||
waku = await Waku.create({ staticNoiseKey: NOISE_KEY_1 });
|
|
||||||
|
|
||||||
nimWaku = new NimWaku(makeLogFileName(this));
|
|
||||||
await nimWaku.start();
|
|
||||||
|
|
||||||
await waku.dial(await nimWaku.getMultiaddrWithId());
|
|
||||||
|
|
||||||
await new Promise((resolve) =>
|
|
||||||
waku.libp2p.pubsub.once('gossipsub:heartbeat', resolve)
|
|
||||||
);
|
|
||||||
|
|
||||||
await waku.relay.subscribe();
|
|
||||||
|
|
||||||
await new Promise((resolve) =>
|
|
||||||
waku.libp2p.pubsub.once('gossipsub:heartbeat', resolve)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(async function () {
|
|
||||||
nimWaku ? nimWaku.stop() : null;
|
|
||||||
waku ? await waku.stop() : null;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('nim subscribes to js', async function () {
|
|
||||||
const subscribers = waku.libp2p.pubsub.getSubscribers(
|
|
||||||
RelayDefaultTopic
|
|
||||||
);
|
|
||||||
|
|
||||||
const nimPeerId = await nimWaku.getPeerId();
|
|
||||||
expect(subscribers).to.contain(nimPeerId.toB58String());
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Js publishes to nim', async function () {
|
|
||||||
const message = WakuMessage.fromUtf8String('This is a message');
|
|
||||||
|
|
||||||
await waku.relay.publish(message);
|
|
||||||
|
|
||||||
await nimWaku.waitForLog('WakuMessage received');
|
|
||||||
|
|
||||||
const msgs = await nimWaku.messages();
|
|
||||||
|
|
||||||
expect(msgs[0].contentTopic).to.equal(message.contentTopic);
|
|
||||||
expect(msgs[0].version).to.equal(message.version);
|
|
||||||
|
|
||||||
const payload = Buffer.from(msgs[0].payload);
|
|
||||||
expect(Buffer.compare(payload, message.payload!)).to.equal(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Nim publishes to js', async function () {
|
|
||||||
const message = WakuMessage.fromUtf8String('Here is another message.');
|
|
||||||
|
|
||||||
const receivedPromise = waitForNextData(waku.libp2p.pubsub);
|
|
||||||
|
|
||||||
await nimWaku.sendMessage(message);
|
|
||||||
|
|
||||||
const receivedMsg = await receivedPromise;
|
|
||||||
|
|
||||||
expect(receivedMsg.contentTopic).to.eq(message.contentTopic);
|
|
||||||
expect(receivedMsg.version).to.eq(message.version);
|
|
||||||
|
|
||||||
const payload = Buffer.from(receivedMsg.payload!);
|
|
||||||
expect(Buffer.compare(payload, message.payload!)).to.eq(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('js to nim to js', function () {
|
describe('js to nim to js', function () {
|
||||||
let waku1: Waku;
|
let waku1: Waku;
|
||||||
let waku2: Waku;
|
let waku2: Waku;
|
||||||
|
|
|
@ -29,6 +29,17 @@ export interface Args {
|
||||||
rpcAdmin?: boolean;
|
rpcAdmin?: boolean;
|
||||||
nodekey?: string;
|
nodekey?: string;
|
||||||
portsShift?: number;
|
portsShift?: number;
|
||||||
|
logLevel?: LogLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum LogLevel {
|
||||||
|
Error = 'error',
|
||||||
|
Info = 'info',
|
||||||
|
Warn = 'warn',
|
||||||
|
Debug = 'debug',
|
||||||
|
Trace = 'trace',
|
||||||
|
Notice = 'notice',
|
||||||
|
Fatal = 'fatal',
|
||||||
}
|
}
|
||||||
|
|
||||||
export class NimWaku {
|
export class NimWaku {
|
||||||
|
@ -61,7 +72,11 @@ export class NimWaku {
|
||||||
const mergedArgs = defaultArgs();
|
const mergedArgs = defaultArgs();
|
||||||
|
|
||||||
// Object.assign overrides the properties with the source (if there are conflicts)
|
// Object.assign overrides the properties with the source (if there are conflicts)
|
||||||
Object.assign(mergedArgs, { portsShift: this.portsShift }, args);
|
Object.assign(
|
||||||
|
mergedArgs,
|
||||||
|
{ portsShift: this.portsShift, logLevel: LogLevel.Trace },
|
||||||
|
args
|
||||||
|
);
|
||||||
|
|
||||||
const argsArray = argsToArray(mergedArgs);
|
const argsArray = argsToArray(mergedArgs);
|
||||||
this.process = spawn(NIM_WAKU_BIN, argsArray, {
|
this.process = spawn(NIM_WAKU_BIN, argsArray, {
|
||||||
|
|
Loading…
Reference in New Issue