forked from dagu-org/dagu
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
retry_test.go
73 lines (60 loc) · 1.99 KB
/
retry_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package main
import (
"fmt"
"testing"
"time"
"github.com/yohamta/dagu/internal/controller"
"github.com/yohamta/dagu/internal/database"
"github.com/yohamta/dagu/internal/models"
"github.com/yohamta/dagu/internal/scheduler"
"github.com/stretchr/testify/require"
)
func Test_retryCommand(t *testing.T) {
app := makeApp()
configPath := testConfig("retry.yaml")
runAppTestOutput(app, appTest{
args: []string{"", "start", "--params=x", configPath}, errored: true,
output: []string{},
}, t)
dr := controller.NewDAGStatusReader()
dag, err := dr.ReadStatus(configPath, false)
require.NoError(t, err)
require.Equal(t, dag.Status.Status, scheduler.SchedulerStatus_Success)
db := database.Database{
Config: database.DefaultConfig(),
}
status, err := db.FindByRequestId(configPath, dag.Status.RequestId)
require.NoError(t, err)
status.Status.Nodes[0].Status = scheduler.NodeStatus_Error
status.Status.Status = scheduler.SchedulerStatus_Error
w := &database.Writer{Target: status.File}
require.NoError(t, w.Open())
require.NoError(t, w.Write(status.Status))
require.NoError(t, w.Close())
time.Sleep(time.Millisecond * 1000)
app = makeApp()
runAppTestOutput(app, appTest{
args: []string{"", "retry", fmt.Sprintf("--req=%s",
dag.Status.RequestId), testConfig("retry.yaml")}, errored: false,
output: []string{"parameter is x"},
}, t)
c := controller.NewDAGController(dag.DAG)
var retryStatus *models.Status
require.Eventually(t, func() bool {
retryStatus, err = c.GetLastStatus()
if err != nil {
return false
}
return retryStatus.Status == scheduler.SchedulerStatus_Success
}, time.Millisecond*3000, time.Millisecond*100)
require.NoError(t, err)
require.NotEqual(t, retryStatus.RequestId, dag.Status.RequestId)
}
func Test_retryFail(t *testing.T) {
app := makeApp()
runAppTestOutput(app, appTest{
args: []string{"", "retry", fmt.Sprintf("--req=%s",
"invalid-request-id"), testConfig("retry.yaml")}, errored: true,
errMessage: []string{"request id not found"},
}, t)
}