From 918ab138976bedaad3d04f64344065ab8e2320e9 Mon Sep 17 00:00:00 2001 From: yohamta Date: Mon, 22 Aug 2022 15:46:01 +0900 Subject: [PATCH] internal/dag: fix bug --- internal/dag/dag.go | 6 +++--- internal/dag/definition.go | 2 +- internal/dag/loader_test.go | 36 +++++++++++++++++++++++++++++++++ internal/dag/step.go | 2 +- internal/scheduler/node.go | 4 ++-- internal/scheduler/node_test.go | 2 +- 6 files changed, 44 insertions(+), 8 deletions(-) diff --git a/internal/dag/dag.go b/internal/dag/dag.go index 350c0c355..1ab2f4218 100644 --- a/internal/dag/dag.go +++ b/internal/dag/dag.go @@ -477,13 +477,13 @@ func (b *builder) buildStep(variables []string, def *stepDef) (*Step, error) { step.RepeatPolicy.Repeat = def.RepeatPolicy.Repeat step.RepeatPolicy.Interval = time.Second * time.Duration(def.RepeatPolicy.IntervalSec) } - if def.SignalOnStep != nil { - sigDef := *def.SignalOnStep + if def.SignalOnStop != nil { + sigDef := *def.SignalOnStop sig := unix.SignalNum(sigDef) if sig == 0 { return nil, fmt.Errorf("invalid signal: %s", sigDef) } - step.SignalOnStep = sigDef + step.SignalOnStop = sigDef } step.MailOnError = def.MailOnError step.Preconditions = loadPreCondition(def.Preconditions) diff --git a/internal/dag/definition.go b/internal/dag/definition.go index e398f446d..65346900b 100644 --- a/internal/dag/definition.go +++ b/internal/dag/definition.go @@ -49,7 +49,7 @@ type stepDef struct { RepeatPolicy *repeatPolicyDef MailOnError bool Preconditions []*conditionDef - SignalOnStep *string + SignalOnStop *string } type continueOnDef struct { diff --git a/internal/dag/loader_test.go b/internal/dag/loader_test.go index 8f452d950..07673f5a9 100644 --- a/internal/dag/loader_test.go +++ b/internal/dag/loader_test.go @@ -1,6 +1,7 @@ package dag import ( + "fmt" "path" "testing" "time" @@ -81,6 +82,41 @@ steps: require.Error(t, err) } +func TestLoadSignalOnStop(t *testing.T) { + for _, tc := range []struct { + sig string + want string + err bool + }{ + { + sig: "SIGINT", + want: "SIGINT", + err: false, + }, + { + sig: "2000", + err: true, + }, + } { + dat := fmt.Sprintf(`name: test DAG +steps: + - name: "1" + command: "true" + signalOnStop: "%s" +`, tc.sig) + l := &Loader{} + ret, err := l.LoadData([]byte(dat)) + if tc.err { + require.Error(t, err) + continue + } + require.NoError(t, err) + + step := ret.Steps[0] + require.Equal(t, step.SignalOnStop, tc.want) + } +} + func TestLoadErrorFileNotExist(t *testing.T) { l := &Loader{} _, err := l.Load(path.Join(testDir, "not_existing_file.yaml"), "") diff --git a/internal/dag/step.go b/internal/dag/step.go index d5f444cd1..bd78e4bab 100644 --- a/internal/dag/step.go +++ b/internal/dag/step.go @@ -27,7 +27,7 @@ type Step struct { RepeatPolicy RepeatPolicy MailOnError bool Preconditions []*Condition - SignalOnStep string + SignalOnStop string } type RetryPolicy struct { diff --git a/internal/scheduler/node.go b/internal/scheduler/node.go index 703a37a57..4623d2f0a 100644 --- a/internal/scheduler/node.go +++ b/internal/scheduler/node.go @@ -184,8 +184,8 @@ func (n *Node) signal(sig os.Signal, allowOverride bool) { status := n.Status if status == NodeStatus_Running && n.cmd != nil { sigsig := sig - if allowOverride && n.Step.SignalOnStep != "" { - sigsig = unix.SignalNum(n.Step.SignalOnStep) + if allowOverride && n.Step.SignalOnStop != "" { + sigsig = unix.SignalNum(n.Step.SignalOnStop) } log.Printf("Sending %s signal to %s", sigsig, n.Name) utils.LogErr("sending signal", n.cmd.Kill(sigsig)) diff --git a/internal/scheduler/node_test.go b/internal/scheduler/node_test.go index 9101dc3bb..5060623c0 100644 --- a/internal/scheduler/node_test.go +++ b/internal/scheduler/node_test.go @@ -61,7 +61,7 @@ func TestSignalSpecified(t *testing.T) { Command: "sleep", Args: []string{"100"}, OutputVariables: &sync.Map{}, - SignalOnStep: "SIGINT", + SignalOnStop: "SIGINT", }} go func() {