Skip to content

Commit 14524c0

Browse files
committed
feat: test ws/noise/tls
Expand matrix of tested transports/encrypters. This added webrtc-direct initially too but it's very unreliable so it will happen in a follow up.
1 parent 5a2f399 commit 14524c0

File tree

14 files changed

+9369
-44641
lines changed

14 files changed

+9369
-44641
lines changed

perf/impl/js-libp2p/v1.0/index.js

Lines changed: 59 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { noise } from '@chainsafe/libp2p-noise'
33
import { yamux } from '@chainsafe/libp2p-yamux'
44
import { perf } from '@libp2p/perf'
55
import { tcp } from '@libp2p/tcp'
6-
import { multiaddr } from '@multiformats/multiaddr'
6+
import { webSockets } from '@libp2p/websockets'
7+
import { multiaddr, fromStringTuples } from '@multiformats/multiaddr'
78
import { createLibp2p } from 'libp2p'
89

910
const argv = parseArgs({
@@ -15,10 +16,17 @@ const argv = parseArgs({
1516
'server-address': {
1617
type: 'string'
1718
},
19+
'server-multiaddr': {
20+
type: 'string'
21+
},
1822
transport: {
1923
type: 'string',
2024
default: 'tcp'
2125
},
26+
encryption: {
27+
type: 'string',
28+
default: 'noise'
29+
},
2230
'upload-bytes': {
2331
type: 'string',
2432
default: '0'
@@ -32,49 +40,79 @@ const argv = parseArgs({
3240

3341
/**
3442
* @param {boolean} runServer
35-
* @param {string} serverIpAddress
43+
* @param {string} serverPublicSocketAddress
44+
* @param {string} serverMultiaddr
3645
* @param {string} transport
46+
* @param {string} encryption
3747
* @param {number} uploadBytes
3848
* @param {number} downloadBytes
3949
*/
40-
export async function main (runServer, serverIpAddress, transport, uploadBytes, downloadBytes) {
41-
const { host, port } = splitHostPort(serverIpAddress)
50+
export async function main (runServer, serverPublicSocketAddress, serverMultiaddr, transport, encryption, uploadBytes, downloadBytes) {
51+
const { host, port } = splitHostPort(serverPublicSocketAddress)
4252

4353
const config = {
44-
transports: [
45-
tcp()
46-
],
54+
addresses: {},
55+
transports: [],
4756
streamMuxers: [
4857
yamux()
4958
],
5059
connectionEncryption: [
5160
noise()
5261
],
53-
connectionManager: {
54-
minConnections: 0
55-
},
5662
services: {
5763
perf: perf()
5864
}
5965
}
6066

67+
if (transport === 'tcp') {
68+
config.transports = [
69+
tcp()
70+
]
71+
} else if (transport === 'ws') {
72+
config.transports = [
73+
webSockets()
74+
]
75+
}
76+
6177
if (runServer) {
62-
Object.assign(config, {
63-
addresses: {
64-
listen: [
65-
// #TODO: right now we only support tcp
66-
`/ip4/${host}/tcp/${port}`
67-
]
68-
}
69-
})
78+
if (transport === 'tcp') {
79+
config.addresses.listen = [
80+
`/ip4/${host}/tcp/${port}`
81+
]
82+
} else if (transport === 'ws') {
83+
config.addresses.listen = [
84+
`/ip4/${host}/tcp/${port}/ws`
85+
]
86+
}
7087
}
7188

7289
const node = await createLibp2p(config)
7390

7491
await node.start()
7592

76-
if (!runServer) {
77-
for await (const output of node.services.perf.measurePerformance(multiaddr(`/ip4/${host}/tcp/${port}`), uploadBytes, downloadBytes)) {
93+
if (runServer) {
94+
// print our multiaddr (may have certhashes in it)
95+
console.error(node.getMultiaddrs()[0].toString())
96+
} else {
97+
// replace server host/port with values from public address
98+
const privateMa = multiaddr(serverMultiaddr)
99+
const tuples = privateMa.stringTuples()
100+
101+
for (let i = 0; i < tuples.length; i++) {
102+
// ipv4
103+
if (tuples[i][0] === 4) {
104+
tuples[i][1] = host
105+
}
106+
107+
// udp
108+
if (tuples[i][0] === 6 || tuples[i][0] === 273) {
109+
tuples[i][1] = port
110+
}
111+
}
112+
113+
const serverMa = fromStringTuples(tuples)
114+
115+
for await (const output of node.services.perf.measurePerformance(serverMa, uploadBytes, downloadBytes)) {
78116
// eslint-disable-next-line no-console
79117
console.log(JSON.stringify(output))
80118
}
@@ -101,7 +139,7 @@ function splitHostPort (address) {
101139
}
102140
}
103141

104-
main(argv.values['run-server'] === 'true', argv.values['server-address'], argv.values.transport, Number(argv.values['upload-bytes']), Number(argv.values['download-bytes'])).catch((err) => {
142+
main(argv.values['run-server'] === 'true', argv.values['server-address'], argv.values['server-multiaddr'], argv.values.transport, argv.values.encryption, Number(argv.values['upload-bytes']), Number(argv.values['download-bytes'])).catch((err) => {
105143
// eslint-disable-next-line no-console
106144
console.error(err)
107145
process.exit(1)

0 commit comments

Comments
 (0)