Skip to content

If Shared step does not have valid edge(not blocked by guard) in one model, it will fail instead of checking for valid edges in other models #195

@tkikala

Description

@tkikala

Steps to reproduce:

  1. Create 3 models like this:
    model 1:
    v_A -> e_AtoB /global.someVariable = true; -> v_B Shared B -> e_BtoA [global.someVariable==true] -> v_A

model 2:
v_B Shared B -> e_BtoK -> v_K -> e_KtoB -> v_B Shared B

model 3:
v_Z->e_ZtoB /global.someVariable = false; ->v_B Shared B->e_BtoZ [global.someVariable==false]->v_Z

In this case, it is quite frequent that after reaching state v_B in model 1, graphwalker will jump to v_B state in model 3, where it will not have valid(not blocked by guard) action, because global.someVariable is set to true.

AR: execution returns result null and does not continue traversing models (coverage criteria: random(edge_coverage(100)))
ER: It would be great if, instead of returning null when graphwalker can't find valid steps in model 1, it goes and checks if there are valid steps from that state in other models e.g. model 2 and model 3.

Of course there are workarounds, for example including those edges together in model 2, or including void edge going from v_B to v_B in both model 1 and model 3, but all these workaround harms the modelling process, understandability and runability of models(e.g. you will not be able to run Model 2 separately).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions