93 lines
2.1 KiB
TypeScript
93 lines
2.1 KiB
TypeScript
import type { EventFrameDto, JobDto, ProgressDto } from '../api/contracts'
|
|
|
|
export const observedAt = '2026-07-17T00:00:00Z'
|
|
|
|
export function job(revision: number, overrides: Partial<JobDto> = {}): JobDto {
|
|
return {
|
|
resource_kind: 'job',
|
|
id: 'job_00000001',
|
|
owner: 'owner_000001',
|
|
label: 'Fixture job',
|
|
revision,
|
|
phase: 'Running',
|
|
lifecycle: 'visible',
|
|
source: {
|
|
kind: 'http',
|
|
display_url: 'https://example.invalid/archive',
|
|
result_path: 'archive.bin',
|
|
},
|
|
target: {
|
|
store: 'target-main',
|
|
bucket: 'fixture-bucket',
|
|
prefix: 'results',
|
|
},
|
|
authoritative_attempt: {
|
|
attempt_id: 'attempt_0001',
|
|
fence: 1,
|
|
worker_incarnation: 'worker_00001',
|
|
},
|
|
progress: progress(10),
|
|
checkpoint: null,
|
|
result: null,
|
|
failure: null,
|
|
created_at: observedAt,
|
|
updated_at: observedAt,
|
|
event_cursor: 'cursor-snapshot-0001',
|
|
...overrides,
|
|
}
|
|
}
|
|
|
|
export function progress(completedBytes: number): ProgressDto {
|
|
return {
|
|
attempt_id: 'attempt_0001',
|
|
fence: 1,
|
|
completed_bytes: completedBytes,
|
|
total_bytes: 100,
|
|
completed_members: 0,
|
|
total_members: 1,
|
|
observed_at: observedAt,
|
|
}
|
|
}
|
|
|
|
export function jobChanged(
|
|
sequence: number,
|
|
eventId: string,
|
|
revision: number,
|
|
completedBytes: number,
|
|
): EventFrameDto {
|
|
return {
|
|
schema_version: 1,
|
|
kind: 'job_changed',
|
|
event_id: eventId,
|
|
sequence,
|
|
cursor: `cursor-event-${String(sequence).padStart(4, '0')}`,
|
|
occurred_at: observedAt,
|
|
job_id: 'job_00000001',
|
|
job_revision: revision,
|
|
phase: 'Running',
|
|
lifecycle: 'visible',
|
|
authoritative_attempt: {
|
|
attempt_id: 'attempt_0001',
|
|
fence: 1,
|
|
},
|
|
progress: {
|
|
attempt_id: 'attempt_0001',
|
|
fence: 1,
|
|
completed_bytes: completedBytes,
|
|
total_bytes: 100,
|
|
completed_members: 0,
|
|
total_members: 1,
|
|
},
|
|
}
|
|
}
|
|
|
|
export function heartbeat(sequence: number, eventId: string): EventFrameDto {
|
|
return {
|
|
schema_version: 1,
|
|
kind: 'heartbeat',
|
|
event_id: eventId,
|
|
sequence,
|
|
cursor: `cursor-event-${String(sequence).padStart(4, '0')}`,
|
|
occurred_at: observedAt,
|
|
}
|
|
}
|