From b0472686d29a4f295360d3f15a50c86c981892f7 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Wed, 8 Jun 2022 16:47:41 +0100 Subject: [PATCH] fix: wait for peer stats to be updated during test (#1238) The peer stats update interval doesn't always align with the timing in the test so make sure it's elapsed before asserting on the results. Fixes #1219 --- test/metrics/index.node.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/metrics/index.node.ts b/test/metrics/index.node.ts index 8a6e7a58..1be7558d 100644 --- a/test/metrics/index.node.ts +++ b/test/metrics/index.node.ts @@ -11,6 +11,7 @@ import { createBaseOptions } from '../utils/base-options.js' import type { Libp2pNode } from '../../src/libp2p.js' import type { Libp2pOptions } from '../../src/index.js' import type { DefaultMetrics } from '../../src/metrics/index.js' +import pWaitFor from 'p-wait-for' import drain from 'it-drain' describe('libp2p.metrics', () => { @@ -170,6 +171,19 @@ describe('libp2p.metrics', () => { throw new Error('Metrics not configured') } + await pWaitFor(() => { + const peerStats = metrics.forPeer(connection.remotePeer)?.getSnapshot() + const transferred = parseInt(peerStats?.dataReceived.toString() ?? '0') + + if (transferred < bytes.length) { + return false + } + + return true + }, { + interval: 100 + }) + const peerStats = metrics.forPeer(connection.remotePeer)?.getSnapshot() expect(parseInt(peerStats?.dataReceived.toString() ?? '0')).to.be.at.least(bytes.length)