diff --git a/restream/restream.go b/restream/restream.go index 4ca75754..b3febfaa 100644 --- a/restream/restream.go +++ b/restream/restream.go @@ -1041,6 +1041,8 @@ func (r *restream) UpdateProcess(id string, config *app.Config) error { } } + t.process.Order = task.process.Order + if err := r.stopProcess(id); err != nil { return err } @@ -1053,7 +1055,6 @@ func (r *restream) UpdateProcess(id string, config *app.Config) error { //t.process.CreatedAt = task.process.CreatedAt t.process.UpdatedAt = time.Now().Unix() task.parser.TransferReportHistory(t.parser) - t.process.Order = task.process.Order r.tasks[t.id] = t diff --git a/restream/restream_test.go b/restream/restream_test.go index e6e15092..41d38cc9 100644 --- a/restream/restream_test.go +++ b/restream/restream_test.go @@ -256,6 +256,56 @@ func TestUpdateProcess(t *testing.T) { require.NotEqual(t, updatedAt, process.UpdatedAt) } +func TestUpdateProcessLogHistoryTransfer(t *testing.T) { + rs, err := getDummyRestreamer(nil, nil, nil, nil) + require.NoError(t, err) + + p := getDummyProcess() + require.NotNil(t, p) + p.ID = "process1" + + err = rs.AddProcess(p) + require.Equal(t, nil, err) + + rs.StartProcess(p.ID) + + require.Eventually(t, func() bool { + state, _ := rs.GetProcessState(p.ID) + return state.State == "running" + }, 10*time.Second, time.Second) + + log, err := rs.GetProcessLog(p.ID) + require.NoError(t, err) + + require.Equal(t, 0, len(log.History)) + + p = getDummyProcess() + require.NotNil(t, p) + + p.ID = "process2" + err = rs.UpdateProcess("process1", p) + require.NoError(t, err) + + _, err = rs.GetProcess(p.ID) + require.NoError(t, err) + + state, _ := rs.GetProcessState(p.ID) + require.Equal(t, "start", state.Order) + + require.Eventually(t, func() bool { + state, _ := rs.GetProcessState(p.ID) + return state.State == "running" + }, 10*time.Second, time.Second) + + log, err = rs.GetProcessLog(p.ID) + require.NoError(t, err) + + require.Equal(t, 1, len(log.History)) + + err = rs.StopProcess(p.ID) + require.NoError(t, err) +} + func TestGetProcess(t *testing.T) { rs, err := getDummyRestreamer(nil, nil, nil, nil) require.NoError(t, err)