(t *testing.T)
| 974 | } |
| 975 | |
| 976 | func TestTrialLogs(t *testing.T) { |
| 977 | api, curUser, ctx := setupAPITest(t, nil) |
| 978 | trial, task0 := createTestTrial(t, api, curUser) |
| 979 | |
| 980 | task1 := &model.Task{ |
| 981 | TaskType: model.TaskTypeTrial, |
| 982 | LogVersion: model.TaskLogVersion1, |
| 983 | StartTime: task0.StartTime.Add(time.Second), |
| 984 | TaskID: trialTaskID(trial.ExperimentID, model.NewRequestID(rand.Reader)), |
| 985 | } |
| 986 | require.NoError(t, db.AddTask(ctx, task1)) |
| 987 | |
| 988 | task2 := &model.Task{ |
| 989 | TaskType: model.TaskTypeTrial, |
| 990 | LogVersion: model.TaskLogVersion1, |
| 991 | StartTime: task1.StartTime.Add(time.Second), |
| 992 | TaskID: trialTaskID(trial.ExperimentID, model.NewRequestID(rand.Reader)), |
| 993 | } |
| 994 | require.NoError(t, db.AddTask(ctx, task2)) |
| 995 | |
| 996 | _, err := db.Bun().NewInsert().Model(&[]model.RunTaskID{ |
| 997 | {RunID: trial.ID, TaskID: task1.TaskID}, |
| 998 | {RunID: trial.ID, TaskID: task2.TaskID}, |
| 999 | }).Exec(ctx) |
| 1000 | require.NoError(t, err) |
| 1001 | |
| 1002 | var expected []string |
| 1003 | tasks := []model.TaskID{task0.TaskID, task1.TaskID, task2.TaskID} |
| 1004 | var taskLogs []*model.TaskLog |
| 1005 | for i, taskID := range tasks { |
| 1006 | for j := 0; j < 9; j++ { |
| 1007 | log := fmt.Sprintf("%d-%d\n", i, j) |
| 1008 | taskLogs = append(taskLogs, &model.TaskLog{TaskID: string(taskID), Log: log}) |
| 1009 | expected = append(expected, log) |
| 1010 | } |
| 1011 | } |
| 1012 | require.NoError(t, api.m.db.AddTaskLogs(taskLogs)) |
| 1013 | |
| 1014 | stream := &mockStream[*apiv1.TrialLogsResponse]{ctx: ctx} |
| 1015 | |
| 1016 | err = api.TrialLogs(&apiv1.TrialLogsRequest{ |
| 1017 | TrialId: int32(trial.ID), |
| 1018 | }, stream) |
| 1019 | require.NoError(t, err) |
| 1020 | |
| 1021 | require.Len(t, stream.data, len(expected)) |
| 1022 | for i, expected := range expected { |
| 1023 | require.Equal(t, expected, *stream.data[i].Log) |
| 1024 | } |
| 1025 | |
| 1026 | // Retry with follow. |
| 1027 | newStream := &mockStream[*apiv1.TrialLogsResponse]{ctx: ctx} |
| 1028 | done := make(chan error, 1) |
| 1029 | go func() { |
| 1030 | done <- api.TrialLogs(&apiv1.TrialLogsRequest{ |
| 1031 | TrialId: int32(trial.ID), |
| 1032 | Follow: true, |
| 1033 | }, newStream) |
nothing calls this directly
no test coverage detected