mirror of https://codeberg.org/pzp/pzp-net.git
dont save tunnel peers in stats file
This commit is contained in:
parent
0c7652caba
commit
ee34cc6d14
50
lib/glue.js
50
lib/glue.js
|
@ -47,44 +47,54 @@ function glue(infos, connections) {
|
|||
* @param {Event} ev
|
||||
*/
|
||||
function onConnectingFailed(ev) {
|
||||
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
||||
failure: (prevStats?.failure ?? 0) + 1,
|
||||
stateChange: Date.now(),
|
||||
duration: stats(prevStats?.duration, 0),
|
||||
}))
|
||||
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
||||
failure: (prevStats?.failure ?? 0) + 1,
|
||||
stateChange: Date.now(),
|
||||
duration: stats(prevStats?.duration, 0),
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Event} ev
|
||||
*/
|
||||
function onConnected(ev) {
|
||||
infos.updateStats(ev.multiaddr, () => ({
|
||||
stateChange: Date.now(),
|
||||
failure: 0,
|
||||
}))
|
||||
if (ev.details.weAreClient) setupPing(ev.multiaddr, ev.details.rpc)
|
||||
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||
infos.updateStats(ev.multiaddr, () => ({
|
||||
stateChange: Date.now(),
|
||||
failure: 0,
|
||||
}))
|
||||
}
|
||||
if (ev.details.weAreClient) {
|
||||
setupPing(ev.multiaddr, ev.details.rpc)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Event} ev
|
||||
*/
|
||||
function bumpStateChange(ev) {
|
||||
infos.updateStats(ev.multiaddr, () => ({
|
||||
stateChange: Date.now(),
|
||||
}))
|
||||
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||
infos.updateStats(ev.multiaddr, () => ({
|
||||
stateChange: Date.now(),
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Event} ev
|
||||
*/
|
||||
function onDisconnected(ev) {
|
||||
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
||||
stateChange: Date.now(),
|
||||
duration: stats(
|
||||
prevStats?.duration,
|
||||
Date.now() - (prevStats?.stateChange ?? PROGRAM_STARTUP)
|
||||
),
|
||||
}))
|
||||
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
||||
stateChange: Date.now(),
|
||||
duration: stats(
|
||||
prevStats?.duration,
|
||||
Date.now() - (prevStats?.stateChange ?? PROGRAM_STARTUP)
|
||||
),
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
pull(
|
||||
|
|
11
lib/stats.js
11
lib/stats.js
|
@ -114,18 +114,15 @@ class Stats {
|
|||
return
|
||||
} else if (fileContents) {
|
||||
const vals = SelfHealingJSONCodec.decode(fileContents)
|
||||
for (const [multiaddr, statsInfo] of Object.entries(vals)) {
|
||||
this.#infos.update(/**@type {`/${string}`}*/ (multiaddr), {
|
||||
stats: statsInfo,
|
||||
})
|
||||
for (const [multiaddr, stats] of Object.entries(vals)) {
|
||||
this.#infos.update(/**@type {`/${string}`}*/ (multiaddr), { stats })
|
||||
}
|
||||
this.#loadedResolve(true)
|
||||
debug('Loaded conn.json into ConnDB in memory')
|
||||
debug(`Loaded existing ${Stats.FILENAME}`)
|
||||
} else {
|
||||
atomic.writeFile(this.#path, '{}', 'utf8', () => {})
|
||||
this.#loadedResolve(true)
|
||||
// prettier-ignore
|
||||
debug(`Created new ${Stats.FILENAME} because there was no existing one.`);
|
||||
debug(`Created ${Stats.FILENAME} because there was none yet`)
|
||||
return
|
||||
}
|
||||
})
|
||||
|
|
|
@ -6,7 +6,9 @@ const p = require('node:util').promisify
|
|||
const { createPeerMock } = require('./util')
|
||||
|
||||
const PUBKEY = 'EqTMFv7zm8hpPyAkj789qdJgqtz81AEbcinpAs24RRUC'
|
||||
const PUBKEY2 = 'FqTMFv7zm8hpPyAkj789qdJgqtz81AEbcinpAs24RRUC'
|
||||
const TEST_ADDR = `/ip4/127.0.0.1/tcp/9752/shse/${PUBKEY}`
|
||||
const TEST_TUNNEL_ADDR = `/tunnel/${PUBKEY}.${PUBKEY2}/shse/${PUBKEY2}`
|
||||
|
||||
test('Glueing together stats with connections', async (t) => {
|
||||
await t.test('stage() is ignored when peer already connected', async () => {
|
||||
|
@ -66,6 +68,25 @@ test('Glueing together stats with connections', async (t) => {
|
|||
assert.deepEqual(Object.keys(json[TEST_ADDR]), ['stateChange'])
|
||||
})
|
||||
|
||||
await t.test('tunnel connections are not stats-persisted', async (t) => {
|
||||
const peer = createPeerMock()
|
||||
const address = TEST_TUNNEL_ADDR
|
||||
|
||||
const entriesBefore = await p(peer.net.peers())(null)
|
||||
assert.equal(entriesBefore.length, 0, 'there is no entry in peers()')
|
||||
|
||||
const rpc = await p(peer.net.connect)(address)
|
||||
assert.ok(rpc, 'connect() successful')
|
||||
|
||||
const statsJSONPath = Path.join(peer.mockDir, 'net', './stats.json')
|
||||
while (FS.existsSync(statsJSONPath) === false) {
|
||||
await p(setTimeout)(1)
|
||||
}
|
||||
const fileContents = FS.readFileSync(statsJSONPath, 'utf8')
|
||||
const json = JSON.parse(fileContents)
|
||||
assert.deepEqual(Object.keys(json), [])
|
||||
})
|
||||
|
||||
await t.test('forget() will remove stats', async (t) => {
|
||||
const peer = createPeerMock()
|
||||
const address = TEST_ADDR
|
||||
|
|
Loading…
Reference in New Issue