mirror of https://codeberg.org/pzp/pzp-db.git
80 lines
2.1 KiB
JavaScript
80 lines
2.1 KiB
JavaScript
const test = require('node:test')
|
|
const assert = require('node:assert')
|
|
const fs = require('node:fs')
|
|
const p = require('node:util').promisify
|
|
const Log = require('../../lib/log')
|
|
|
|
test('Log basics', async function (t) {
|
|
await t.test('Log handles basic binary records', async function (t) {
|
|
const file = '/tmp/pzp-db-log-test-basic-binary.log'
|
|
try {
|
|
fs.unlinkSync(file)
|
|
} catch (_) {}
|
|
const log = Log(file, { blockSize: 2 * 1024 })
|
|
|
|
const msg1 = Buffer.from('testing')
|
|
const msg2 = Buffer.from('testing2')
|
|
|
|
const offset1 = await p(log.append)(msg1)
|
|
assert.equal(offset1, 0)
|
|
|
|
const offset2 = await p(log.append)(msg2)
|
|
assert.equal(offset2, msg1.length + 4)
|
|
|
|
const b1 = await p(log._get)(offset1)
|
|
assert.equal(b1.toString(), msg1.toString())
|
|
|
|
const b2 = await p(log._get)(offset2)
|
|
assert.equal(b2.toString(), msg2.toString())
|
|
|
|
await p(log.close)()
|
|
})
|
|
|
|
const json1 = { text: 'testing' }
|
|
const json2 = { test: 'testing2' }
|
|
|
|
await t.test('Log handles basic json records', async function (t) {
|
|
const file = '/tmp/pzp-db-log-test-basic-json.log'
|
|
try {
|
|
fs.unlinkSync(file)
|
|
} catch (_) {}
|
|
const log = Log(file, {
|
|
blockSize: 2 * 1024,
|
|
codec: require('flumecodec/json'),
|
|
})
|
|
|
|
const offset1 = await p(log.append)(json1)
|
|
assert.equal(offset1, 0)
|
|
|
|
const offset2 = await p(log.append)(json2)
|
|
assert.equal(offset2, 22)
|
|
|
|
const rec1 = await p(log._get)(offset1)
|
|
assert.deepEqual(rec1, json1)
|
|
|
|
const rec2 = await p(log._get)(offset2)
|
|
assert.deepEqual(rec2, json2)
|
|
|
|
await p(log.close)()
|
|
})
|
|
|
|
await t.test('Log handles basic json record re-reading', async function (t) {
|
|
const file = '/tmp/pzp-db-log-test-basic-json.log'
|
|
const log = Log(file, {
|
|
blockSize: 2 * 1024,
|
|
codec: require('flumecodec/json'),
|
|
})
|
|
|
|
await p(log.onDrain)()
|
|
assert.equal(log.lastRecOffset.value, 22)
|
|
|
|
const rec1 = await p(log._get)(0)
|
|
assert.deepEqual(rec1, json1)
|
|
|
|
const rec2 = await p(log._get)(22)
|
|
assert.deepEqual(rec2, json2)
|
|
|
|
await p(log.close)()
|
|
})
|
|
})
|