mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-20 16:07:11 +08:00
101 lines
3.6 KiB
JavaScript
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/,
|
|
);
|
|
});
|