You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@beam.apache.org by "lostluck (via GitHub)" <gi...@apache.org> on 2023/05/24 23:25:57 UTC

[GitHub] [beam] lostluck opened a new pull request, #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

lostluck opened a new pull request, #26882:
URL: https://github.com/apache/beam/pull/26882

   It's valuable for Prism to clearly and eagerly fail on pipelines it doesn't support, whenever possible. And since we already have an abundance of integration tests for this, lightly refactor them to be used.
   
   This change affects many files, but most of them are is mechanical and aimed at simplifying testing Prism.
   
   This is a necessary pre-cursor for finishing up the support in Prism before trying to get other SDKs using Prism.
   
   Changes herein:
   
   * Add a `ptest.BuildAndRun`, which accepts a `func(s beam.Scope)`. 
     * This testing approach avoids the vestigial "create pipeline, and then execute it", given we hang everything off of the scope. See https://s.apache.org/no-beam-pipeline for rationale, but this may evolve before it becomes a standard around runner wrappers.
     * Light refactor to many of the integration test pipelines to be built in a `func(s beam.Scope)` to be able to use `ptest.BuildAndRun`.
       * Not done to all integration tests yet, just the ones Prism doesn't yet support.
   * Delete the long decommissioned and unused "driver" main for integration tests.
   * Fail jobs on unimplemented features. 
     * Reasons for failures are clearly related through the Create Job failure message.
     * Explicitly check windowing strategies vs the Go SDK default settings, since they aren't yet handled by prism.
     * Explicitly check each PTransform URN against a set list to filter out unknown "standard" transforms. 
       * This avoids pipelines spuriously passing with transforms like TestStream, PubSub.
   * Makes prism tests set the JobName from the test name, so it's obvious what test case is being run.
   
   Discovered weird/broken behavior WRT flatten handling. To be resolved at a later time.
   
   ------------------------
   
   Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:
   
    - [ ] Mention the appropriate issue in your description (for example: `addresses #123`), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment `fixes #<ISSUE NUMBER>` instead.
    - [ ] Update `CHANGES.md` with noteworthy changes.
    - [ ] If this contribution is large, please file an Apache [Individual Contributor License Agreement](https://www.apache.org/licenses/icla.pdf).
   
   See the [Contributor Guide](https://beam.apache.org/contribute) for more tips on [how to make review process smoother](https://beam.apache.org/contribute/get-started-contributing/#make-the-reviewers-job-easier).
   
   To check the build health, please visit [https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md](https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md)
   
   GitHub Actions Tests Status (on master branch)
   ------------------------------------------------------------------------------------------------
   [![Build python source distribution and wheels](https://github.com/apache/beam/workflows/Build%20python%20source%20distribution%20and%20wheels/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Build+python+source+distribution+and+wheels%22+branch%3Amaster+event%3Aschedule)
   [![Python tests](https://github.com/apache/beam/workflows/Python%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Python+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Java tests](https://github.com/apache/beam/workflows/Java%20Tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Java+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Go tests](https://github.com/apache/beam/workflows/Go%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Go+tests%22+branch%3Amaster+event%3Aschedule)
   
   See [CI.md](https://github.com/apache/beam/blob/master/CI.md) for more information about GitHub Actions CI.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] jrmccluskey commented on a diff in pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "jrmccluskey (via GitHub)" <gi...@apache.org>.
jrmccluskey commented on code in PR #26882:
URL: https://github.com/apache/beam/pull/26882#discussion_r1210399327


##########
sdks/go/test/integration/primitives/checkpointing_test.go:
##########
@@ -18,15 +18,11 @@ package primitives
 import (
 	"testing"
 
-	"github.com/apache/beam/sdks/v2/go/pkg/beam"
 	"github.com/apache/beam/sdks/v2/go/pkg/beam/testing/ptest"
 	"github.com/apache/beam/sdks/v2/go/test/integration"
 )
 
 func TestCheckpointing(t *testing.T) {
 	integration.CheckFilters(t)
-
-	p, s := beam.NewPipelineWithRoot()
-	Checkpoints(s)
-	ptest.RunAndValidate(t, p)
+	ptest.BuildAndRun(t, Checkpoints)

Review Comment:
   I really like the cleanliness of this new pattern



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] jrmccluskey commented on a diff in pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "jrmccluskey (via GitHub)" <gi...@apache.org>.
jrmccluskey commented on code in PR #26882:
URL: https://github.com/apache/beam/pull/26882#discussion_r1210397840


##########
sdks/go/pkg/beam/runners/prism/internal/unimplemented_test.go:
##########
@@ -0,0 +1,104 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package internal
+
+import (
+	"context"
+	"strings"
+	"testing"
+
+	"github.com/apache/beam/sdks/v2/go/pkg/beam"
+	"github.com/apache/beam/sdks/v2/go/pkg/beam/core/util/reflectx"
+	"github.com/apache/beam/sdks/v2/go/test/integration/primitives"
+)
+
+// This file covers pipelines with features that aren't yet supported by Prism.
+
+func intTestName(fn any) string {
+	name := reflectx.FunctionName(fn)
+	n := strings.LastIndex(name, "/")
+	return name[n+1:]
+}
+
+// TestUnimplemented validates that the kinds of pipelines that are expected
+// to fail due to unimplemented features, do.
+func TestUnimplemented(t *testing.T) {

Review Comment:
   Not a blocker by any means, but are there individual issues filed to implement different elements of these? 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] lostluck commented on pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "lostluck (via GitHub)" <gi...@apache.org>.
lostluck commented on PR #26882:
URL: https://github.com/apache/beam/pull/26882#issuecomment-1568731394

   Thanks for the review!


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] lostluck commented on a diff in pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "lostluck (via GitHub)" <gi...@apache.org>.
lostluck commented on code in PR #26882:
URL: https://github.com/apache/beam/pull/26882#discussion_r1210529651


##########
sdks/go/pkg/beam/runners/prism/internal/unimplemented_test.go:
##########
@@ -0,0 +1,104 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package internal
+
+import (
+	"context"
+	"strings"
+	"testing"
+
+	"github.com/apache/beam/sdks/v2/go/pkg/beam"
+	"github.com/apache/beam/sdks/v2/go/pkg/beam/core/util/reflectx"
+	"github.com/apache/beam/sdks/v2/go/test/integration/primitives"
+)
+
+// This file covers pipelines with features that aren't yet supported by Prism.
+
+func intTestName(fn any) string {
+	name := reflectx.FunctionName(fn)
+	n := strings.LastIndex(name, "/")
+	return name[n+1:]
+}
+
+// TestUnimplemented validates that the kinds of pipelines that are expected
+// to fail due to unimplemented features, do.
+func TestUnimplemented(t *testing.T) {

Review Comment:
   Not yet. This is largely pre-work to doing that to organize it nicely.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] lostluck merged pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "lostluck (via GitHub)" <gi...@apache.org>.
lostluck merged PR #26882:
URL: https://github.com/apache/beam/pull/26882


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] github-actions[bot] commented on pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #26882:
URL: https://github.com/apache/beam/pull/26882#issuecomment-1562050799

   Stopping reviewer notifications for this pull request: review requested by someone other than the bot, ceding control


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] lostluck commented on pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "lostluck (via GitHub)" <gi...@apache.org>.
lostluck commented on PR #26882:
URL: https://github.com/apache/beam/pull/26882#issuecomment-1562050210

   R: @jrmccluskey 
   
   (Because Ritesh is busy with the 2.48.0 release, and also my large Timer fit & finish PR).


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] jrmccluskey commented on pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "jrmccluskey (via GitHub)" <gi...@apache.org>.
jrmccluskey commented on PR #26882:
URL: https://github.com/apache/beam/pull/26882#issuecomment-1568580902

   Run Go Flink ValidatesRunner


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [beam] lostluck commented on a diff in pull request #26882: [Go SDK][Prism] Prism fails pipelines that use features unimplemented in Prism.

Posted by "lostluck (via GitHub)" <gi...@apache.org>.
lostluck commented on code in PR #26882:
URL: https://github.com/apache/beam/pull/26882#discussion_r1210531827


##########
sdks/go/test/integration/primitives/checkpointing_test.go:
##########
@@ -18,15 +18,11 @@ package primitives
 import (
 	"testing"
 
-	"github.com/apache/beam/sdks/v2/go/pkg/beam"
 	"github.com/apache/beam/sdks/v2/go/pkg/beam/testing/ptest"
 	"github.com/apache/beam/sdks/v2/go/test/integration"
 )
 
 func TestCheckpointing(t *testing.T) {
 	integration.CheckFilters(t)
-
-	p, s := beam.NewPipelineWithRoot()
-	Checkpoints(s)
-	ptest.RunAndValidate(t, p)
+	ptest.BuildAndRun(t, Checkpoints)

Review Comment:
   I've been leaning this way for a long time too, and it will mesh nicely with a proper options per-pipeline specifier, rather than *everything is flags*.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscribe@beam.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org