diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a9f31430..c093c64e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -100,6 +100,13 @@ jobs: - uses: actions/checkout@v2 - run: yarn - run: cd examples && yarn && npm run test -- discovery-mechanisms + test-peer-and-content-routing-example: + needs: check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - run: yarn + - run: cd examples && yarn && npm run test -- peer-and-content-routing test-pnet-example: needs: check runs-on: ubuntu-latest diff --git a/examples/peer-and-content-routing/test-1.js b/examples/peer-and-content-routing/test-1.js new file mode 100644 index 00000000..72f3ba70 --- /dev/null +++ b/examples/peer-and-content-routing/test-1.js @@ -0,0 +1,36 @@ +'use strict' + +const path = require('path') +const execa = require('execa') +const pWaitFor = require('p-wait-for') +const uint8ArrayToString = require('uint8arrays/to-string') + +async function test() { + process.stdout.write('1.js\n') + + const addrs = [] + let foundIt = false + 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) + + // Discovered peer + if (!foundIt && line.includes('Found it, multiaddrs are:')) { + foundIt = true + } + + addrs.push(line) + }) + + await pWaitFor(() => addrs.length === 2) + + proc.kill() +} + +module.exports = test diff --git a/examples/peer-and-content-routing/test-2.js b/examples/peer-and-content-routing/test-2.js new file mode 100644 index 00000000..546c3cdd --- /dev/null +++ b/examples/peer-and-content-routing/test-2.js @@ -0,0 +1,40 @@ +'use strict' + +const path = require('path') +const execa = require('execa') +const pDefer = require('p-defer') +const uint8ArrayToString = require('uint8arrays/to-string') + +const providedCopy = 'is providing' +const foundCopy = 'Found provider:' + +async function test() { + process.stdout.write('2.js\n') + const providedDefer = pDefer() + const foundDefer = pDefer() + + const proc = execa('node', [path.join(__dirname, '2.js')], { + cwd: path.resolve(__dirname), + all: true + }) + + proc.all.on('data', async (data) => { + process.stdout.write(data) + + const line = uint8ArrayToString(data) + + if (line.includes(providedCopy)) { + providedDefer.resolve() + } else if (line.includes(foundCopy)) { + foundDefer.resolve() + } + }) + + await Promise.all([ + providedDefer.promise, + foundDefer.promise + ]) + proc.kill() +} + +module.exports = test diff --git a/examples/peer-and-content-routing/test.js b/examples/peer-and-content-routing/test.js new file mode 100644 index 00000000..1ccbda6d --- /dev/null +++ b/examples/peer-and-content-routing/test.js @@ -0,0 +1,11 @@ +'use strict' + +const test1 = require('./test-1') +const test2 = require('./test-2') + +async function test() { + await test1() + await test2() +} + +module.exports = test