feat: keybook

This commit is contained in:
Vasco Santos
2020-04-28 15:03:16 +02:00
committed by Jacob Heun
parent 3f2b06dc26
commit ce38033c10
12 changed files with 364 additions and 73 deletions

View File

@ -68,16 +68,16 @@ describe('Persisted PeerStore', () => {
// AddressBook
peerStore.addressBook.set(peer, multiaddrs)
expect(spyDirty).to.have.property('callCount', 1)
expect(spyDs).to.have.property('callCount', 1)
expect(spyDirty).to.have.property('callCount', 2) // Address + PeerId
expect(spyDs).to.have.property('callCount', 2)
// ProtoBook
peerStore.protoBook.set(peer, protocols)
expect(spyDirty).to.have.property('callCount', 2)
expect(spyDs).to.have.property('callCount', 2)
expect(spyDirty).to.have.property('callCount', 3) // Protocol
expect(spyDs).to.have.property('callCount', 3)
// Should have two peer records stored in the datastore
// Should have three peer records stored in the datastore
const queryParams = {
prefix: '/peers/'
}
@ -86,7 +86,7 @@ describe('Persisted PeerStore', () => {
for await (const _ of datastore.query(queryParams)) { // eslint-disable-line
count++
}
expect(count).to.equal(2)
expect(count).to.equal(3)
// Validate data
const storedPeer = peerStore.get(peer)
@ -114,11 +114,11 @@ describe('Persisted PeerStore', () => {
peerStore.protoBook.set(peers[0], protocols)
peerStore.protoBook.set(peers[1], protocols)
expect(spyDs).to.have.property('callCount', 4)
expect(spyDs).to.have.property('callCount', 6) // 2 AddressBook + 2 ProtoBook + 2 KeyBook
expect(peerStore.peers.size).to.equal(2)
await peerStore.stop()
peerStore.peerIds.clear()
peerStore.keyBook.data.clear()
peerStore.addressBook.data.clear()
peerStore.protoBook.data.clear()
@ -127,8 +127,8 @@ describe('Persisted PeerStore', () => {
await peerStore.start()
expect(spy).to.have.property('callCount', 4) // 4 datastore entries
expect(spyDs).to.have.property('callCount', 4) // 4 previous operations
expect(spy).to.have.property('callCount', 6) // 6 datastore entries
expect(spyDs).to.have.property('callCount', 6) // 6 previous operations
expect(peerStore.peers.size).to.equal(2)
expect(peerStore.addressBook.data.size).to.equal(2)
@ -149,6 +149,7 @@ describe('Persisted PeerStore', () => {
const spyDs = sinon.spy(datastore, 'batch')
const spyAddressBook = sinon.spy(peerStore.addressBook, 'delete')
const spyKeyBook = sinon.spy(peerStore.keyBook, 'delete')
const spyProtoBook = sinon.spy(peerStore.protoBook, 'delete')
// Delete from PeerStore
@ -156,8 +157,9 @@ describe('Persisted PeerStore', () => {
await peerStore.stop()
expect(spyAddressBook).to.have.property('callCount', 1)
expect(spyKeyBook).to.have.property('callCount', 1)
expect(spyProtoBook).to.have.property('callCount', 1)
expect(spyDs).to.have.property('callCount', 2)
expect(spyDs).to.have.property('callCount', 3)
// Should have zero peer records stored in the datastore
const queryParams = {
@ -199,7 +201,7 @@ describe('Persisted PeerStore', () => {
// Remove data from the same Peer
peerStore.addressBook.delete(peers[0])
expect(spyDirty).to.have.property('callCount', 3)
expect(spyDirty).to.have.property('callCount', 4) // 2 AddrBook ops, 1 ProtoBook op, 1 KeyBook op
expect(peerStore._dirtyPeers.size).to.equal(1)
expect(spyDs).to.have.property('callCount', 0)
@ -213,16 +215,15 @@ describe('Persisted PeerStore', () => {
// Add data for second book
peerStore.addressBook.set(peers[1], multiaddrs)
expect(spyDirty).to.have.property('callCount', 4)
expect(spyDirty).to.have.property('callCount', 6)
expect(spyDs).to.have.property('callCount', 1)
expect(peerStore._dirtyPeers.size).to.equal(0) // Reset
// Should have two peer records stored in the datastore
let count = 0
for await (const _ of datastore.query(queryParams)) { // eslint-disable-line
count++
}
expect(count).to.equal(2)
expect(count).to.equal(4)
expect(peerStore.peers.size).to.equal(2)
})
@ -239,7 +240,7 @@ describe('Persisted PeerStore', () => {
peerStore.protoBook.set(peer, protocols)
expect(spyDs).to.have.property('callCount', 0)
expect(spyDirty).to.have.property('callCount', 1)
expect(spyDirty).to.have.property('callCount', 2) // ProtoBook + KeyBook
expect(peerStore._dirtyPeers.size).to.equal(1)
const queryParams = {
@ -251,7 +252,7 @@ describe('Persisted PeerStore', () => {
await peerStore.stop()
expect(spyDirty).to.have.property('callCount', 1)
expect(spyDirty).to.have.property('callCount', 2)
expect(spyDs).to.have.property('callCount', 1)
expect(peerStore._dirtyPeers.size).to.equal(0) // Reset
@ -260,7 +261,7 @@ describe('Persisted PeerStore', () => {
for await (const _ of datastore.query(queryParams)) { // eslint-disable-line
count++
}
expect(count).to.equal(1)
expect(count).to.equal(2)
expect(peerStore.peers.size).to.equal(1)
})
})
@ -353,7 +354,7 @@ describe('libp2p.peerStore (Persisted)', () => {
await newNode.start()
expect(spy).to.have.property('callCount', 4) // 4 datastore entries
expect(spy).to.have.property('callCount', 6) // 6 datastore entries
expect(newNode.peerStore.peers.size).to.equal(2)