mirror of
https://github.com/morluto/rea
synced 2026-10-28 15:07:26 -04:00
refactor(process): unify trace outcome comparison
This commit is contained in:
@@ -14,7 +14,10 @@ import {
|
||||
} from "./processTraceComparison.fixture.js";
|
||||
|
||||
import { compareProcessCaptures } from "./processComparison.js";
|
||||
import { compareProcessTraces } from "./processTraceComparison.js";
|
||||
import {
|
||||
compareProcessTraces,
|
||||
processTraceOutcomesDiffer,
|
||||
} from "./processTraceComparison.js";
|
||||
|
||||
const traced = (
|
||||
left: ReturnType<typeof capture>,
|
||||
@@ -65,9 +68,14 @@ describe("generic capture trace comparison", () => {
|
||||
suffix: [],
|
||||
},
|
||||
};
|
||||
expect(compareProcessTraces(left, right, concurrent)).toMatchObject({
|
||||
const concurrentComparison = compareProcessTraces(left, right, concurrent);
|
||||
expect(concurrentComparison).toMatchObject({
|
||||
verdict: "equivalent",
|
||||
});
|
||||
expect(processTraceOutcomesDiffer(concurrentComparison)).toBe(true);
|
||||
expect(
|
||||
processTraceOutcomesDiffer(compareProcessTraces(left, left, concurrent)),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("rejects malformed result contracts", () => {
|
||||
|
||||
@@ -25,14 +25,10 @@ export const compareProcessTraces = (
|
||||
? null
|
||||
: { side: "right" as const, ...rightEvaluation.diagnostic }
|
||||
: { side: "left" as const, ...leftEvaluation.diagnostic };
|
||||
const outcomesDiffer =
|
||||
leftEvaluation.result.status !== rightEvaluation.result.status ||
|
||||
JSON.stringify(
|
||||
leftEvaluation.result.raw_trace.map(({ event_id }) => event_id),
|
||||
) !==
|
||||
JSON.stringify(
|
||||
rightEvaluation.result.raw_trace.map(({ event_id }) => event_id),
|
||||
);
|
||||
const outcomesDiffer = processTraceOutcomesDiffer({
|
||||
left: leftEvaluation.result,
|
||||
right: rightEvaluation.result,
|
||||
});
|
||||
return processTraceComparisonResultSchema.parse({
|
||||
verdict:
|
||||
leftEvaluation.result.status === "unknown" ||
|
||||
@@ -52,8 +48,11 @@ export const compareProcessTraces = (
|
||||
|
||||
/** Whether trace conformance or raw declared order differs across captures. */
|
||||
export const processTraceOutcomesDiffer = (
|
||||
comparison: ProcessTraceComparisonResult,
|
||||
comparison: Pick<ProcessTraceComparisonResult, "left" | "right">,
|
||||
): boolean =>
|
||||
comparison.left.status !== comparison.right.status ||
|
||||
JSON.stringify(comparison.left.raw_trace.map(({ event_id }) => event_id)) !==
|
||||
JSON.stringify(comparison.right.raw_trace.map(({ event_id }) => event_id));
|
||||
comparison.left.raw_trace.length !== comparison.right.raw_trace.length ||
|
||||
comparison.left.raw_trace.some(
|
||||
({ event_id }, index) =>
|
||||
event_id !== comparison.right.raw_trace[index]?.event_id,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user