Files
Renderive/webapp_gallery/tests/dag/dag_model.test.ts
T
2026-08-16 00:07:05 +08:00

85 lines
3.0 KiB
TypeScript

import {describe, expect, it} from "vitest";
import {build_dag_model} from "../../src/dag/dag_model";
import type {Gallery_Captured_Frame} from "../../src/protocol/gallery_types";
describe("DAG view model", () => {
it("uses node_id for current plan and capture overlays", () => {
const plan = {
version: 2,
nodes: [{node_id: 7, name: "paint", owner: "plot", kind: "paint"}],
edges: [],
renderables: [],
};
const frame: Gallery_Captured_Frame = {
frame_id: 1,
render_plan_version: 2,
render_duration_ns: 10,
node_executions: [{
node_id: 7,
worker_id: 3,
start_offset_ns: 0,
cpu_end_offset_ns: 10,
external_start_offset_ns: 0,
external_end_offset_ns: 0,
end_offset_ns: 10,
duration_ns: 10,
cpu_duration_ns: 10,
external_duration_ns: 0,
status: "complete",
attachments: [],
}],
analysis: {
total_render_duration_ns: 10,
critical_path_duration_ns: 10,
total_work_duration_ns: 10,
scheduler_work_duration_ns: 10,
render_domain_work_duration_ns: 0,
total_external_duration_ns: 0,
total_render_domain_queue_wait_ns: 0,
total_gpu_completion_wait_ns: 0,
total_gpu_execution_duration_ns: 0,
scheduler_parallel_overlap_ns: 0,
scheduler_peak_parallelism: 1,
average_cpu_concurrency: 1,
scheduler_average_parallelism: 1,
render_domain_utilization: 0,
critical_path: [7],
bottleneck_nodes: [7],
nodes: [{
node_id: 7,
duration_ns: 10,
cpu_duration_ns: 10,
render_domain_cpu_duration_ns: 0,
total_cpu_work_duration_ns: 10,
external_duration_ns: 0,
render_domain_queue_wait_ns: 0,
gpu_completion_wait_ns: 0,
gpu_execution_duration_ns: 0,
start_offset_ns: 0,
end_offset_ns: 10,
dependency_ready_offset_ns: 0,
scheduler_wait_ns: 0,
work_contribution: 1,
critical_path_contribution: 1,
on_critical_path: true,
}],
workers: [{
worker_id: 3,
work_duration_ns: 10,
utilization: 1,
}],
},
};
const model = build_dag_model(plan, frame, [], 7);
expect(model.nodes[0].id).toBe("7");
expect(model.nodes[0].data).toMatchObject({
duration_ns: 10,
worker_id: 3,
critical: true,
selected: true,
});
});
});