You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@beam.apache.org by "Udi Meiri (Jira)" <ji...@apache.org> on 2020/10/01 19:32:00 UTC

[jira] [Commented] (BEAM-9026) ValueProviderTests test failures

    [ https://issues.apache.org/jira/browse/BEAM-9026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17205784#comment-17205784 ] 

Udi Meiri commented on BEAM-9026:
---------------------------------

I think the issue is that when ValueProviderTests.test_set_runtime_option runs before FlinkUberJarJobServerTest.test_retain_unknown_options in the same process (pytest-xdist randomizes this), the former's UserDefinedOptions1 class is still picked up here:
https://github.com/apache/beam/blob/869ebee4d4f1f3cf0e8c7571037f53d4c1a76b76/sdks/python/apache_beam/options/pipeline_options.py#L199-L203

I wonder if there's a way to remove it from the list. Perhaps del UserDefinedOptions1?

> ValueProviderTests test failures
> --------------------------------
>
>                 Key: BEAM-9026
>                 URL: https://issues.apache.org/jira/browse/BEAM-9026
>             Project: Beam
>          Issue Type: Bug
>          Components: sdk-py-core, test-failures
>            Reporter: Udi Meiri
>            Assignee: Udi Meiri
>            Priority: P2
>             Fix For: Not applicable
>
>          Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> It seems that there's an ordering issue with these tests, where they expect RuntimeValueProvider.runtime_options to be None, but it has already been initialized by another test.
> {code}
> 13:49:31  ______ ValueProviderTests.test_runtime_value_provider_positional_argument ______
> 13:49:31  [gw1] linux -- Python 3.6.8 /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_Commit/src/sdks/python/test-suites/tox/py36/build/srcs/sdks/python/target/.tox-py36-gcp-pytest/py36-gcp-pytest/bin/python
> 13:49:31  
> 13:49:31  self = <apache_beam.options.value_provider_test.ValueProviderTests testMethod=test_runtime_value_provider_positional_argument>
> 13:49:31  
> 13:49:31      def test_runtime_value_provider_positional_argument(self):
> 13:49:31        class UserDefinedOptions(PipelineOptions):
> 13:49:31          @classmethod
> 13:49:31          def _add_argparse_args(cls, parser):
> 13:49:31            parser.add_value_provider_argument(
> 13:49:31                'vpt_vp_arg4',
> 13:49:31                help='This positional argument is a value provider')
> 13:49:31        options = UserDefinedOptions([])
> 13:49:31        self.assertTrue(isinstance(options.vpt_vp_arg4, RuntimeValueProvider))
> 13:49:31  >     self.assertFalse(options.vpt_vp_arg4.is_accessible())
> 13:49:31  E     AssertionError: True is not false
> 13:49:31  
> 13:49:31  apache_beam/options/value_provider_test.py:85: AssertionError
> 13:49:31  __________________ ValueProviderTests.test_set_runtime_option __________________
> 13:49:31  [gw1] linux -- Python 3.6.8 /home/jenkins/jenkins-slave/workspace/beam_PreCommit_Python_Commit/src/sdks/python/test-suites/tox/py36/build/srcs/sdks/python/target/.tox-py36-gcp-pytest/py36-gcp-pytest/bin/python
> 13:49:31  
> 13:49:31  self = <apache_beam.options.value_provider_test.ValueProviderTests testMethod=test_set_runtime_option>
> 13:49:31  
> 13:49:31      def test_set_runtime_option(self):
> 13:49:31        # define ValueProvider options, with and without default values
> 13:49:31        class UserDefinedOptions1(PipelineOptions):
> 13:49:31          @classmethod
> 13:49:31          def _add_argparse_args(cls, parser):
> 13:49:31            parser.add_value_provider_argument(
> 13:49:31                '--vpt_vp_arg6',
> 13:49:31                help='This keyword argument is a value provider')   # set at runtime
> 13:49:31      
> 13:49:31            parser.add_value_provider_argument(         # not set, had default int
> 13:49:31                '-v', '--vpt_vp_arg7',                      # with short form
> 13:49:31                default=123,
> 13:49:31                type=int)
> 13:49:31      
> 13:49:31            parser.add_value_provider_argument(         # not set, had default str
> 13:49:31                '--vpt_vp-arg8',                            # with dash in name
> 13:49:31                default='123',
> 13:49:31                type=str)
> 13:49:31      
> 13:49:31            parser.add_value_provider_argument(         # not set and no default
> 13:49:31                '--vpt_vp_arg9',
> 13:49:31                type=float)
> 13:49:31      
> 13:49:31            parser.add_value_provider_argument(         # positional argument set
> 13:49:31                'vpt_vp_arg10',                         # default & runtime ignored
> 13:49:31                help='This positional argument is a value provider',
> 13:49:31                type=float,
> 13:49:31                default=5.4)
> 13:49:31      
> 13:49:31        # provide values at graph-construction time
> 13:49:31        # (options not provided here become of the type RuntimeValueProvider)
> 13:49:31        options = UserDefinedOptions1(['1.2'])
> 13:49:31  >     self.assertFalse(options.vpt_vp_arg6.is_accessible())
> 13:49:31  E     AssertionError: True is not false
> 13:49:31  
> 13:49:31  apache_beam/options/value_provider_test.py:135: AssertionError
> {code}
> https://builds.apache.org/job/beam_PreCommit_Python_Commit/10566/timestamps/?time=HH:mm:ss&timeZone=GMT-8&appendLog&locale=en_US



--
This message was sent by Atlassian Jira
(v8.3.4#803005)