test: Relay for web browser testing.

This commit is contained in:
Hayden Young 2023-09-26 03:22:06 +01:00
parent ec8b17352a
commit f28aa476f7
5 changed files with 1311 additions and 13 deletions

View File

@ -10,7 +10,7 @@ export default (env, argv) => {
const __dirname = path.dirname(__filename) const __dirname = path.dirname(__filename)
return { return {
entry: glob.sync('./test/**/*.js', { ignore: [] }), entry: glob.sync('./test/**/*.js', { ignore: ['./test/utils/relay.js'] }),
output: { output: {
filename: '../test/browser/bundle.js' filename: '../test/browser/bundle.js'
}, },

1266
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -41,6 +41,7 @@
"mocha-headless-chrome": "^4.0.0", "mocha-headless-chrome": "^4.0.0",
"open-cli": "^7.2.0", "open-cli": "^7.2.0",
"path-browserify": "^1.0.1", "path-browserify": "^1.0.1",
"playwright-test": "^12.3.4",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"standard": "^17.1.0", "standard": "^17.1.0",
"webpack": "^5.88.2", "webpack": "^5.88.2",

View File

@ -9,13 +9,15 @@ const connectIpfsNodes = async (ipfs1, ipfs2, options = {
}) => { }) => {
if (isBrowser()) { if (isBrowser()) {
ipfs1.libp2p.addEventListener('self:peer:update', async (event) => { ipfs1.libp2p.addEventListener('self:peer:update', async (event) => {
await ipfs2.libp2p.peerStore.patch(ipfs1.libp2p.peerId, { multiaddrs: ipfs1.libp2p.getMultiaddrs().filter(options.filter) }) if (ipfs1.libp2p.getMultiaddrs().length > 0) {
await ipfs2.libp2p.dial(ipfs1.libp2p.peerId) await ipfs2.libp2p.peerStore.save(ipfs1.libp2p.peerId, { multiaddrs: ipfs1.libp2p.getMultiaddrs().filter(options.filter) })
await ipfs2.libp2p.dial(ipfs1.libp2p.peerId)
}
}) })
await ipfs1.libp2p.dial(multiaddr('/ip4/127.0.0.1/tcp/43669/ws/p2p/12D3KooWKwtgL5GTathFbTDunVZKPmD1gTwnDCEPRyf7r8hdqwQw')) await ipfs1.libp2p.dial(multiaddr('/ip4/127.0.0.1/tcp/12345/ws/p2p/16Uiu2HAkuzR9BJ2JHXxzanXUdP5ixbCPduFst2FNWsBsarGfgU1y'))
} else { } else {
await ipfs2.libp2p.peerStore.patch(ipfs1.libp2p.peerId, { multiaddrs: ipfs1.libp2p.getMultiaddrs().filter(options.filter) }) await ipfs2.libp2p.peerStore.save(ipfs1.libp2p.peerId, { multiaddrs: ipfs1.libp2p.getMultiaddrs().filter(options.filter) })
await ipfs2.libp2p.dial(ipfs1.libp2p.peerId) await ipfs2.libp2p.dial(ipfs1.libp2p.peerId)
} }
} }

41
test/utils/relay.js Normal file
View File

@ -0,0 +1,41 @@
import { mplex } from "@libp2p/mplex"
import { createLibp2p } from "libp2p"
import { noise } from "@chainsafe/libp2p-noise"
import { circuitRelayServer } from 'libp2p/circuit-relay'
import { webSockets } from '@libp2p/websockets'
import * as filters from '@libp2p/websockets/filters'
import { identifyService } from 'libp2p/identify'
import testKeysPath from '../fixtures/test-keys-path.js'
import { KeyStore } from '../../src/index.js'
import { createFromPrivKey } from '@libp2p/peer-id-factory'
import * as crypto from '@libp2p/crypto'
const keystore = await KeyStore({ path: testKeysPath })
const keys = await keystore.getKey('userX')
const peerId = await createFromPrivKey(keys)
const server = await createLibp2p({
peerId,
addresses: {
listen: ['/ip4/0.0.0.0/tcp/12345/ws']
},
transports: [
webSockets({
filter: filters.all
}),
],
connectionEncryption: [noise()],
streamMuxers: [mplex()],
services: {
identify: identifyService(),
relay: circuitRelayServer()
}
})
server.addEventListener('peer:disconnect', async event => {
console.log('peer:disconnect', event.detail)
server.peerStore.delete(event.detail)
})
console.log("p2p addr: ", server.getMultiaddrs().map((ma) => ma.toString()))
// generates a deterministic address: /ip4/127.0.0.1/tcp/33519/ws/p2p/16Uiu2HAmAyxRGfndGAHKaLugUNRG6vBZpgNVRv8yJxZMQEY6o9C7