mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-22 10:32:40 +08:00
feat(ql3): establish 3.0 incubation baseline
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
const assert = require('node:assert/strict');
|
||||
const { test } = require('node:test');
|
||||
const {
|
||||
ClusterRemoteRunActivationService,
|
||||
} = require('@qinglong/cluster-control/remote-activation');
|
||||
|
||||
const SESSION_ID = '018f5c64-9b9d-7f1a-8c2d-1234567890ac';
|
||||
const EVENT_IDS = [
|
||||
'018f5c64-9b9d-7f1a-8c2d-1234567890a1',
|
||||
'018f5c64-9b9d-7f1a-8c2d-1234567890a2',
|
||||
'018f5c64-9b9d-7f1a-8c2d-1234567890a3',
|
||||
'018f5c64-9b9d-7f1a-8c2d-1234567890a4',
|
||||
'018f5c64-9b9d-7f1a-8c2d-1234567890a5',
|
||||
];
|
||||
|
||||
function command() {
|
||||
return {
|
||||
runId: 'run-1',
|
||||
attemptId: 'attempt-1',
|
||||
workerSessionId: SESSION_ID,
|
||||
workerGeneration: 2,
|
||||
offerId: 'offer-1',
|
||||
leaseGeneration: 3,
|
||||
leaseToken: 'worker_generated_lease_capability_0000000000000001',
|
||||
expectedLeaseVersion: 4,
|
||||
};
|
||||
}
|
||||
|
||||
test('binds Worker principal and creates server-owned event IDs', async () => {
|
||||
const observed = [];
|
||||
const repository = {
|
||||
async acknowledgeStarting(value) {
|
||||
observed.push(['starting', value]);
|
||||
return { status: 'applied', snapshot: {} };
|
||||
},
|
||||
async acknowledgeRunning(value) {
|
||||
observed.push(['running', value]);
|
||||
return { status: 'applied', snapshot: {} };
|
||||
},
|
||||
async failStart(value) {
|
||||
observed.push(['failed', value]);
|
||||
return { status: 'applied', snapshot: {} };
|
||||
},
|
||||
};
|
||||
let sequence = 0;
|
||||
const service = new ClusterRemoteRunActivationService(repository, {
|
||||
createEventId: () => EVENT_IDS[sequence++],
|
||||
});
|
||||
const principal = { workerId: 'edge-1' };
|
||||
await service.acknowledgeStarting(principal, command());
|
||||
await service.acknowledgeRunning(principal, {
|
||||
...command(),
|
||||
executorHandle: 'remote:handle-1',
|
||||
callbackSequence: 1,
|
||||
callbackTokenDigest: 'a'.repeat(64),
|
||||
});
|
||||
await service.failStart(principal, command());
|
||||
assert.deepEqual(observed, [
|
||||
['starting', { ...command(), workerId: 'edge-1', eventId: EVENT_IDS[0] }],
|
||||
['running', {
|
||||
...command(),
|
||||
executorHandle: 'remote:handle-1',
|
||||
callbackSequence: 1,
|
||||
callbackTokenDigest: 'a'.repeat(64),
|
||||
workerId: 'edge-1',
|
||||
attemptEventId: EVENT_IDS[1],
|
||||
runEventId: EVENT_IDS[2],
|
||||
}],
|
||||
['failed', {
|
||||
...command(),
|
||||
workerId: 'edge-1',
|
||||
attemptEventId: EVENT_IDS[3],
|
||||
runEventId: EVENT_IDS[4],
|
||||
}],
|
||||
]);
|
||||
});
|
||||
Reference in New Issue
Block a user