mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-04-25 10:32:14 +00:00
chore: add pubsub example tests (#850)
This commit is contained in:
parent
b1079474de
commit
f6a4cad827
7
.github/workflows/main.yml
vendored
7
.github/workflows/main.yml
vendored
@ -121,3 +121,10 @@ jobs:
|
|||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- run: yarn
|
- run: yarn
|
||||||
- run: cd examples && yarn && npm run test -- protocol-and-stream-muxing
|
- run: cd examples && yarn && npm run test -- protocol-and-stream-muxing
|
||||||
|
test-pubsub-example:
|
||||||
|
needs: check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- run: yarn
|
||||||
|
- run: cd examples && yarn && npm run test -- pubsub
|
||||||
|
67
examples/pubsub/message-filtering/test.js
Normal file
67
examples/pubsub/message-filtering/test.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const path = require('path')
|
||||||
|
const execa = require('execa')
|
||||||
|
const pDefer = require('p-defer')
|
||||||
|
const uint8ArrayToString = require('uint8arrays/to-string')
|
||||||
|
|
||||||
|
const stdout = [
|
||||||
|
{
|
||||||
|
topic: 'banana',
|
||||||
|
messageCount: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
topic: 'apple',
|
||||||
|
messageCount: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
topic: 'car',
|
||||||
|
messageCount: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
topic: 'orange',
|
||||||
|
messageCount: 2
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
async function test () {
|
||||||
|
const defer = pDefer()
|
||||||
|
let topicCount = 0
|
||||||
|
let topicMessageCount = 0
|
||||||
|
|
||||||
|
process.stdout.write('message-filtering/1.js\n')
|
||||||
|
|
||||||
|
const proc = execa('node', [path.join(__dirname, '1.js')], {
|
||||||
|
cwd: path.resolve(__dirname),
|
||||||
|
all: true
|
||||||
|
})
|
||||||
|
|
||||||
|
proc.all.on('data', async (data) => {
|
||||||
|
// End
|
||||||
|
if (topicCount === stdout.length) {
|
||||||
|
defer.resolve()
|
||||||
|
proc.all.removeAllListeners('data')
|
||||||
|
}
|
||||||
|
|
||||||
|
process.stdout.write(data)
|
||||||
|
const line = uint8ArrayToString(data)
|
||||||
|
|
||||||
|
if (stdout[topicCount] && line.includes(stdout[topicCount].topic)) {
|
||||||
|
// Validate previous number of messages
|
||||||
|
if (topicCount > 0 && topicMessageCount > stdout[topicCount - 1].messageCount) {
|
||||||
|
defer.reject()
|
||||||
|
throw new Error(`topic ${stdout[topicCount - 1].topic} had ${topicMessageCount} messages instead of ${stdout[topicCount - 1].messageCount}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
topicCount++
|
||||||
|
topicMessageCount = 0
|
||||||
|
} else {
|
||||||
|
topicMessageCount++
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
await defer.promise
|
||||||
|
proc.kill()
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = test
|
30
examples/pubsub/test-1.js
Normal file
30
examples/pubsub/test-1.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const path = require('path')
|
||||||
|
const execa = require('execa')
|
||||||
|
const pDefer = require('p-defer')
|
||||||
|
const uint8ArrayToString = require('uint8arrays/to-string')
|
||||||
|
|
||||||
|
async function test () {
|
||||||
|
const defer = pDefer()
|
||||||
|
process.stdout.write('1.js\n')
|
||||||
|
|
||||||
|
const proc = execa('node', [path.join(__dirname, '1.js')], {
|
||||||
|
cwd: path.resolve(__dirname),
|
||||||
|
all: true
|
||||||
|
})
|
||||||
|
|
||||||
|
proc.all.on('data', async (data) => {
|
||||||
|
process.stdout.write(data)
|
||||||
|
const line = uint8ArrayToString(data)
|
||||||
|
|
||||||
|
if (line.includes('node1 received: Bird bird bird, bird is the word!')) {
|
||||||
|
defer.resolve()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
await defer.promise
|
||||||
|
proc.kill()
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = test
|
11
examples/pubsub/test.js
Normal file
11
examples/pubsub/test.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
const test1 = require('./test-1')
|
||||||
|
const testMessageFiltering = require('./message-filtering/test')
|
||||||
|
|
||||||
|
async function test() {
|
||||||
|
await test1()
|
||||||
|
await testMessageFiltering()
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = test
|
Loading…
x
Reference in New Issue
Block a user