mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-04-25 10:32:14 +00:00
fix(identify): make agentversion dynamic and add it to the peerstore (#724)
This commit is contained in:
parent
a331b84f13
commit
726a746479
@ -1,6 +1,8 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
const libp2pVersion = require('../../package.json').version
|
||||||
|
|
||||||
module.exports.PROTOCOL_VERSION = 'ipfs/0.1.0'
|
module.exports.PROTOCOL_VERSION = 'ipfs/0.1.0'
|
||||||
module.exports.AGENT_VERSION = 'js-libp2p/0.1.0'
|
module.exports.AGENT_VERSION = `js-libp2p/${libp2pVersion}`
|
||||||
module.exports.MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'
|
module.exports.MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0'
|
||||||
module.exports.MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'
|
module.exports.MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0'
|
||||||
|
@ -175,6 +175,7 @@ class IdentifyService {
|
|||||||
// Update peers data in PeerStore
|
// Update peers data in PeerStore
|
||||||
this.peerStore.addressBook.set(id, listenAddrs.map((addr) => multiaddr(addr)))
|
this.peerStore.addressBook.set(id, listenAddrs.map((addr) => multiaddr(addr)))
|
||||||
this.peerStore.protoBook.set(id, protocols)
|
this.peerStore.protoBook.set(id, protocols)
|
||||||
|
this.peerStore.metadataBook.set(id, 'AgentVersion', Buffer.from(message.agentVersion))
|
||||||
|
|
||||||
// TODO: Track our observed address so that we can score it
|
// TODO: Track our observed address so that we can score it
|
||||||
log('received observed address of %s', observedAddr)
|
log('received observed address of %s', observedAddr)
|
||||||
|
@ -19,6 +19,7 @@ const { IdentifyService, multicodecs } = require('../../src/identify')
|
|||||||
const Peers = require('../fixtures/peers')
|
const Peers = require('../fixtures/peers')
|
||||||
const Libp2p = require('../../src')
|
const Libp2p = require('../../src')
|
||||||
const baseOptions = require('../utils/base-options.browser')
|
const baseOptions = require('../utils/base-options.browser')
|
||||||
|
const pkg = require('../../package.json')
|
||||||
|
|
||||||
const { MULTIADDRS_WEBSOCKETS } = require('../fixtures/browser')
|
const { MULTIADDRS_WEBSOCKETS } = require('../fixtures/browser')
|
||||||
const remoteAddr = MULTIADDRS_WEBSOCKETS[0]
|
const remoteAddr = MULTIADDRS_WEBSOCKETS[0]
|
||||||
@ -53,6 +54,9 @@ describe('Identify', () => {
|
|||||||
},
|
},
|
||||||
protoBook: {
|
protoBook: {
|
||||||
set: () => { }
|
set: () => { }
|
||||||
|
},
|
||||||
|
metadataBook: {
|
||||||
|
set: () => { }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
multiaddrs: []
|
multiaddrs: []
|
||||||
@ -77,6 +81,7 @@ describe('Identify', () => {
|
|||||||
|
|
||||||
sinon.spy(localIdentify.peerStore.addressBook, 'set')
|
sinon.spy(localIdentify.peerStore.addressBook, 'set')
|
||||||
sinon.spy(localIdentify.peerStore.protoBook, 'set')
|
sinon.spy(localIdentify.peerStore.protoBook, 'set')
|
||||||
|
sinon.spy(localIdentify.peerStore.metadataBook, 'set')
|
||||||
|
|
||||||
// Run identify
|
// Run identify
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
@ -90,6 +95,12 @@ describe('Identify', () => {
|
|||||||
|
|
||||||
expect(localIdentify.peerStore.addressBook.set.callCount).to.equal(1)
|
expect(localIdentify.peerStore.addressBook.set.callCount).to.equal(1)
|
||||||
expect(localIdentify.peerStore.protoBook.set.callCount).to.equal(1)
|
expect(localIdentify.peerStore.protoBook.set.callCount).to.equal(1)
|
||||||
|
|
||||||
|
const metadataArgs = localIdentify.peerStore.metadataBook.set.firstCall.args
|
||||||
|
expect(metadataArgs[0].id.bytes).to.equal(remotePeer.bytes)
|
||||||
|
expect(metadataArgs[1]).to.equal('AgentVersion')
|
||||||
|
expect(metadataArgs[2].toString()).to.equal(`js-libp2p/${pkg.version}`)
|
||||||
|
|
||||||
// Validate the remote peer gets updated in the peer store
|
// Validate the remote peer gets updated in the peer store
|
||||||
const call = localIdentify.peerStore.addressBook.set.firstCall
|
const call = localIdentify.peerStore.addressBook.set.firstCall
|
||||||
expect(call.args[0].id.bytes).to.equal(remotePeer.bytes)
|
expect(call.args[0].id.bytes).to.equal(remotePeer.bytes)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user