func getFinalPipelineRunStatus(apiClient pps.ApiClient, pipelineRunID string) (*pps.PipelineRunStatus, error) { // TODO(pedge): not good ticker := time.NewTicker(time.Second) for i := 0; i < 20; i++ { <-ticker.C pipelineRunStatuses, err := apiClient.GetPipelineRunStatus( context.Background(), &pps.GetPipelineRunStatusRequest{ PipelineRunId: pipelineRunID, }, ) if err != nil { return nil, err } pipelineRunStatus := pipelineRunStatuses.PipelineRunStatus[0] protolog.Printf("status at tick %d: %v\n", i, pipelineRunStatus) switch pipelineRunStatus.PipelineRunStatusType { case pps.PipelineRunStatusType_PIPELINE_RUN_STATUS_TYPE_ERROR: return pipelineRunStatus, nil case pps.PipelineRunStatusType_PIPELINE_RUN_STATUS_TYPE_SUCCESS: return pipelineRunStatus, nil } } return nil, fmt.Errorf("did not get final pipeline status for %s", pipelineRunID) }
func testBasic(t *testing.T, apiClient pps.ApiClient) { _ = os.RemoveAll("/tmp/pachyderm-test") pipelineSource, err := apiClient.CreatePipelineSource( context.Background(), &pps.CreatePipelineSourceRequest{ PipelineSource: &pps.PipelineSource{ TypedPipelineSource: &pps.PipelineSource_GithubPipelineSource{ GithubPipelineSource: &pps.GithubPipelineSource{ ContextDir: "src/pps/server/testdata/basic", User: "******", Repository: "pachyderm", Branch: "master", }, }, }, }, ) require.NoError(t, err) pipeline, err := apiClient.CreateAndGetPipeline( context.Background(), &pps.CreateAndGetPipelineRequest{ PipelineSourceId: pipelineSource.Id, }, ) require.NoError(t, err) pipelineRun, err := apiClient.CreatePipelineRun( context.Background(), &pps.CreatePipelineRunRequest{ PipelineId: pipeline.Id, }, ) require.NoError(t, err) _, err = apiClient.StartPipelineRun( context.Background(), &pps.StartPipelineRunRequest{ PipelineRunId: pipelineRun.Id, }, ) require.NoError(t, err) pipelineRunID := pipelineRun.Id pipelineRunStatus, err := getFinalPipelineRunStatus(apiClient, pipelineRunID) require.NoError(t, err) require.Equal(t, pps.PipelineRunStatusType_PIPELINE_RUN_STATUS_TYPE_SUCCESS, pipelineRunStatus.PipelineRunStatusType) matches, err := filepath.Glob("/tmp/pachyderm-test/1-out/*") require.NoError(t, err) require.Equal( t, []string{ "/tmp/pachyderm-test/1-out/1.txt", "/tmp/pachyderm-test/1-out/10.txt", "/tmp/pachyderm-test/1-out/2.txt", "/tmp/pachyderm-test/1-out/20.txt", "/tmp/pachyderm-test/1-out/3.txt", "/tmp/pachyderm-test/1-out/30.txt", "/tmp/pachyderm-test/1-out/4.txt", "/tmp/pachyderm-test/1-out/40.txt", "/tmp/pachyderm-test/1-out/5.txt", "/tmp/pachyderm-test/1-out/50.txt", }, matches, ) matches, err = filepath.Glob("/tmp/pachyderm-test/2-out/*") require.NoError(t, err) require.Equal( t, []string{ "/tmp/pachyderm-test/2-out/1.txt.copy", "/tmp/pachyderm-test/2-out/10.txt.copy", "/tmp/pachyderm-test/2-out/2.txt.copy", "/tmp/pachyderm-test/2-out/20.txt.copy", "/tmp/pachyderm-test/2-out/3.txt.copy", "/tmp/pachyderm-test/2-out/30.txt.copy", "/tmp/pachyderm-test/2-out/4.txt.copy", "/tmp/pachyderm-test/2-out/40.txt.copy", "/tmp/pachyderm-test/2-out/5.txt.copy", "/tmp/pachyderm-test/2-out/50.txt.copy", }, matches, ) matches, err = filepath.Glob("/tmp/pachyderm-test/3-out/*") require.NoError(t, err) require.Equal( t, []string{ "/tmp/pachyderm-test/3-out/1.txt.copy3", "/tmp/pachyderm-test/3-out/10.txt.copy3", "/tmp/pachyderm-test/3-out/2.txt.copy3", "/tmp/pachyderm-test/3-out/20.txt.copy3", "/tmp/pachyderm-test/3-out/3.txt.copy3", "/tmp/pachyderm-test/3-out/30.txt.copy3", "/tmp/pachyderm-test/3-out/4.txt.copy3", "/tmp/pachyderm-test/3-out/40.txt.copy3", "/tmp/pachyderm-test/3-out/5.txt.copy3", "/tmp/pachyderm-test/3-out/50.txt.copy3", }, matches, ) matches, err = filepath.Glob("/tmp/pachyderm-test/4-out/*") require.NoError(t, err) require.Equal( t, []string{ "/tmp/pachyderm-test/4-out/1.txt.copy4", "/tmp/pachyderm-test/4-out/10.txt.copy4", "/tmp/pachyderm-test/4-out/2.txt.copy4", "/tmp/pachyderm-test/4-out/20.txt.copy4", "/tmp/pachyderm-test/4-out/3.txt.copy4", "/tmp/pachyderm-test/4-out/30.txt.copy4", "/tmp/pachyderm-test/4-out/4.txt.copy4", "/tmp/pachyderm-test/4-out/40.txt.copy4", "/tmp/pachyderm-test/4-out/5.txt.copy4", "/tmp/pachyderm-test/4-out/50.txt.copy4", "/tmp/pachyderm-test/4-out/build-file.txt4", }, matches, ) matches, err = filepath.Glob("/tmp/pachyderm-test/5-out/*") require.NoError(t, err) require.Equal( t, []string{ "/tmp/pachyderm-test/5-out/1.txt.copy3", "/tmp/pachyderm-test/5-out/1.txt.copy4", "/tmp/pachyderm-test/5-out/10.txt.copy3", "/tmp/pachyderm-test/5-out/10.txt.copy4", "/tmp/pachyderm-test/5-out/2.txt.copy3", "/tmp/pachyderm-test/5-out/2.txt.copy4", "/tmp/pachyderm-test/5-out/20.txt.copy3", "/tmp/pachyderm-test/5-out/20.txt.copy4", "/tmp/pachyderm-test/5-out/3.txt.copy3", "/tmp/pachyderm-test/5-out/3.txt.copy4", "/tmp/pachyderm-test/5-out/30.txt.copy3", "/tmp/pachyderm-test/5-out/30.txt.copy4", "/tmp/pachyderm-test/5-out/4.txt.copy3", "/tmp/pachyderm-test/5-out/4.txt.copy4", "/tmp/pachyderm-test/5-out/40.txt.copy3", "/tmp/pachyderm-test/5-out/40.txt.copy4", "/tmp/pachyderm-test/5-out/5.txt.copy3", "/tmp/pachyderm-test/5-out/5.txt.copy4", "/tmp/pachyderm-test/5-out/50.txt.copy3", "/tmp/pachyderm-test/5-out/50.txt.copy4", "/tmp/pachyderm-test/5-out/build-file.txt4", "/tmp/pachyderm-test/5-out/build-file2.txt", }, matches, ) }