mirror of
https://github.com/whyour/qinglong.git
synced 2026-09-22 02:27:44 +08:00
feat(ql3): establish 3.0 incubation baseline
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
const assert = require('node:assert/strict');
|
||||
const { createHash } = require('node:crypto');
|
||||
const { test } = require('node:test');
|
||||
const {
|
||||
PostgresRemoteRunActivationRepository,
|
||||
} = require('@qinglong/cluster-postgres/runtime');
|
||||
|
||||
test('pins the shared running status parameter to PostgreSQL varchar', async () => {
|
||||
const token = 'worker_generated_lease_capability_0000000000000001';
|
||||
const digest = createHash('sha256').update(token).digest('hex');
|
||||
const client = {
|
||||
async query(text) {
|
||||
const sql = String(text);
|
||||
if (sql === 'BEGIN' || sql === 'COMMIT' || sql === 'ROLLBACK') {
|
||||
return { rows: [] };
|
||||
}
|
||||
if (sql.startsWith('SET LOCAL')) return { rows: [] };
|
||||
if (sql.includes('pg_advisory_xact_lock')) return { rows: [{}] };
|
||||
if (sql.includes('FROM "ql3"."worker_sessions"')) {
|
||||
return {
|
||||
rows: [{
|
||||
workerId: 'worker-live',
|
||||
sessionId: '019f7094-a853-72f3-82ab-dfa08e6bd1c1',
|
||||
workerGeneration: 1,
|
||||
workerStatus: 'online',
|
||||
workerLeaseExpiresAtMs: '9000',
|
||||
}],
|
||||
};
|
||||
}
|
||||
if (sql.includes('FROM "ql3"."runs" AS run')) {
|
||||
return {
|
||||
rows: [{
|
||||
runId: 'run-live',
|
||||
runStatus: 'dispatching',
|
||||
executionOwner: 'runtime',
|
||||
cancelRequestedAtMs: null,
|
||||
cancelReason: null,
|
||||
runErrorCode: null,
|
||||
runVersion: 2,
|
||||
eventSequence: 2,
|
||||
planJson: { command: {}, environment: [] },
|
||||
attemptId: 'attempt-live',
|
||||
attemptRunId: 'run-live',
|
||||
attemptStepRunId: null,
|
||||
attemptStatus: 'starting',
|
||||
executorType: 'remote_worker',
|
||||
attemptWorkerId: 'worker-live',
|
||||
attemptWorkerSessionId: '019f7094-a853-72f3-82ab-dfa08e6bd1c1',
|
||||
attemptWorkerGeneration: 1,
|
||||
attemptLeaseGeneration: 1,
|
||||
attemptLeaseVersion: 0,
|
||||
attemptLeaseTokenDigest: digest,
|
||||
attemptOfferId: 'offer-live',
|
||||
callbackSequence: 0,
|
||||
callbackTokenDigest: null,
|
||||
executorHandle: null,
|
||||
logArtifactId: null,
|
||||
deadlineAtMs: null,
|
||||
startedAtMs: null,
|
||||
finishedAtMs: null,
|
||||
attemptErrorCode: null,
|
||||
workflowAttemptId: null,
|
||||
workflowStepRunId: null,
|
||||
admittedWorkflowStepVersion: null,
|
||||
admittedWorkflowStepDigest: null,
|
||||
}],
|
||||
};
|
||||
}
|
||||
if (sql.includes('FROM "ql3"."run_dispatch_leases"')) {
|
||||
return {
|
||||
rows: [{
|
||||
attemptId: 'attempt-live',
|
||||
runId: 'run-live',
|
||||
leaseStatus: 'leased',
|
||||
leaseVersion: 0,
|
||||
leaseGeneration: 1,
|
||||
workerId: 'worker-live',
|
||||
workerSessionId: '019f7094-a853-72f3-82ab-dfa08e6bd1c1',
|
||||
workerGeneration: 1,
|
||||
leaseTokenDigest: digest,
|
||||
offerId: 'offer-live',
|
||||
leaseExpiresAtMs: '9000',
|
||||
}],
|
||||
};
|
||||
}
|
||||
if (sql.includes('statement_timestamp()')) {
|
||||
return { rows: [{ nowMs: '1000' }] };
|
||||
}
|
||||
if (sql.includes('UPDATE "ql3"."run_attempts"')) {
|
||||
return { rowCount: 1, rows: [] };
|
||||
}
|
||||
if (sql.includes('UPDATE "ql3"."runs"')) {
|
||||
assert.match(sql, /SET status = \$2::varchar/);
|
||||
assert.match(sql, /WHEN \$2::varchar = 'running'/);
|
||||
return { rowCount: 1, rows: [] };
|
||||
}
|
||||
if (sql.includes('INSERT INTO "ql3"."run_events"')) {
|
||||
return { rowCount: 1, rows: [] };
|
||||
}
|
||||
throw new Error(`unexpected query: ${sql}`);
|
||||
},
|
||||
release() {},
|
||||
};
|
||||
const repository = new PostgresRemoteRunActivationRepository({
|
||||
async connect() {
|
||||
return client;
|
||||
},
|
||||
async query() {
|
||||
throw new Error('not used');
|
||||
},
|
||||
});
|
||||
const result = await repository.acknowledgeRunning({
|
||||
runId: 'run-live',
|
||||
attemptId: 'attempt-live',
|
||||
workerId: 'worker-live',
|
||||
workerSessionId: '019f7094-a853-72f3-82ab-dfa08e6bd1c1',
|
||||
workerGeneration: 1,
|
||||
offerId: 'offer-live',
|
||||
leaseGeneration: 1,
|
||||
leaseToken: token,
|
||||
expectedLeaseVersion: 0,
|
||||
attemptEventId: '019f7094-a853-72f3-82ab-dfa08e6bd1c2',
|
||||
runEventId: '019f7094-a853-72f3-82ab-dfa08e6bd1c3',
|
||||
executorHandle: 'ql3lp1.test',
|
||||
logArtifactId: 'wlog-0123456789abcdef0123456789abcd',
|
||||
callbackSequence: 1,
|
||||
callbackTokenDigest: 'b'.repeat(64),
|
||||
});
|
||||
assert.equal(result.status, 'applied');
|
||||
});
|
||||
Reference in New Issue
Block a user