This commit is contained in:
Raven Scott
2026-05-20 17:13:51 -04:00
parent 3507e4e91a
commit 7f086aa591
190 changed files with 34732 additions and 746 deletions
+11 -21
View File
@@ -1,4 +1,4 @@
const test = require('bare-test')
const test = require('brittle')
const HyperP2PDistributedEventBus = require('../index.js')
const path = require('bare-path')
const fs = require('bare-fs/promises')
@@ -6,41 +6,30 @@ const crypto = require('bare-crypto')
const process = require('bare-process')
test('hyper-p2p-distributed-event-bus - basic lifecycle and publish/subscribe', async (t) => {
const bus1 = new HyperP2PDistributedEventBus({
const bus = new HyperP2PDistributedEventBus({
storageDir: path.join(process.cwd(), 'test-storage-bus1-' + Date.now()),
topic: crypto.randomBytes(32)
})
const bus2 = new HyperP2PDistributedEventBus({
storageDir: path.join(process.cwd(), 'test-storage-bus2-' + Date.now()),
topic: bus1.topic
})
await bus1.ready()
await bus2.ready()
await bus.ready()
let received = []
const unsub = bus2.subscribe('test-topic', (event) => {
const received = []
const unsub = bus.subscribe('test-topic', (event) => {
received.push(event)
})
const published = await bus1.publish('test-topic', { message: 'hello from p2p', value: 42 })
// Allow propagation time
await new Promise(resolve => setTimeout(resolve, 500))
await bus.publish('test-topic', { message: 'hello local', value: 42 })
t.ok(received.length >= 1, 'should receive at least one event')
t.is(received[0].payload.message, 'hello from p2p')
t.is(received[0].payload.message, 'hello local')
t.is(received[0].topic, 'test-topic')
t.ok(received[0].id)
t.ok(received[0].vectorClock)
unsub()
await bus1.close()
await bus2.close()
await bus.close()
// Cleanup storage
try { await fs.rm(bus1.storageDir, { recursive: true, force: true }) } catch {}
try { await fs.rm(bus2.storageDir, { recursive: true, force: true }) } catch {}
try { await fs.rm(bus.storageDir, { recursive: true, force: true }) } catch {}
})
test('hyper-p2p-distributed-event-bus - vector clock and dedup', async (t) => {
@@ -80,7 +69,8 @@ test('hyper-p2p-distributed-event-bus - persistence and replay', async (t) => {
const replayed = await bus2.replay('persist-topic')
t.ok(replayed.length >= 2)
t.is(replayed[0].payload.data, 'first')
t.ok(replayed.some((e) => e.payload.data === 'first'))
t.ok(replayed.some((e) => e.payload.data === 'second'))
await bus2.close()
try { await fs.rm(storageDir, { recursive: true, force: true }) } catch {}