func waitForJob(t *testing.T, jobAPIClient pps.JobAPIClient, job *pps.Job, timeoutSec int, expectError bool) *pps.JobInfo { for i := 0; i < timeoutSec; i++ { time.Sleep(1 * time.Second) jobInfo, err := jobAPIClient.InspectJob( context.Background(), &pps.InspectJobRequest{ Job: job, }, ) require.NoError(t, err) if len(jobInfo.JobStatus) == 0 { continue } jobStatus := jobInfo.JobStatus[0] protolog.Infof("status of job %s at %d seconds: %v", job.Id, i+1, jobInfo.JobStatus) switch jobStatus.Type { case pps.JobStatusType_JOB_STATUS_TYPE_ERROR: handleEndJobStatus(t, jobAPIClient, jobInfo) if !expectError { t.Fatalf("job %s had error", job.Id) } return jobInfo case pps.JobStatusType_JOB_STATUS_TYPE_SUCCESS: handleEndJobStatus(t, jobAPIClient, jobInfo) if expectError { t.Fatalf("job %s did not have error", job.Id) } return jobInfo } } t.Fatalf("job %s did not finish in %d seconds", job.Id, timeoutSec) return nil }
func handleEndJobStatusOutputStream(t *testing.T, jobAPIClient pps.JobAPIClient, jobInfo *pps.JobInfo, outputStream pps.OutputStream) { jobAPIGetJobLogsClient, err := jobAPIClient.GetJobLogs( context.Background(), &pps.GetJobLogsRequest{ Job: jobInfo.Job, OutputStream: outputStream, }, ) require.NoError(t, err) require.NoError(t, protostream.WriteFromStreamingBytesClient(jobAPIGetJobLogsClient, protolog.Writer())) }
func getJobForPipeline(t *testing.T, jobAPIClient pps.JobAPIClient, pipeline *pps.Pipeline) *pps.Job { jobInfos, err := jobAPIClient.ListJob( context.Background(), &pps.ListJobRequest{ Pipeline: pipeline, }, ) require.NoError(t, err) require.NotNil(t, jobInfos) require.Equal(t, 1, len(jobInfos.JobInfo)) return jobInfos.JobInfo[0].Job }
func createJob(t *testing.T, jobAPIClient pps.JobAPIClient, transform *pps.Transform, inputCommit *pfs.Commit, outputParentCommit *pfs.Commit) *pps.Job { job, err := jobAPIClient.CreateJob( context.Background(), &pps.CreateJobRequest{ Spec: &pps.CreateJobRequest_Transform{ Transform: transform, }, Input: inputCommit, OutputParent: outputParentCommit, }, ) require.NoError(t, err) return job }