Skip to content

Commit ef432c8

Browse files
committed
fix evalution
1 parent 69ebfed commit ef432c8

File tree

5 files changed

+150
-9
lines changed

5 files changed

+150
-9
lines changed

backend/modules/evaluation/domain/entity/evaluation.go

Lines changed: 0 additions & 4 deletions
This file was deleted.

backend/modules/evaluation/domain/entity/evaluation_set_schema.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func (p *FieldDisplayFormat) Scan(value interface{}) (err error) {
8888
var result sql.NullInt64
8989
err = result.Scan(value)
9090
*p = FieldDisplayFormat(result.Int64)
91-
return err
91+
return
9292
}
9393

9494
func (p *FieldDisplayFormat) Value() (driver.Value, error) {
@@ -130,7 +130,7 @@ func (p *FieldStatus) Scan(value interface{}) (err error) {
130130
var result sql.NullInt64
131131
err = result.Scan(value)
132132
*p = FieldStatus(result.Int64)
133-
return err
133+
return
134134
}
135135

136136
func (p *FieldStatus) Value() (driver.Value, error) {

backend/modules/evaluation/domain/entity/target.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func (p *EvalTargetType) Scan(value interface{}) (err error) {
7373
var result sql.NullInt64
7474
err = result.Scan(value)
7575
*p = EvalTargetType(result.Int64)
76-
return err
76+
return
7777
}
7878

7979
func (p *EvalTargetType) Value() (driver.Value, error) {

backend/modules/observability/domain/task/service/taskexe/tracehub/span_trigger_test.go

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,142 @@ func TestTraceHubServiceImpl_SpanTriggerDispatchError(t *testing.T) {
139139
require.Error(t, err)
140140
require.ErrorContains(t, err, "invoke error")
141141
}
142+
143+
func TestTraceHubServiceImpl_preDispatchHandlesUnstartedAndLimits(t *testing.T) {
144+
ctrl := gomock.NewController(t)
145+
t.Cleanup(ctrl.Finish)
146+
147+
mockRepo := repo_mocks.NewMockITaskRepo(ctrl)
148+
stubProc := &stubProcessor{}
149+
150+
now := time.Now()
151+
startAt := now.Add(-2 * time.Hour).UnixMilli()
152+
endAt := now.Add(-time.Minute).UnixMilli()
153+
workspaceID := int64(101)
154+
taskID := int64(202)
155+
156+
sampl := &task.Sampler{
157+
SampleRate: floatPtr(1),
158+
SampleSize: int64Ptr(1),
159+
IsCycle: boolPtr(true),
160+
CycleCount: int64Ptr(1),
161+
CycleInterval: int64Ptr(1),
162+
CycleTimeUnit: ptr.Of(task.TimeUnitDay),
163+
}
164+
rule := &task.Rule{
165+
EffectiveTime: &task.EffectiveTime{
166+
StartAt: ptr.Of(startAt),
167+
EndAt: ptr.Of(endAt),
168+
},
169+
Sampler: sampl,
170+
}
171+
172+
sub := &spanSubscriber{
173+
taskID: taskID,
174+
t: &task.Task{
175+
ID: ptr.Of(taskID),
176+
WorkspaceID: ptr.Of(workspaceID),
177+
TaskType: task.TaskTypeAutoEval,
178+
TaskStatus: ptr.Of(task.TaskStatusUnstarted),
179+
Rule: rule,
180+
BaseInfo: &common.BaseInfo{},
181+
},
182+
processor: stubProc,
183+
taskRepo: mockRepo,
184+
runType: task.TaskRunTypeNewData,
185+
}
186+
187+
taskRunConfig := &entity.TaskRun{
188+
ID: 303,
189+
TaskID: taskID,
190+
WorkspaceID: workspaceID,
191+
TaskType: task.TaskRunTypeNewData,
192+
RunStatus: task.TaskStatusRunning,
193+
RunStartAt: now.Add(-90 * time.Minute),
194+
RunEndAt: now.Add(-30 * time.Minute),
195+
}
196+
197+
mockRepo.EXPECT().GetLatestNewDataTaskRun(gomock.Any(), gomock.AssignableToTypeOf(ptr.Of(int64(0))), taskID).Return(taskRunConfig, nil)
198+
mockRepo.EXPECT().GetTaskCount(gomock.Any(), taskID).Return(int64(1), nil)
199+
mockRepo.EXPECT().GetTaskRunCount(gomock.Any(), taskID, taskRunConfig.ID).Return(int64(1), nil)
200+
201+
impl := &TraceHubServiceImpl{taskRepo: mockRepo}
202+
span := &loop_span.Span{
203+
StartTime: now.UnixMilli(),
204+
TraceID: "trace",
205+
SpanID: "span",
206+
}
207+
208+
err := impl.preDispatch(context.Background(), span, []*spanSubscriber{sub})
209+
require.NoError(t, err)
210+
require.Equal(t, 2, len(stubProc.createTaskRunReqs))
211+
require.Equal(t, startAt, stubProc.createTaskRunReqs[0].RunStartAt)
212+
require.True(t, stubProc.createTaskRunReqs[0].RunEndAt > startAt)
213+
require.Equal(t, taskRunConfig.RunEndAt.UnixMilli(), stubProc.createTaskRunReqs[1].RunStartAt)
214+
require.Equal(t, 1, stubProc.updateCallCount)
215+
require.Equal(t, 4, stubProc.finishChangeInvoked)
216+
require.Len(t, stubProc.finishChangeReqs, 4)
217+
require.True(t, stubProc.finishChangeReqs[0].IsFinish)
218+
require.True(t, stubProc.finishChangeReqs[1].IsFinish)
219+
require.False(t, stubProc.finishChangeReqs[2].IsFinish)
220+
require.False(t, stubProc.finishChangeReqs[3].IsFinish)
221+
}
222+
223+
func TestTraceHubServiceImpl_preDispatchHandlesMissingTaskRunConfig(t *testing.T) {
224+
ctrl := gomock.NewController(t)
225+
t.Cleanup(ctrl.Finish)
226+
227+
mockRepo := repo_mocks.NewMockITaskRepo(ctrl)
228+
stubProc := &stubProcessor{createTaskRunErr: errors.New("create run failed")}
229+
230+
now := time.Now()
231+
startAt := now.Add(-10 * time.Minute).UnixMilli()
232+
workspaceID := int64(303)
233+
taskID := int64(404)
234+
235+
sampl := &task.Sampler{
236+
IsCycle: boolPtr(true),
237+
CycleInterval: int64Ptr(2),
238+
CycleTimeUnit: ptr.Of(task.TimeUnitWeek),
239+
}
240+
rule := &task.Rule{
241+
EffectiveTime: &task.EffectiveTime{
242+
StartAt: ptr.Of(startAt),
243+
EndAt: ptr.Of(now.Add(time.Hour).UnixMilli()),
244+
},
245+
Sampler: sampl,
246+
}
247+
248+
sub := &spanSubscriber{
249+
taskID: taskID,
250+
t: &task.Task{
251+
ID: ptr.Of(taskID),
252+
WorkspaceID: ptr.Of(workspaceID),
253+
TaskType: task.TaskTypeAutoEval,
254+
TaskStatus: ptr.Of(task.TaskStatusRunning),
255+
Rule: rule,
256+
BaseInfo: &common.BaseInfo{},
257+
},
258+
processor: stubProc,
259+
taskRepo: mockRepo,
260+
runType: task.TaskRunTypeNewData,
261+
}
262+
263+
mockRepo.EXPECT().GetLatestNewDataTaskRun(gomock.Any(), gomock.AssignableToTypeOf(ptr.Of(int64(0))), taskID).Return(nil, nil)
264+
265+
impl := &TraceHubServiceImpl{taskRepo: mockRepo}
266+
span := &loop_span.Span{
267+
StartTime: now.UnixMilli(),
268+
TraceID: "trace",
269+
SpanID: "span",
270+
}
271+
272+
err := impl.preDispatch(context.Background(), span, []*spanSubscriber{sub})
273+
require.Error(t, err)
274+
require.ErrorContains(t, err, "task run config not found")
275+
require.Equal(t, 1, len(stubProc.createTaskRunReqs))
276+
require.Equal(t, startAt, stubProc.createTaskRunReqs[0].RunStartAt)
277+
expectedEnd := startAt + 2*7*24*time.Hour.Milliseconds()
278+
require.Equal(t, expectedEnd, stubProc.createTaskRunReqs[0].RunEndAt)
279+
require.Equal(t, 0, stubProc.finishChangeInvoked)
280+
}

backend/modules/observability/domain/task/service/taskexe/tracehub/test_helpers_test.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ type stubProcessor struct {
2626
createTaskRunErr error
2727
finishChangeInvoked int
2828
invokeCalled bool
29+
createTaskRunReqs []taskexe.OnCreateTaskRunChangeReq
30+
finishChangeReqs []taskexe.OnFinishTaskChangeReq
31+
updateCallCount int
2932
}
3033

3134
func (s *stubProcessor) ValidateConfig(context.Context, any) error {
@@ -42,15 +45,18 @@ func (s *stubProcessor) OnCreateTaskChange(context.Context, *entity.Observabilit
4245
}
4346

4447
func (s *stubProcessor) OnUpdateTaskChange(context.Context, *entity.ObservabilityTask, string) error {
48+
s.updateCallCount++
4549
return s.updateErr
4650
}
4751

48-
func (s *stubProcessor) OnFinishTaskChange(context.Context, taskexe.OnFinishTaskChangeReq) error {
52+
func (s *stubProcessor) OnFinishTaskChange(_ context.Context, req taskexe.OnFinishTaskChangeReq) error {
4953
s.finishChangeInvoked++
54+
s.finishChangeReqs = append(s.finishChangeReqs, req)
5055
return s.finishErr
5156
}
5257

53-
func (s *stubProcessor) OnCreateTaskRunChange(context.Context, taskexe.OnCreateTaskRunChangeReq) error {
58+
func (s *stubProcessor) OnCreateTaskRunChange(_ context.Context, req taskexe.OnCreateTaskRunChangeReq) error {
59+
s.createTaskRunReqs = append(s.createTaskRunReqs, req)
5460
return s.createTaskRunErr
5561
}
5662

0 commit comments

Comments
 (0)