Hello Jenkins Builder, I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/7497 to look at the new patch set (#4). contrib/fsm-to-dot: warn and draw unallowed state transitions Hacked as it is, fsm-to-dot is capable of detecting action functions transitioning to states that are not allowed according to the FSM definition struct. Draw those in red and output a warning. Found these osmo-bsc gscon errors with this patch: ERROR: gscon_fsm_active() triggers a transition to ST_WAIT_HO_COMPL, but this is not allowed by the FSM definition ERROR: gscon_fsm_wait_ho_compl() triggers a transition to ST_WAIT_MDCX_BTS_HO, but this is not allowed by the FSM definition Related: OS#3109 Change-Id: Ic6319a958b3c7247510c1930bac8b02b95f9dcf2 --- M contrib/fsm-to-dot.py 1 file changed, 12 insertions(+), 1 deletion(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/97/7497/4 diff --git a/contrib/fsm-to-dot.py b/contrib/fsm-to-dot.py index ce94a4e..7a4694e 100755 --- a/contrib/fsm-to-dot.py +++ b/contrib/fsm-to-dot.py @@ -137,9 +137,10 @@ return cmp(event.name, other.name) class Edge: - def __init__(edge, to_state, event_name=None, style=None, action=None): + def __init__(edge, to_state, event_name=None, style=None, action=None, color=None): edge.to_state = to_state edge.style = style + edge.color = color edge.events = [] edge.actions = [] edge.add_event_name(event_name) @@ -379,9 +380,17 @@ for to_state_name, event_name in transitions: if not event_name: continue + found = False for out_edge in state.out_edges: if out_edge.to_state.name == to_state_name: out_edge.add_event_name(event_name) + found = True + if not found: + sys.stderr.write( + "ERROR: %s() triggers a transition to %s, but this is not allowed by the FSM definition\n" + % (state.action, to_state_name)) + state.add_out_edge(Edge(fsm.find_state_by_name(to_state_name, True), event_name, + color='red')) additional_states = [] @@ -526,6 +535,8 @@ attrs.append('label="%s"' % (r'\n'.join(labels))) if out_edge.style: attrs.append('style=%s'% out_edge.style) + if out_edge.color: + attrs.append('color=%s'% out_edge.color) attrs_str = '' if attrs: attrs_str = ' [%s]' % (','.join(attrs)) -- To view, visit https://gerrit.osmocom.org/7497 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic6319a958b3c7247510c1930bac8b02b95f9dcf2 Gerrit-PatchSet: 4 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Neels Hofmeyr <nhofm...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder