Files
qinglong/test/back/deploymentProfile.test.cjs

101 lines
3.6 KiB
JavaScript

require('ts-node/register/transpile-only');
const assert = require('node:assert/strict');
const { test } = require('node:test');
const {
localPrimaryResourcePolicy,
parseDeploymentProfile,
} = require('../../back/runtime/domain/deploymentProfile');
test('uses standalone by default and parses only explicit deployment profiles', () => {
assert.equal(parseDeploymentProfile(undefined), 'standalone');
assert.equal(parseDeploymentProfile(''), 'standalone');
for (const profile of ['edge', 'standalone', 'cluster-control', 'worker']) {
assert.equal(parseDeploymentProfile(profile), profile);
}
for (const profile of ['EDGE', ' edge', 'router', 'cluster']) {
assert.throws(() => parseDeploymentProfile(profile), TypeError);
}
});
test('keeps edge scans smaller and slower than standalone scans', () => {
const edge = localPrimaryResourcePolicy('edge');
const standalone = localPrimaryResourcePolicy('standalone');
assert.ok(edge.completion.intervalMs > standalone.completion.intervalMs);
assert.ok(edge.cancellation.intervalMs > standalone.cancellation.intervalMs);
assert.ok(edge.timeout.intervalMs > standalone.timeout.intervalMs);
assert.ok(edge.retry.intervalMs > standalone.retry.intervalMs);
assert.ok(
edge.approvedAction.intervalMs > standalone.approvedAction.intervalMs,
);
assert.ok(
edge.artifactRetention.intervalMs > standalone.artifactRetention.intervalMs,
);
assert.ok(edge.cancellation.pageSize < standalone.cancellation.pageSize);
assert.ok(edge.timeout.maxPages < standalone.timeout.maxPages);
assert.ok(edge.completion.pageSize < standalone.completion.pageSize);
assert.ok(edge.retry.pageSize < standalone.retry.pageSize);
assert.ok(
edge.approvedAction.dispatch.pageSize <
standalone.approvedAction.dispatch.pageSize,
);
assert.ok(
edge.approvedAction.recovery.maxPages <
standalone.approvedAction.recovery.maxPages,
);
assert.ok(
edge.artifactRetention.pageSize < standalone.artifactRetention.pageSize,
);
assert.ok(
edge.artifactRetention.maximumDeletions <
standalone.artifactRetention.maximumDeletions,
);
assert.equal(edge.retry.maxPages, 1);
assert.equal(standalone.retry.maxPages, 1);
assert.equal(edge.receiptPublishGraceMs, 50);
assert.equal(standalone.receiptPublishGraceMs, 100);
assert.equal(edge.receiptTerminalMissingRetentionMs, 120_000);
assert.equal(standalone.receiptTerminalMissingRetentionMs, 60_000);
assert.ok(
edge.receiptQuarantineRetentionMs < standalone.receiptQuarantineRetentionMs,
);
edge.completion.pageSize = 64;
edge.retry.pageSize = 64;
edge.approvedAction.dispatch.pageSize = 64;
edge.approvedAction.recovery.pageSize = 64;
edge.artifactRetention.pageSize = 64;
assert.notEqual(
localPrimaryResourcePolicy('edge').completion.pageSize,
edge.completion.pageSize,
);
assert.notEqual(
localPrimaryResourcePolicy('edge').retry.pageSize,
edge.retry.pageSize,
);
assert.notEqual(
localPrimaryResourcePolicy('edge').approvedAction.dispatch.pageSize,
edge.approvedAction.dispatch.pageSize,
);
assert.notEqual(
localPrimaryResourcePolicy('edge').approvedAction.recovery.pageSize,
edge.approvedAction.recovery.pageSize,
);
assert.notEqual(
localPrimaryResourcePolicy('edge').artifactRetention.pageSize,
edge.artifactRetention.pageSize,
);
});
test('refuses unsupported local control-plane topologies', () => {
assert.throws(
() => localPrimaryResourcePolicy('cluster-control'),
/cannot host the local SQLite Primary stack/,
);
assert.throws(
() => localPrimaryResourcePolicy('worker'),
/cannot host the local SQLite Primary stack/,
);
});