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
|
* @param {Event} ev
|
||||||
*/
|
*/
|
||||||
function onConnectingFailed(ev) {
|
function onConnectingFailed(ev) {
|
||||||
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||||
failure: (prevStats?.failure ?? 0) + 1,
|
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
||||||
stateChange: Date.now(),
|
failure: (prevStats?.failure ?? 0) + 1,
|
||||||
duration: stats(prevStats?.duration, 0),
|
stateChange: Date.now(),
|
||||||
}))
|
duration: stats(prevStats?.duration, 0),
|
||||||
|
}))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Event} ev
|
* @param {Event} ev
|
||||||
*/
|
*/
|
||||||
function onConnected(ev) {
|
function onConnected(ev) {
|
||||||
infos.updateStats(ev.multiaddr, () => ({
|
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||||
stateChange: Date.now(),
|
infos.updateStats(ev.multiaddr, () => ({
|
||||||
failure: 0,
|
stateChange: Date.now(),
|
||||||
}))
|
failure: 0,
|
||||||
if (ev.details.weAreClient) setupPing(ev.multiaddr, ev.details.rpc)
|
}))
|
||||||
|
}
|
||||||
|
if (ev.details.weAreClient) {
|
||||||
|
setupPing(ev.multiaddr, ev.details.rpc)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Event} ev
|
* @param {Event} ev
|
||||||
*/
|
*/
|
||||||
function bumpStateChange(ev) {
|
function bumpStateChange(ev) {
|
||||||
infos.updateStats(ev.multiaddr, () => ({
|
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||||
stateChange: Date.now(),
|
infos.updateStats(ev.multiaddr, () => ({
|
||||||
}))
|
stateChange: Date.now(),
|
||||||
|
}))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Event} ev
|
* @param {Event} ev
|
||||||
*/
|
*/
|
||||||
function onDisconnected(ev) {
|
function onDisconnected(ev) {
|
||||||
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
if (!ev.multiaddr.startsWith('/tunnel/')) {
|
||||||
stateChange: Date.now(),
|
infos.updateStats(ev.multiaddr, (prevStats) => ({
|
||||||
duration: stats(
|
stateChange: Date.now(),
|
||||||
prevStats?.duration,
|
duration: stats(
|
||||||
Date.now() - (prevStats?.stateChange ?? PROGRAM_STARTUP)
|
prevStats?.duration,
|
||||||
),
|
Date.now() - (prevStats?.stateChange ?? PROGRAM_STARTUP)
|
||||||
}))
|
),
|
||||||
|
}))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pull(
|
pull(
|
||||||
|
|
11
lib/stats.js
11
lib/stats.js
|
@ -114,18 +114,15 @@ class Stats {
|
||||||
return
|
return
|
||||||
} else if (fileContents) {
|
} else if (fileContents) {
|
||||||
const vals = SelfHealingJSONCodec.decode(fileContents)
|
const vals = SelfHealingJSONCodec.decode(fileContents)
|
||||||
for (const [multiaddr, statsInfo] of Object.entries(vals)) {
|
for (const [multiaddr, stats] of Object.entries(vals)) {
|
||||||
this.#infos.update(/**@type {`/${string}`}*/ (multiaddr), {
|
this.#infos.update(/**@type {`/${string}`}*/ (multiaddr), { stats })
|
||||||
stats: statsInfo,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
this.#loadedResolve(true)
|
this.#loadedResolve(true)
|
||||||
debug('Loaded conn.json into ConnDB in memory')
|
debug(`Loaded existing ${Stats.FILENAME}`)
|
||||||
} else {
|
} else {
|
||||||
atomic.writeFile(this.#path, '{}', 'utf8', () => {})
|
atomic.writeFile(this.#path, '{}', 'utf8', () => {})
|
||||||
this.#loadedResolve(true)
|
this.#loadedResolve(true)
|
||||||
// prettier-ignore
|
debug(`Created ${Stats.FILENAME} because there was none yet`)
|
||||||
debug(`Created new ${Stats.FILENAME} because there was no existing one.`);
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -6,7 +6,9 @@ const p = require('node:util').promisify
|
||||||
const { createPeerMock } = require('./util')
|
const { createPeerMock } = require('./util')
|
||||||
|
|
||||||
const PUBKEY = 'EqTMFv7zm8hpPyAkj789qdJgqtz81AEbcinpAs24RRUC'
|
const PUBKEY = 'EqTMFv7zm8hpPyAkj789qdJgqtz81AEbcinpAs24RRUC'
|
||||||
|
const PUBKEY2 = 'FqTMFv7zm8hpPyAkj789qdJgqtz81AEbcinpAs24RRUC'
|
||||||
const TEST_ADDR = `/ip4/127.0.0.1/tcp/9752/shse/${PUBKEY}`
|
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) => {
|
test('Glueing together stats with connections', async (t) => {
|
||||||
await t.test('stage() is ignored when peer already connected', async () => {
|
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'])
|
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) => {
|
await t.test('forget() will remove stats', async (t) => {
|
||||||
const peer = createPeerMock()
|
const peer = createPeerMock()
|
||||||
const address = TEST_ADDR
|
const address = TEST_ADDR
|
||||||
|
|
Loading…
Reference in New Issue