Compare commits

..

2 Commits

Author SHA1 Message Date
Jacob Heun
5299995998 chore: release version v0.28.0 2020-06-05 15:32:03 +02:00
Jacob Heun
64a66f08ac chore: update contributors 2020-06-05 15:32:03 +02:00
4 changed files with 6 additions and 330 deletions

View File

@@ -1,3 +1,8 @@
<a name="0.28.0"></a>
# [0.28.0](https://github.com/libp2p/js-libp2p/compare/v0.28.0-rc.0...v0.28.0) (2020-06-05)
<a name="0.28.0-rc.0"></a>
# [0.28.0-rc.0](https://github.com/libp2p/js-libp2p/compare/v0.27.8...v0.28.0-rc.0) (2020-05-28)

View File

@@ -1,6 +1,6 @@
{
"name": "libp2p",
"version": "0.28.0-rc.0",
"version": "0.28.0",
"description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
"leadMaintainer": "Jacob Heun <jacobheun@gmail.com>",
"main": "src/index.js",

View File

@@ -1,167 +0,0 @@
'use strict'
/* eslint-env mocha */
const chai = require('chai')
chai.use(require('dirty-chai'))
const pWaitFor = require('p-wait-for')
const { createPeerId } = require('./utils/creators/peer')
const Libp2p = require('../src')
const Transport = require('libp2p-tcp')
const Muxer = require('libp2p-mplex')
const Crypto = require('libp2p-secio')
const MulticastDNS = require('libp2p-mdns')
const multiaddr = require('multiaddr')
const { MemoryDatastore } = require('interface-datastore')
describe.only('benchmark', function () {
this.timeout(30e3)
let nodes
const create = async (config = {}) => {
const peerIds = await createPeerId({ number: 5 })
nodes = await Promise.all(peerIds.map((peerId) => Libp2p.create({
peerId,
config: {
relay: {
enabled: true,
hop: {
enabled: false
}
}
},
modules: {
transport: [Transport],
streamMuxer: [Muxer],
connEncryption: [Crypto],
peerDiscovery: [MulticastDNS]
},
config: {
peerDiscovery: {
autoDial: true, // Auto connect to discovered peers (limited by ConnectionManager minPeers)
// The `tag` property will be searched when creating the instance of your Peer Discovery service.
// The associated object, will be passed to the service when it is instantiated.
[MulticastDNS.tag]: {
interval: 1000,
enabled: true
}
// .. other discovery module options.
}
},
addresses: {
listen: [multiaddr('/ip4/127.0.0.1/tcp/0')]
},
...config
})))
nodes[1].connectionManager.on('peer:connected', () => {
console.log('connected')
})
await Promise.all(nodes.map((node) => node.start()))
}
const clearStore = (node) => {
node.peerStore.addressBook.data.clear()
node.peerStore.protoBook.data.clear()
node.peerStore.keyBook.data.clear()
node.peerStore.metadataBook.data.clear()
}
const test = async () => {
await nodes[4].start()
const start = Date.now()
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= nodes.length - 1 &&
nodes[1].connectionManager.connections.size >= nodes.length - 1 &&
nodes[2].connectionManager.connections.size >= nodes.length - 1 &&
nodes[3].connectionManager.connections.size >= nodes.length - 1 &&
nodes[4].connectionManager.connections.size >= nodes.length - 1
)
return Date.now() - start
}
afterEach(() => Promise.all(nodes.map((node) => node.stop())))
it('run without persistence', async () => {
await create({
datastore: new MemoryDatastore(),
peerStore: {
persistence: false,
threshold: 5
}
})
// wait all peers connected
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= nodes.length - 1 &&
nodes[1].connectionManager.connections.size >= nodes.length - 1 &&
nodes[2].connectionManager.connections.size >= nodes.length - 1 &&
nodes[3].connectionManager.connections.size >= nodes.length - 1 &&
nodes[4].connectionManager.connections.size >= nodes.length - 1
)
console.log('all peers connected')
await nodes[4].stop()
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= nodes.length - 2 &&
nodes[1].connectionManager.connections.size >= nodes.length - 2 &&
nodes[2].connectionManager.connections.size >= nodes.length - 2 &&
nodes[3].connectionManager.connections.size >= nodes.length - 2
)
clearStore(nodes[4])
console.log('peers disconnected 1')
const dur = await test()
console.log('all peers connected', dur)
})
it('run with persistence', async () => {
await create({
datastore: new MemoryDatastore(),
peerStore: {
persistence: true,
threshold: 5
}
})
// wait all peers connected
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= 4 &&
nodes[1].connectionManager.connections.size >= 4 &&
nodes[2].connectionManager.connections.size >= 4 &&
nodes[3].connectionManager.connections.size >= 4 &&
nodes[4].connectionManager.connections.size >= 4
)
console.log('all peers connected')
await nodes[4].stop()
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= 3 &&
nodes[1].connectionManager.connections.size >= 3 &&
nodes[2].connectionManager.connections.size >= 3 &&
nodes[3].connectionManager.connections.size >= 3
)
clearStore(nodes[4])
console.log('peers disconnected 1')
const dur = await test()
console.log('all peers connected', dur)
})
})

View File

@@ -1,162 +0,0 @@
'use strict'
/* eslint-env mocha */
const chai = require('chai')
chai.use(require('dirty-chai'))
const pWaitFor = require('p-wait-for')
const { isNode } = require('ipfs-utils/src/env')
const { createPeerId } = require('./utils/creators/peer')
const Libp2p = require('../src')
const Transport = require('libp2p-webrtc-star')
const Muxer = require('libp2p-mplex')
const Crypto = require('libp2p-secio')
const multiaddr = require('multiaddr')
const { MemoryDatastore } = require('interface-datastore')
const signallerAddr = '/ip4/127.0.0.1/tcp/15555/ws/p2p-webrtc-star'
describe.only('benchmark', function () {
this.timeout(30e3)
let nodes
if (isNode) {
return
}
const create = async (config = {}) => {
const peerIds = await createPeerId({ number: 5 })
nodes = await Promise.all(peerIds.map((peerId) => Libp2p.create({
peerId,
config: {
relay: {
enabled: true,
hop: {
enabled: false
}
}
},
modules: {
transport: [Transport],
streamMuxer: [Muxer],
connEncryption: [Crypto]
},
addresses: {
listen: [multiaddr(`${signallerAddr}/p2p/${peerId.toB58String()}`)]
},
...config
})))
nodes[1].connectionManager.on('peer:connected', () => {
console.log('connected')
})
await Promise.all(nodes.map((node) => node.start()))
}
const clearStore = (node) => {
node.peerStore.addressBook.data.clear()
node.peerStore.protoBook.data.clear()
node.peerStore.keyBook.data.clear()
node.peerStore.metadataBook.data.clear()
}
const test = async () => {
const start = new Date()
await nodes[4].start()
console.log('node start time', Date.now() - start)
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= nodes.length - 1 &&
nodes[1].connectionManager.connections.size >= nodes.length - 1 &&
nodes[2].connectionManager.connections.size >= nodes.length - 1 &&
nodes[3].connectionManager.connections.size >= nodes.length - 1 &&
nodes[4].connectionManager.connections.size >= nodes.length - 1
)
}
afterEach(() => Promise.all(nodes.map((node) => node.stop())))
it('run without persistence', async () => {
const start = Date.now()
await create({
datastore: new MemoryDatastore(),
peerStore: {
persistence: false,
threshold: 5
}
})
// wait all peers connected
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= nodes.length - 1 &&
nodes[1].connectionManager.connections.size >= nodes.length - 1 &&
nodes[2].connectionManager.connections.size >= nodes.length - 1 &&
nodes[3].connectionManager.connections.size >= nodes.length - 1 &&
nodes[4].connectionManager.connections.size >= nodes.length - 1
)
console.log('all peers connected')
await nodes[4].stop()
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= nodes.length - 2 &&
nodes[1].connectionManager.connections.size >= nodes.length - 2 &&
nodes[2].connectionManager.connections.size >= nodes.length - 2 &&
nodes[3].connectionManager.connections.size >= nodes.length - 2
)
clearStore(nodes[4])
console.log('peers disconnected 1')
await test()
console.log('all peers connected', Date.now() - start)
})
it.only('run with persistence', async () => {
const start = Date.now()
await create({
datastore: new MemoryDatastore(),
peerStore: {
persistence: true,
threshold: 5
}
})
// wait all peers connected
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= 4 &&
nodes[1].connectionManager.connections.size >= 4 &&
nodes[2].connectionManager.connections.size >= 4 &&
nodes[3].connectionManager.connections.size >= 4 &&
nodes[4].connectionManager.connections.size >= 4
)
console.log('all peers connected')
await nodes[4].stop()
await pWaitFor(() =>
nodes[0].connectionManager.connections.size >= 3 &&
nodes[1].connectionManager.connections.size >= 3 &&
nodes[2].connectionManager.connections.size >= 3 &&
nodes[3].connectionManager.connections.size >= 3
)
clearStore(nodes[4])
console.log('peers disconnected 1')
await test()
console.log('all peers connected', Date.now() - start)
})
})