Files
modules/indexes-search/hyper-p2p-bloom-gossip/test/test.js
T
Raven ScottandCursor cb9caad46c Add new features across streams, wire, network, scheduling, and supercomputer.
Manual feature pass: stream tee drain APIs, resume prune/checkpoints, transform compose/flush, wire pickBest and framed codec bridge, congestion analytics, bandwidth transfer, deadline extend, bloom union, time-capsule revoke, capacity findByTag/removePeer, cluster removeNode/listReservations, retry jitterDelay — each with tests and api docs.

Co-authored-by: Cursor <[email protected]>
2026-05-21 01:01:40 -04:00

60 lines
1.4 KiB
JavaScript

require('bare-process/global')
const test = require('brittle')
const { HyperP2PBloomGossip, PROTOCOL } = require('../index.js')
test('exports', (t) => {
t.ok(HyperP2PBloomGossip)
t.is(PROTOCOL, 'bloom-gossip/v1')
})
test('add mightContain exportBits', async (t) => {
const m = new HyperP2PBloomGossip()
t.ok(m.add('peer-1'))
t.ok(m.mightContain('peer-1'))
t.ok(m.exportBits().bits)
await m.close()
})
test('validation', async (t) => {
const m = new HyperP2PBloomGossip()
try { m.add('') } catch (e) { t.ok(e) }
await m.close()
})
test('remote gossip', async (t) => {
const m = new HyperP2PBloomGossip()
m._onGossip({ type: 'bloom-add', key: 'remote-key' })
t.ok(m.mightContain('remote-key'))
await m.close()
})
test('getStats', async (t) => {
const m = new HyperP2PBloomGossip()
m.add('x')
t.is(m.getStats().protocol, 'bloom-gossip/v1')
t.is(m.getStats().added, 1)
await m.close()
})
test('listKeys clear', async (t) => {
const m = new HyperP2PBloomGossip()
m.add('a')
m.add('b')
t.is(m.listKeys().length, 2)
t.is(m.clear(), 2)
t.is(m.size(), 0)
await m.close()
})
test('union and fillRatio', async (t) => {
const a = new HyperP2PBloomGossip()
const b = new HyperP2PBloomGossip()
a.add('shared')
b.add('other')
a.union(b.exportBits())
t.ok(a.mightContain('other'))
t.ok(a.fillRatio() >= 0)
await a.close()
await b.close()
})