Fix failure
This commit is contained in:
parent
e151208e15
commit
909096969a
1 changed files with 95 additions and 32 deletions
|
|
@ -7,23 +7,48 @@ import type {
|
|||
} from "../../deterministic-tests/src/test-definition";
|
||||
import { Random } from "../../test-support/random";
|
||||
|
||||
export interface Trace {
|
||||
version: 1 | 2;
|
||||
program?: Program;
|
||||
interface TraceMetadata {
|
||||
seed: number;
|
||||
iterations: number;
|
||||
}
|
||||
|
||||
export interface LegacyTrace extends TraceMetadata {
|
||||
version: 1;
|
||||
/** Old traces omit this and retain their original two-client behavior. */
|
||||
clients?: number;
|
||||
steps: TestStep[];
|
||||
}
|
||||
|
||||
export interface StatefulTrace extends TraceMetadata {
|
||||
version: 2;
|
||||
clients: number;
|
||||
program: Program;
|
||||
/** Older artifacts included these; replay always compiles the program. */
|
||||
steps?: TestStep[];
|
||||
}
|
||||
|
||||
export type Trace = LegacyTrace | StatefulTrace;
|
||||
|
||||
/** Full-state checkpoints can exceed V8's string limit on long campaigns.
|
||||
* Persist their source program once, including when rewriting old artifacts. */
|
||||
export function serializeTrace(trace: Trace): string {
|
||||
return JSON.stringify(
|
||||
trace.version === 2 ? { ...trace, steps: undefined } : trace,
|
||||
null,
|
||||
2
|
||||
);
|
||||
}
|
||||
|
||||
type Document = ExpectedDocument & { content: string };
|
||||
|
||||
/** Concrete actions and independent expected states are serialized together.
|
||||
* Every round checks the whole history, including earlier bytes and UUIDs.
|
||||
* A shuffled cycle covers nine actions; most revisit existing documents.
|
||||
*/
|
||||
export function generateLegacyTrace(seed: number, iterations: number): Trace {
|
||||
export function generateLegacyTrace(
|
||||
seed: number,
|
||||
iterations: number
|
||||
): LegacyTrace {
|
||||
const random = new Random(seed);
|
||||
const clients = 2 + random.int(2);
|
||||
const steps: TestStep[] = [];
|
||||
|
|
@ -297,12 +322,13 @@ export function generateLegacyTrace(seed: number, iterations: number): Trace {
|
|||
}
|
||||
|
||||
export function traceTest(trace: Trace): TestDefinition {
|
||||
const program = trace.version === 2 ? trace.program : undefined;
|
||||
if (
|
||||
![1, 2].includes(trace.version) ||
|
||||
(trace.version === 1 &&
|
||||
(!Array.isArray(trace.steps) || !trace.steps.length)) ||
|
||||
(trace.version === 2 &&
|
||||
(!trace.program || trace.clients !== trace.program.clients)) ||
|
||||
(!program || trace.clients !== program.clients)) ||
|
||||
(trace.clients !== undefined &&
|
||||
(!Number.isInteger(trace.clients) || trace.clients < 2))
|
||||
)
|
||||
|
|
@ -310,8 +336,7 @@ export function traceTest(trace: Trace): TestDefinition {
|
|||
return {
|
||||
clients: trace.clients ?? 2,
|
||||
description: `Seed ${trace.seed}; ${trace.iterations} generated rounds`,
|
||||
steps:
|
||||
trace.version === 2 ? compileProgram(trace.program!) : trace.steps
|
||||
steps: trace.version === 2 ? compileProgram(trace.program) : trace.steps
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue