From 9b05af85a916e727774744d27e0ab95bba00028a Mon Sep 17 00:00:00 2001 From: Rahul Tenany Date: Tue, 17 Nov 2020 15:28:30 -0800 Subject: [PATCH] Sorted nodes by Id to fix graph generation --- ASJobGraphEvents/gantt/dgml.py | 10 ++++++++-- ASJobGraphEvents/gantt/structures.py | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ASJobGraphEvents/gantt/dgml.py b/ASJobGraphEvents/gantt/dgml.py index 4eba948..4ad6761 100644 --- a/ASJobGraphEvents/gantt/dgml.py +++ b/ASJobGraphEvents/gantt/dgml.py @@ -6,6 +6,8 @@ import xml.etree.ElementTree as ET from structures import Job from gantt_types import ThreadId +def get_nodeId(elem: Job) -> int: + return elem.nodeId def read_jobs(filename: str) -> List[Job]: jobs: List[Job] = [] @@ -22,7 +24,9 @@ def read_jobs(filename: str) -> List[Job]: if job := parse_job_node(node): jobs.append(job) - return jobs + sortedJobs: List[Job] = [] + sortedJobs = sorted(jobs, key=get_nodeId) + return sortedJobs def parse_iso(time: str) -> datetime: @@ -51,9 +55,11 @@ def parse_job_node(node: ET.Element) -> Optional[Job]: name = value if attr == "Slot" or attr == "Thread": thread = value + if attr == "Id": + nodeId = value try: - return Job(start, end, strip_newlines(name), parse_thread_id(thread)) + return Job(start, end, strip_newlines(name), parse_thread_id(thread), int(nodeId)) except UnboundLocalError: # most likely doesn't include "Thread" or "Slot" attribute. return None diff --git a/ASJobGraphEvents/gantt/structures.py b/ASJobGraphEvents/gantt/structures.py index ff87c9e..bf3bc86 100644 --- a/ASJobGraphEvents/gantt/structures.py +++ b/ASJobGraphEvents/gantt/structures.py @@ -12,6 +12,7 @@ class Job(NamedTuple): end: datetime name: str thread: ThreadId + nodeId: int class Row(NamedTuple):