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)
return {
entry: glob.sync('./test/**/*.js', { ignore: [] }),
entry: glob.sync('./test/**/*.js', { ignore: ['./test/utils/relay.js'] }),
output: {
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",
"open-cli": "^7.2.0",
"path-browserify": "^1.0.1",
"playwright-test": "^12.3.4",
"rimraf": "^5.0.1",
"standard": "^17.1.0",
"webpack": "^5.88.2",

View File

@ -6,16 +6,18 @@ const isBrowser = () => typeof window !== 'undefined'
const connectIpfsNodes = async (ipfs1, ipfs2, options = {
filter: defaultFilter
}) => {
}) => {
if (isBrowser()) {
ipfs1.libp2p.addEventListener('self:peer:update', async (event) => {
await ipfs2.libp2p.peerStore.patch(ipfs1.libp2p.peerId, { multiaddrs: ipfs1.libp2p.getMultiaddrs().filter(options.filter) })
await ipfs2.libp2p.dial(ipfs1.libp2p.peerId)
if (ipfs1.libp2p.getMultiaddrs().length > 0) {
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 {
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)
}
}

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