Merge Memory V2 runtime facade
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { parseMemoryV2HealthArgs, runMemoryV2HealthCli } from './check-memory-v2-health.mjs';
|
||||
|
||||
function writableBuffer() {
|
||||
let value = '';
|
||||
return {
|
||||
write(chunk) {
|
||||
value += String(chunk);
|
||||
},
|
||||
value() {
|
||||
return value;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
test('parseMemoryV2HealthArgs parses release gate options', () => {
|
||||
assert.deepEqual(
|
||||
parseMemoryV2HealthArgs([
|
||||
'--require-enabled',
|
||||
'--expect-backend',
|
||||
'legacy',
|
||||
'--no-env-file',
|
||||
'--env-file',
|
||||
'.env.memory',
|
||||
]),
|
||||
{
|
||||
requireEnabled: true,
|
||||
expectedBackend: 'legacy',
|
||||
envFile: '.env.memory',
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
test('runMemoryV2HealthCli passes with default legacy-safe runtime', async () => {
|
||||
const stdout = writableBuffer();
|
||||
const stderr = writableBuffer();
|
||||
const code = await runMemoryV2HealthCli({
|
||||
argv: ['--require-enabled', '--expect-backend', 'legacy', '--no-env-file'],
|
||||
env: {
|
||||
MEMORY_ENABLED: '1',
|
||||
MEMORY_BACKEND: 'legacy',
|
||||
MEMORY_FAIL_OPEN: '1',
|
||||
},
|
||||
stdout,
|
||||
stderr,
|
||||
});
|
||||
const report = JSON.parse(stdout.value());
|
||||
|
||||
assert.equal(code, 0);
|
||||
assert.equal(report.ok, true);
|
||||
assert.equal(report.summary.backend, 'legacy');
|
||||
assert.equal(stderr.value(), '');
|
||||
});
|
||||
|
||||
test('runMemoryV2HealthCli fails when enabled is required but disabled', async () => {
|
||||
const stdout = writableBuffer();
|
||||
const code = await runMemoryV2HealthCli({
|
||||
argv: ['--require-enabled', '--no-env-file'],
|
||||
env: {
|
||||
MEMORY_ENABLED: '0',
|
||||
MEMORY_BACKEND: 'legacy',
|
||||
},
|
||||
stdout,
|
||||
stderr: writableBuffer(),
|
||||
});
|
||||
const report = JSON.parse(stdout.value());
|
||||
|
||||
assert.equal(code, 1);
|
||||
assert.equal(report.ok, false);
|
||||
assert.equal(report.checks.find((check) => check.name === 'memory_enabled').ok, false);
|
||||
});
|
||||
|
||||
test('runMemoryV2HealthCli verifies pgvector resolve canary keeps legacy writes', async () => {
|
||||
const stdout = writableBuffer();
|
||||
let poolEnded = false;
|
||||
class FakePool {
|
||||
async query() {
|
||||
return { rows: [] };
|
||||
}
|
||||
|
||||
async end() {
|
||||
poolEnded = true;
|
||||
}
|
||||
}
|
||||
|
||||
const code = await runMemoryV2HealthCli({
|
||||
argv: ['--require-enabled', '--expect-backend', 'pgvector', '--no-env-file'],
|
||||
env: {
|
||||
MEMORY_ENABLED: '1',
|
||||
MEMORY_BACKEND: 'pgvector',
|
||||
MEMORY_VECTOR_ENABLED: '1',
|
||||
MEMORY_PGVECTOR_DATABASE_URL: 'postgresql://local/memory',
|
||||
MEMORY_PGVECTOR_EMBEDDING_MODULE: './fake-embed.mjs',
|
||||
},
|
||||
stdout,
|
||||
stderr: writableBuffer(),
|
||||
async importPg() {
|
||||
return { Pool: FakePool };
|
||||
},
|
||||
async importModule() {
|
||||
return {
|
||||
async embedQuery() {
|
||||
return [0.1, 0.2, 0.3];
|
||||
},
|
||||
};
|
||||
},
|
||||
});
|
||||
const report = JSON.parse(stdout.value());
|
||||
|
||||
assert.equal(code, 0);
|
||||
assert.equal(poolEnded, true);
|
||||
assert.equal(report.summary.selectedBackend, 'pgvector');
|
||||
assert.equal(report.checks.find((check) => check.name === 'write_uses_legacy').ok, true);
|
||||
assert.equal(report.checks.find((check) => check.name === 'compact_uses_legacy').ok, true);
|
||||
});
|
||||
Reference in New Issue
Block a user