(t *testing.T)
| 1068 | } |
| 1069 | |
| 1070 | func TestTrialLogFields(t *testing.T) { |
| 1071 | api, curUser, ctx := setupAPITest(t, nil) |
| 1072 | trial, task0 := createTestTrial(t, api, curUser) |
| 1073 | |
| 1074 | task1 := &model.Task{ |
| 1075 | TaskType: model.TaskTypeTrial, |
| 1076 | LogVersion: model.TaskLogVersion1, |
| 1077 | StartTime: task0.StartTime.Add(time.Second), |
| 1078 | TaskID: trialTaskID(trial.ExperimentID, model.NewRequestID(rand.Reader)), |
| 1079 | } |
| 1080 | require.NoError(t, db.AddTask(ctx, task1)) |
| 1081 | |
| 1082 | task2 := &model.Task{ |
| 1083 | TaskType: model.TaskTypeTrial, |
| 1084 | LogVersion: model.TaskLogVersion1, |
| 1085 | StartTime: task1.StartTime.Add(time.Second), |
| 1086 | TaskID: trialTaskID(trial.ExperimentID, model.NewRequestID(rand.Reader)), |
| 1087 | } |
| 1088 | require.NoError(t, db.AddTask(ctx, task2)) |
| 1089 | |
| 1090 | _, err := db.Bun().NewInsert().Model(&[]model.RunTaskID{ |
| 1091 | {RunID: trial.ID, TaskID: task1.TaskID}, |
| 1092 | {RunID: trial.ID, TaskID: task2.TaskID}, |
| 1093 | }).Exec(ctx) |
| 1094 | require.NoError(t, err) |
| 1095 | |
| 1096 | expectedContainerIDs := make(map[string]bool) |
| 1097 | tasks := []model.TaskID{task0.TaskID, task1.TaskID, task2.TaskID} |
| 1098 | var taskLogs []*model.TaskLog |
| 1099 | for i, taskID := range tasks { |
| 1100 | containerID := fmt.Sprintf("id-%d", i) |
| 1101 | taskLogs = append(taskLogs, &model.TaskLog{ |
| 1102 | TaskID: string(taskID), |
| 1103 | Log: "test log", |
| 1104 | ContainerID: ptrs.Ptr(containerID), |
| 1105 | }) |
| 1106 | expectedContainerIDs[containerID] = true |
| 1107 | } |
| 1108 | require.NoError(t, api.m.db.AddTaskLogs(taskLogs)) |
| 1109 | |
| 1110 | stream := &mockStream[*apiv1.TrialLogsFieldsResponse]{ctx: ctx} |
| 1111 | |
| 1112 | err = api.TrialLogsFields(&apiv1.TrialLogsFieldsRequest{ |
| 1113 | TrialId: int32(trial.ID), |
| 1114 | }, stream) |
| 1115 | require.NoError(t, err) |
| 1116 | |
| 1117 | actualContainerIDs := make(map[string]bool) |
| 1118 | for _, s := range stream.getData() { |
| 1119 | for _, containerID := range s.ContainerIds { |
| 1120 | actualContainerIDs[containerID] = true |
| 1121 | } |
| 1122 | } |
| 1123 | require.Equal(t, expectedContainerIDs, actualContainerIDs) |
| 1124 | |
| 1125 | // Retry with follow. |
| 1126 | newStream := &mockStream[*apiv1.TrialLogsFieldsResponse]{ctx: ctx} |
| 1127 | done := make(chan error, 1) |
nothing calls this directly
no test coverage detected