in testworkflow.go [1184:1208]
func (t *TestWorkflow) getLastStepForVM(vmname string) (*daisy.Step, error) {
step := "wait-" + vmname
if _, ok := t.wf.Steps[step]; !ok {
return nil, fmt.Errorf("no step " + step)
}
rdeps := make(map[string][]string)
for dependent, dependencies := range t.wf.Dependencies {
for _, dependency := range dependencies {
rdeps[dependency] = append(rdeps[dependency], dependent)
}
}
for {
deps, ok := rdeps[step]
if !ok {
// no more steps depend on this one
break
}
if len(deps) > 1 {
return nil, fmt.Errorf("workflow has non-linear dependencies")
}
step = deps[0]
}
return t.wf.Steps[step], nil
}