You are viewing a plain text version of this content. The canonical link for it is here.
Posted to github@beam.apache.org by GitBox <gi...@apache.org> on 2021/12/03 07:41:34 UTC

[GitHub] [beam] youngoli commented on pull request #16111: WIP [BEAM-13293] XLang Jdbc IO for Go SDK

youngoli commented on pull request #16111:
URL: https://github.com/apache/beam/pull/16111#issuecomment-985284872


   I think I figured out the problem you're having. I noticed that when I ran this, the SDK harness was outputting "PASS". This means it's running tests in the SDK harness instead of acting as an SDK harness, which led me to find the culprit:
   
   You need the following code in your test file:
   ```
   func TestMain(m *testing.M) {
   	ptest.Main(m)
   }
   ```
   To give a short version of why, the SDK harness is actually executing the exact binary that the code is originally executed from. Normally in our files we have a call in beam.Init to check if it's the SDK harness or user code, and if the binary is run as the SDK harness it behaves differently.
   
   To get the same thing working for our tests, we need to replace TestMain with ptest.Main, otherwise it will try to execute all the tests before we can run beam.Init. ptest.Main handles that for us by calling beam.Init before deferring to the normal TestMain behavior. This means any kind of integration test we write for the Go SDK needs to call that snippet, or something equivalent, because we absolutely need beam.Init to get called before going to the normal test framework logic, otherwise SDK harnesses built for those integration tests will attempt to run tests instead of actually act as an SDK harness.


-- 
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