mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-04-25 10:32:14 +00:00
chore: fix flaky tests (#1137)
These tests are flaky in CI, probably due to differences in timing introduced by #1058 Fixes #1134
This commit is contained in:
parent
12f1bb0aee
commit
4c3bf01f35
@ -118,7 +118,7 @@ describe('libp2p.connections', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
libp2p.peerStore.addressBook.set(remoteLibp2p.peerId, remoteLibp2p.multiaddrs)
|
await libp2p.peerStore.addressBook.set(remoteLibp2p.peerId, remoteLibp2p.multiaddrs)
|
||||||
await libp2p.dial(remoteLibp2p.peerId)
|
await libp2p.dial(remoteLibp2p.peerId)
|
||||||
|
|
||||||
expect(libp2p.connections.size).to.eql(1)
|
expect(libp2p.connections.size).to.eql(1)
|
||||||
@ -161,8 +161,8 @@ describe('libp2p.connections', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Populate PeerStore before starting
|
// Populate PeerStore before starting
|
||||||
libp2p.peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
await libp2p.peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
||||||
libp2p.peerStore.addressBook.set(nodes[1].peerId, nodes[1].multiaddrs)
|
await libp2p.peerStore.addressBook.set(nodes[1].peerId, nodes[1].multiaddrs)
|
||||||
|
|
||||||
await libp2p.start()
|
await libp2p.start()
|
||||||
|
|
||||||
@ -188,8 +188,8 @@ describe('libp2p.connections', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Populate PeerStore before starting
|
// Populate PeerStore before starting
|
||||||
libp2p.peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
await libp2p.peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
||||||
libp2p.peerStore.addressBook.set(nodes[1].peerId, nodes[1].multiaddrs)
|
await libp2p.peerStore.addressBook.set(nodes[1].peerId, nodes[1].multiaddrs)
|
||||||
|
|
||||||
await libp2p.start()
|
await libp2p.start()
|
||||||
|
|
||||||
@ -253,7 +253,7 @@ describe('libp2p.connections', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Populate PeerStore after starting (discovery)
|
// Populate PeerStore after starting (discovery)
|
||||||
libp2p.peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
await libp2p.peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
||||||
|
|
||||||
// Wait for peer to connect
|
// Wait for peer to connect
|
||||||
const conn = await libp2p.dial(nodes[0].peerId)
|
const conn = await libp2p.dial(nodes[0].peerId)
|
||||||
@ -290,7 +290,7 @@ describe('libp2p.connections', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
libp2p.peerStore.addressBook.set(remoteLibp2p.peerId, remoteLibp2p.multiaddrs)
|
await libp2p.peerStore.addressBook.set(remoteLibp2p.peerId, remoteLibp2p.multiaddrs)
|
||||||
await libp2p.dial(remoteLibp2p.peerId)
|
await libp2p.dial(remoteLibp2p.peerId)
|
||||||
|
|
||||||
const totalConns = Array.from(libp2p.connections.values())
|
const totalConns = Array.from(libp2p.connections.values())
|
||||||
|
@ -19,8 +19,8 @@ describe('ping', () => {
|
|||||||
config: baseOptions
|
config: baseOptions
|
||||||
})
|
})
|
||||||
|
|
||||||
nodes[0].peerStore.addressBook.set(nodes[1].peerId, nodes[1].multiaddrs)
|
await nodes[0].peerStore.addressBook.set(nodes[1].peerId, nodes[1].multiaddrs)
|
||||||
nodes[1].peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
await nodes[1].peerStore.addressBook.set(nodes[0].peerId, nodes[0].multiaddrs)
|
||||||
})
|
})
|
||||||
|
|
||||||
afterEach(() => Promise.all(nodes.map(n => n.stop())))
|
afterEach(() => Promise.all(nodes.map(n => n.stop())))
|
||||||
|
@ -128,7 +128,7 @@ describe('Dialing (direct, TCP)', () => {
|
|||||||
peerStore
|
peerStore
|
||||||
})
|
})
|
||||||
|
|
||||||
peerStore.addressBook.set(peerId, remoteTM.getAddrs())
|
await peerStore.addressBook.set(peerId, remoteTM.getAddrs())
|
||||||
|
|
||||||
const connection = await dialer.connectToPeer(peerId)
|
const connection = await dialer.connectToPeer(peerId)
|
||||||
expect(connection).to.exist()
|
expect(connection).to.exist()
|
||||||
@ -326,7 +326,7 @@ describe('Dialing (direct, TCP)', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
sinon.spy(libp2p.dialer, 'connectToPeer')
|
sinon.spy(libp2p.dialer, 'connectToPeer')
|
||||||
libp2p.peerStore.addressBook.set(remotePeerId, remoteLibp2p.multiaddrs)
|
await libp2p.peerStore.addressBook.set(remotePeerId, remoteLibp2p.multiaddrs)
|
||||||
|
|
||||||
const connection = await libp2p.dial(remotePeerId)
|
const connection = await libp2p.dial(remotePeerId)
|
||||||
expect(connection).to.exist()
|
expect(connection).to.exist()
|
||||||
@ -471,7 +471,7 @@ describe('Dialing (direct, TCP)', () => {
|
|||||||
|
|
||||||
const fullAddress = remoteAddr.encapsulate(`/p2p/${remoteLibp2p.peerId.toB58String()}`)
|
const fullAddress = remoteAddr.encapsulate(`/p2p/${remoteLibp2p.peerId.toB58String()}`)
|
||||||
|
|
||||||
libp2p.peerStore.addressBook.set(remotePeerId, remoteLibp2p.multiaddrs)
|
await libp2p.peerStore.addressBook.set(remotePeerId, remoteLibp2p.multiaddrs)
|
||||||
const dialResults = await Promise.all([...new Array(dials)].map((_, index) => {
|
const dialResults = await Promise.all([...new Array(dials)].map((_, index) => {
|
||||||
if (index % 2 === 0) return libp2p.dial(remoteLibp2p.peerId)
|
if (index % 2 === 0) return libp2p.dial(remoteLibp2p.peerId)
|
||||||
return libp2p.dial(fullAddress)
|
return libp2p.dial(fullAddress)
|
||||||
@ -501,7 +501,7 @@ describe('Dialing (direct, TCP)', () => {
|
|||||||
const error = new Error('Boom')
|
const error = new Error('Boom')
|
||||||
sinon.stub(libp2p.transportManager, 'dial').callsFake(() => Promise.reject(error))
|
sinon.stub(libp2p.transportManager, 'dial').callsFake(() => Promise.reject(error))
|
||||||
|
|
||||||
libp2p.peerStore.addressBook.set(remotePeerId, remoteLibp2p.multiaddrs)
|
await libp2p.peerStore.addressBook.set(remotePeerId, remoteLibp2p.multiaddrs)
|
||||||
const dialResults = await pSettle([...new Array(dials)].map((_, index) => {
|
const dialResults = await pSettle([...new Array(dials)].map((_, index) => {
|
||||||
if (index % 2 === 0) return libp2p.dial(remoteLibp2p.peerId)
|
if (index % 2 === 0) return libp2p.dial(remoteLibp2p.peerId)
|
||||||
return libp2p.dial(remoteAddr)
|
return libp2p.dial(remoteAddr)
|
||||||
|
@ -48,8 +48,8 @@ describe('Dialing (direct, WebSockets)', () => {
|
|||||||
localTM.add(Transport.prototype[Symbol.toStringTag], Transport, { filter: filters.all })
|
localTM.add(Transport.prototype[Symbol.toStringTag], Transport, { filter: filters.all })
|
||||||
})
|
})
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(async () => {
|
||||||
peerStore.delete(peerId)
|
await peerStore.delete(peerId)
|
||||||
sinon.restore()
|
sinon.restore()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -41,13 +41,13 @@ describe('Identify', () => {
|
|||||||
peerId: localPeer,
|
peerId: localPeer,
|
||||||
datastore: new MemoryDatastore()
|
datastore: new MemoryDatastore()
|
||||||
})
|
})
|
||||||
localPeerStore.protoBook.set(localPeer, protocols)
|
await localPeerStore.protoBook.set(localPeer, protocols)
|
||||||
|
|
||||||
remotePeerStore = new PeerStore({
|
remotePeerStore = new PeerStore({
|
||||||
peerId: remotePeer,
|
peerId: remotePeer,
|
||||||
datastore: new MemoryDatastore()
|
datastore: new MemoryDatastore()
|
||||||
})
|
})
|
||||||
remotePeerStore.protoBook.set(remotePeer, protocols)
|
await remotePeerStore.protoBook.set(remotePeer, protocols)
|
||||||
|
|
||||||
localAddressManager = new AddressManager(localPeer)
|
localAddressManager = new AddressManager(localPeer)
|
||||||
remoteAddressManager = new AddressManager(remotePeer)
|
remoteAddressManager = new AddressManager(remotePeer)
|
||||||
@ -372,7 +372,7 @@ describe('Identify', () => {
|
|||||||
peerId: remotePeer,
|
peerId: remotePeer,
|
||||||
datastore: new MemoryDatastore()
|
datastore: new MemoryDatastore()
|
||||||
})
|
})
|
||||||
remotePeerStore.protoBook.set(remotePeer, storedProtocols)
|
await remotePeerStore.protoBook.set(remotePeer, storedProtocols)
|
||||||
|
|
||||||
const remoteIdentify = new IdentifyService({
|
const remoteIdentify = new IdentifyService({
|
||||||
libp2p: {
|
libp2p: {
|
||||||
|
@ -186,8 +186,8 @@ describe('peer discovery scenarios', () => {
|
|||||||
remoteLibp2p2.start()
|
remoteLibp2p2.start()
|
||||||
])
|
])
|
||||||
|
|
||||||
libp2p.peerStore.addressBook.set(remotePeerId1, remoteLibp2p1.multiaddrs)
|
await libp2p.peerStore.addressBook.set(remotePeerId1, remoteLibp2p1.multiaddrs)
|
||||||
remoteLibp2p2.peerStore.addressBook.set(remotePeerId1, remoteLibp2p1.multiaddrs)
|
await remoteLibp2p2.peerStore.addressBook.set(remotePeerId1, remoteLibp2p1.multiaddrs)
|
||||||
|
|
||||||
// Topology:
|
// Topology:
|
||||||
// A -> B
|
// A -> B
|
||||||
|
@ -38,7 +38,7 @@ describe('peer discovery', () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
libp2p.peerStore.addressBook.set(remotePeerId, [new Multiaddr('/ip4/165.1.1.1/tcp/80')])
|
await libp2p.peerStore.addressBook.set(remotePeerId, [new Multiaddr('/ip4/165.1.1.1/tcp/80')])
|
||||||
|
|
||||||
const deferred = defer()
|
const deferred = defer()
|
||||||
sinon.stub(libp2p.dialer, 'connectToPeer').callsFake((remotePeerId) => {
|
sinon.stub(libp2p.dialer, 'connectToPeer').callsFake((remotePeerId) => {
|
||||||
|
@ -310,7 +310,7 @@ describe('auto-relay', () => {
|
|||||||
await pWaitFor(() => relayLibp2p1.multiaddrs.length === originalMultiaddrs1Length + 1)
|
await pWaitFor(() => relayLibp2p1.multiaddrs.length === originalMultiaddrs1Length + 1)
|
||||||
expect(relayLibp2p1.multiaddrs[originalMultiaddrs1Length].getPeerId()).to.eql(relayLibp2p2.peerId.toB58String())
|
expect(relayLibp2p1.multiaddrs[originalMultiaddrs1Length].getPeerId()).to.eql(relayLibp2p2.peerId.toB58String())
|
||||||
|
|
||||||
// Only one will be used for listeninng
|
// Only one will be used for listening
|
||||||
expect(relayLibp2p1.transportManager.listen.callCount).to.equal(1)
|
expect(relayLibp2p1.transportManager.listen.callCount).to.equal(1)
|
||||||
|
|
||||||
// Spy if relay from listen map was removed
|
// Spy if relay from listen map was removed
|
||||||
@ -349,7 +349,7 @@ describe('auto-relay', () => {
|
|||||||
expect(autoRelay1._listenRelays.size).to.equal(1)
|
expect(autoRelay1._listenRelays.size).to.equal(1)
|
||||||
expect(relayLibp2p1.connectionManager.size).to.equal(2)
|
expect(relayLibp2p1.connectionManager.size).to.equal(2)
|
||||||
|
|
||||||
// Only one will be used for listeninng
|
// Only one will be used for listening
|
||||||
expect(relayLibp2p1.transportManager.listen.callCount).to.equal(1)
|
expect(relayLibp2p1.transportManager.listen.callCount).to.equal(1)
|
||||||
|
|
||||||
// Disconnect not used listen relay
|
// Disconnect not used listen relay
|
||||||
@ -363,16 +363,16 @@ describe('auto-relay', () => {
|
|||||||
sinon.spy(relayLibp2p1, 'dial')
|
sinon.spy(relayLibp2p1, 'dial')
|
||||||
|
|
||||||
// Remove peer used as relay from peerStore and disconnect it
|
// Remove peer used as relay from peerStore and disconnect it
|
||||||
relayLibp2p1.peerStore.delete(relayLibp2p2.peerId)
|
await relayLibp2p1.peerStore.delete(relayLibp2p2.peerId)
|
||||||
await relayLibp2p1.hangUp(relayLibp2p2.peerId)
|
await relayLibp2p1.hangUp(relayLibp2p2.peerId)
|
||||||
expect(autoRelay1._listenRelays.size).to.equal(0)
|
expect(autoRelay1._listenRelays.size).to.equal(0)
|
||||||
expect(relayLibp2p1.connectionManager.size).to.equal(0)
|
expect(relayLibp2p1.connectionManager.size).to.equal(0)
|
||||||
|
|
||||||
// Wait for other peer connected to be added as listen addr
|
// Wait for other peer connected to be added as listen addr
|
||||||
await pWaitFor(() => relayLibp2p1.transportManager.listen.callCount === 2)
|
await pWaitFor(() => relayLibp2p1.transportManager.listen.callCount === 2)
|
||||||
expect(autoRelay1._tryToListenOnRelay.callCount).to.equal(1)
|
await pWaitFor(() => autoRelay1._tryToListenOnRelay.callCount === 1)
|
||||||
expect(autoRelay1._listenRelays.size).to.equal(1)
|
await pWaitFor(() => autoRelay1._listenRelays.size === 1)
|
||||||
expect(relayLibp2p1.connectionManager.size).to.eql(1)
|
await pWaitFor(() => relayLibp2p1.connectionManager.size === 1)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should not fail when trying to dial unreachable peers to add as hop relay and replaced removed ones', async () => {
|
it('should not fail when trying to dial unreachable peers to add as hop relay and replaced removed ones', async () => {
|
||||||
@ -394,7 +394,7 @@ describe('auto-relay', () => {
|
|||||||
expect(autoRelay1._listenRelays.size).to.equal(1)
|
expect(autoRelay1._listenRelays.size).to.equal(1)
|
||||||
expect(relayLibp2p1.connectionManager.size).to.equal(2)
|
expect(relayLibp2p1.connectionManager.size).to.equal(2)
|
||||||
|
|
||||||
// Only one will be used for listeninng
|
// Only one will be used for listening
|
||||||
expect(relayLibp2p1.transportManager.listen.callCount).to.equal(1)
|
expect(relayLibp2p1.transportManager.listen.callCount).to.equal(1)
|
||||||
|
|
||||||
// Disconnect not used listen relay
|
// Disconnect not used listen relay
|
||||||
@ -410,7 +410,7 @@ describe('auto-relay', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Remove peer used as relay from peerStore and disconnect it
|
// Remove peer used as relay from peerStore and disconnect it
|
||||||
relayLibp2p1.peerStore.delete(relayLibp2p2.peerId)
|
await relayLibp2p1.peerStore.delete(relayLibp2p2.peerId)
|
||||||
await relayLibp2p1.hangUp(relayLibp2p2.peerId)
|
await relayLibp2p1.hangUp(relayLibp2p2.peerId)
|
||||||
expect(autoRelay1._listenRelays.size).to.equal(0)
|
expect(autoRelay1._listenRelays.size).to.equal(0)
|
||||||
expect(relayLibp2p1.connectionManager.size).to.equal(0)
|
expect(relayLibp2p1.connectionManager.size).to.equal(0)
|
||||||
@ -492,7 +492,7 @@ describe('auto-relay', () => {
|
|||||||
|
|
||||||
// Wait for peer added as listen relay
|
// Wait for peer added as listen relay
|
||||||
await pWaitFor(() => autoRelay2._addListenRelay.callCount === 1)
|
await pWaitFor(() => autoRelay2._addListenRelay.callCount === 1)
|
||||||
expect(autoRelay2._listenRelays.size).to.equal(1)
|
await pWaitFor(() => autoRelay2._listenRelays.size === 1)
|
||||||
|
|
||||||
// Relay 1 discovers Relay 2 relayed multiaddr via Relay 3
|
// Relay 1 discovers Relay 2 relayed multiaddr via Relay 3
|
||||||
const ma2RelayedBy3 = relayLibp2p2.multiaddrs[relayLibp2p2.multiaddrs.length - 1]
|
const ma2RelayedBy3 = relayLibp2p2.multiaddrs[relayLibp2p2.multiaddrs.length - 1]
|
||||||
@ -619,7 +619,7 @@ describe('auto-relay', () => {
|
|||||||
await pWaitFor(() => local.multiaddrs.length === originalMultiaddrsLength + 1)
|
await pWaitFor(() => local.multiaddrs.length === originalMultiaddrsLength + 1)
|
||||||
|
|
||||||
const relayedAddr = local.multiaddrs[local.multiaddrs.length - 1]
|
const relayedAddr = local.multiaddrs[local.multiaddrs.length - 1]
|
||||||
remote.peerStore.addressBook.set(local.peerId, [relayedAddr])
|
await remote.peerStore.addressBook.set(local.peerId, [relayedAddr])
|
||||||
|
|
||||||
// Dial from remote through the relayed address
|
// Dial from remote through the relayed address
|
||||||
const conn = await remote.dial(local.peerId)
|
const conn = await remote.dial(local.peerId)
|
||||||
|
@ -47,13 +47,7 @@ describe('Dialing (via relay, TCP)', () => {
|
|||||||
|
|
||||||
afterEach(async () => {
|
afterEach(async () => {
|
||||||
// Stop each node
|
// Stop each node
|
||||||
return Promise.all([srcLibp2p, relayLibp2p, dstLibp2p].map(async libp2p => {
|
return Promise.all([srcLibp2p, relayLibp2p, dstLibp2p].map(libp2p => libp2p.stop()))
|
||||||
await libp2p.stop()
|
|
||||||
// Clear the peer stores
|
|
||||||
for await (const peer of libp2p.peerStore.getPeers()) {
|
|
||||||
libp2p.peerStore.delete(peer.id)
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should be able to connect to a peer over a relay with active connections', async () => {
|
it('should be able to connect to a peer over a relay with active connections', async () => {
|
||||||
|
@ -36,17 +36,17 @@ async function createPeer ({ number = 1, fixture = true, started = true, populat
|
|||||||
if (started) {
|
if (started) {
|
||||||
await Promise.all(peers.map((p) => p.start()))
|
await Promise.all(peers.map((p) => p.start()))
|
||||||
|
|
||||||
populateAddressBooks && _populateAddressBooks(peers)
|
populateAddressBooks && await _populateAddressBooks(peers)
|
||||||
}
|
}
|
||||||
|
|
||||||
return peers
|
return peers
|
||||||
}
|
}
|
||||||
|
|
||||||
function _populateAddressBooks (peers) {
|
async function _populateAddressBooks (peers) {
|
||||||
for (let i = 0; i < peers.length; i++) {
|
for (let i = 0; i < peers.length; i++) {
|
||||||
for (let j = 0; j < peers.length; j++) {
|
for (let j = 0; j < peers.length; j++) {
|
||||||
if (i !== j) {
|
if (i !== j) {
|
||||||
peers[i].peerStore.addressBook.set(peers[j].peerId, peers[j].multiaddrs)
|
await peers[i].peerStore.addressBook.set(peers[j].peerId, peers[j].multiaddrs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user