85 lines
3.0 KiB
TypeScript
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,
|
|
});
|
|
});
|
|
});
|