From 1d84fdd09479ee05270073a0d6b4a0bf199c75ff Mon Sep 17 00:00:00 2001 From: Joshua Harlow Date: Sun, 21 Dec 2014 16:23:10 -0800 Subject: [PATCH] Add edge labels for engine states The engine state diagram benefits slightly from having the event labels that cause transitions to other states so we might as well include it in the generated diagram. Change-Id: I733eba1d2dc6386c7b7ce8930fbfd41e29cdb602 --- doc/source/img/engine_states.svg | 6 +++--- tools/state_graph.py | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/doc/source/img/engine_states.svg b/doc/source/img/engine_states.svg index 079002ec..807b8ea5 100644 --- a/doc/source/img/engine_states.svg +++ b/doc/source/img/engine_states.svg @@ -1,8 +1,8 @@ - - -Engines statesGAME_OVERREVERTEDSUCCESSSUSPENDEDFAILUREUNDEFINEDRESUMINGSCHEDULINGANALYZINGWAITINGstart + +Engines statesGAME_OVERREVERTEDon revertedSUCCESSon successSUSPENDEDon suspendedFAILUREon failedUNDEFINEDRESUMINGon startSCHEDULINGon scheduleANALYZINGon finishedon scheduleWAITINGon waiton waiton analyzestart diff --git a/tools/state_graph.py b/tools/state_graph.py index c5d72d02..b4f9d53b 100755 --- a/tools/state_graph.py +++ b/tools/state_graph.py @@ -128,7 +128,7 @@ def main(): 'fontsize': '11', } nodes = {} - for (start_state, _on_event, end_state) in source: + for (start_state, on_event, end_state) in source: if start_state not in nodes: start_node_attrs = node_attrs.copy() text_color = map_color(internal_states, start_state) @@ -143,7 +143,20 @@ def main(): end_node_attrs['fontcolor'] = text_color nodes[end_state] = pydot.Node(end_state, **end_node_attrs) g.add_node(nodes[end_state]) - g.add_edge(pydot.Edge(nodes[start_state], nodes[end_state])) + if options.engines: + edge_attrs = { + 'label': "on %s" % on_event + } + if 'reverted' in on_event: + edge_attrs['fontcolor'] = 'darkorange' + if 'fail' in on_event: + edge_attrs['fontcolor'] = 'red' + if 'success' in on_event: + edge_attrs['fontcolor'] = 'green' + else: + edge_attrs = {} + g.add_edge(pydot.Edge(nodes[start_state], nodes[end_state], + **edge_attrs)) start = pydot.Node("__start__", shape="point", width="0.1", xlabel='start', fontcolor='green', **node_attrs)