Repository: beam Updated Branches: refs/heads/master bd83612f2 -> e906fe9c3
Make unique test names for value-provider arguments Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/b547b5a1 Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/b547b5a1 Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/b547b5a1 Branch: refs/heads/master Commit: b547b5a1eee61e293ff2f8ccfac57f308867328c Parents: bd83612 Author: Maria Garcia Herrero <mari...@google.com> Authored: Fri Jun 9 23:34:59 2017 -0700 Committer: Ahmet Altay <al...@google.com> Committed: Tue Jun 13 09:34:06 2017 -0700 ---------------------------------------------------------------------- .../options/pipeline_options_test.py | 39 ++++---- .../apache_beam/options/value_provider_test.py | 93 +++++++++++--------- 2 files changed, 71 insertions(+), 61 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/b547b5a1/sdks/python/apache_beam/options/pipeline_options_test.py ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/options/pipeline_options_test.py b/sdks/python/apache_beam/options/pipeline_options_test.py index 1a644b4..f4dd4d9 100644 --- a/sdks/python/apache_beam/options/pipeline_options_test.py +++ b/sdks/python/apache_beam/options/pipeline_options_test.py @@ -192,47 +192,52 @@ class PipelineOptionsTest(unittest.TestCase): options = PipelineOptions(['--redefined_flag']) self.assertTrue(options.get_all_options()['redefined_flag']) + # TODO(BEAM-1319): Require unique names only within a test. + # For now, <file name acronym>_vp_arg<number> will be the convention + # to name value-provider arguments in tests, as opposed to + # <file name acronym>_non_vp_arg<number> for non-value-provider arguments. + # The number will grow per file as tests are added. def test_value_provider_options(self): class UserOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument( - '--vp_arg', + '--pot_vp_arg1', help='This flag is a value provider') parser.add_value_provider_argument( - '--vp_arg2', + '--pot_vp_arg2', default=1, type=int) parser.add_argument( - '--non_vp_arg', + '--pot_non_vp_arg1', default=1, type=int ) # Provide values: if not provided, the option becomes of the type runtime vp - options = UserOptions(['--vp_arg', 'hello']) - self.assertIsInstance(options.vp_arg, StaticValueProvider) - self.assertIsInstance(options.vp_arg2, RuntimeValueProvider) - self.assertIsInstance(options.non_vp_arg, int) + options = UserOptions(['--pot_vp_arg1', 'hello']) + self.assertIsInstance(options.pot_vp_arg1, StaticValueProvider) + self.assertIsInstance(options.pot_vp_arg2, RuntimeValueProvider) + self.assertIsInstance(options.pot_non_vp_arg1, int) # Values can be overwritten - options = UserOptions(vp_arg=5, - vp_arg2=StaticValueProvider(value_type=str, - value='bye'), - non_vp_arg=RuntimeValueProvider( + options = UserOptions(pot_vp_arg1=5, + pot_vp_arg2=StaticValueProvider(value_type=str, + value='bye'), + pot_non_vp_arg1=RuntimeValueProvider( option_name='foo', value_type=int, default_value=10)) - self.assertEqual(options.vp_arg, 5) - self.assertTrue(options.vp_arg2.is_accessible(), - '%s is not accessible' % options.vp_arg2) - self.assertEqual(options.vp_arg2.get(), 'bye') - self.assertFalse(options.non_vp_arg.is_accessible()) + self.assertEqual(options.pot_vp_arg1, 5) + self.assertTrue(options.pot_vp_arg2.is_accessible(), + '%s is not accessible' % options.pot_vp_arg2) + self.assertEqual(options.pot_vp_arg2.get(), 'bye') + self.assertFalse(options.pot_non_vp_arg1.is_accessible()) with self.assertRaises(RuntimeError): - options.non_vp_arg.get() + options.pot_non_vp_arg1.get() if __name__ == '__main__': http://git-wip-us.apache.org/repos/asf/beam/blob/b547b5a1/sdks/python/apache_beam/options/value_provider_test.py ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/options/value_provider_test.py b/sdks/python/apache_beam/options/value_provider_test.py index 3a45e8b..17e9590 100644 --- a/sdks/python/apache_beam/options/value_provider_test.py +++ b/sdks/python/apache_beam/options/value_provider_test.py @@ -24,72 +24,77 @@ from apache_beam.options.value_provider import RuntimeValueProvider from apache_beam.options.value_provider import StaticValueProvider +# TODO(BEAM-1319): Require unique names only within a test. +# For now, <file name acronym>_vp_arg<number> will be the convention +# to name value-provider arguments in tests, as opposed to +# <file name acronym>_non_vp_arg<number> for non-value-provider arguments. +# The number will grow per file as tests are added. class ValueProviderTests(unittest.TestCase): def test_static_value_provider_keyword_argument(self): class UserDefinedOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument( - '--vp_arg', + '--vpt_vp_arg1', help='This keyword argument is a value provider', default='some value') - options = UserDefinedOptions(['--vp_arg', 'abc']) - self.assertTrue(isinstance(options.vp_arg, StaticValueProvider)) - self.assertTrue(options.vp_arg.is_accessible()) - self.assertEqual(options.vp_arg.get(), 'abc') + options = UserDefinedOptions(['--vpt_vp_arg1', 'abc']) + self.assertTrue(isinstance(options.vpt_vp_arg1, StaticValueProvider)) + self.assertTrue(options.vpt_vp_arg1.is_accessible()) + self.assertEqual(options.vpt_vp_arg1.get(), 'abc') def test_runtime_value_provider_keyword_argument(self): class UserDefinedOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument( - '--vp_arg', + '--vpt_vp_arg2', help='This keyword argument is a value provider') options = UserDefinedOptions() - self.assertTrue(isinstance(options.vp_arg, RuntimeValueProvider)) - self.assertFalse(options.vp_arg.is_accessible()) + self.assertTrue(isinstance(options.vpt_vp_arg2, RuntimeValueProvider)) + self.assertFalse(options.vpt_vp_arg2.is_accessible()) with self.assertRaises(RuntimeError): - options.vp_arg.get() + options.vpt_vp_arg2.get() def test_static_value_provider_positional_argument(self): class UserDefinedOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument( - 'vp_pos_arg', + 'vpt_vp_arg3', help='This positional argument is a value provider', default='some value') options = UserDefinedOptions(['abc']) - self.assertTrue(isinstance(options.vp_pos_arg, StaticValueProvider)) - self.assertTrue(options.vp_pos_arg.is_accessible()) - self.assertEqual(options.vp_pos_arg.get(), 'abc') + self.assertTrue(isinstance(options.vpt_vp_arg3, StaticValueProvider)) + self.assertTrue(options.vpt_vp_arg3.is_accessible()) + self.assertEqual(options.vpt_vp_arg3.get(), 'abc') def test_runtime_value_provider_positional_argument(self): class UserDefinedOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument( - 'vp_pos_arg', + 'vpt_vp_arg4', help='This positional argument is a value provider') options = UserDefinedOptions([]) - self.assertTrue(isinstance(options.vp_pos_arg, RuntimeValueProvider)) - self.assertFalse(options.vp_pos_arg.is_accessible()) + self.assertTrue(isinstance(options.vpt_vp_arg4, RuntimeValueProvider)) + self.assertFalse(options.vpt_vp_arg4.is_accessible()) with self.assertRaises(RuntimeError): - options.vp_pos_arg.get() + options.vpt_vp_arg4.get() def test_static_value_provider_type_cast(self): class UserDefinedOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument( - '--vp_arg', + '--vpt_vp_arg5', type=int, help='This flag is a value provider') - options = UserDefinedOptions(['--vp_arg', '123']) - self.assertTrue(isinstance(options.vp_arg, StaticValueProvider)) - self.assertTrue(options.vp_arg.is_accessible()) - self.assertEqual(options.vp_arg.get(), 123) + options = UserDefinedOptions(['--vpt_vp_arg5', '123']) + self.assertTrue(isinstance(options.vpt_vp_arg5, StaticValueProvider)) + self.assertTrue(options.vpt_vp_arg5.is_accessible()) + self.assertEqual(options.vpt_vp_arg5.get(), 123) def test_set_runtime_option(self): # define ValueProvider ptions, with and without default values @@ -97,25 +102,25 @@ class ValueProviderTests(unittest.TestCase): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument( - '--vp_arg', + '--vpt_vp_arg6', help='This keyword argument is a value provider') # set at runtime parser.add_value_provider_argument( # not set, had default int - '-v', '--vp_arg2', # with short form + '-v', '--vpt_vp_arg7', # with short form default=123, type=int) parser.add_value_provider_argument( # not set, had default str - '--vp-arg3', # with dash in name + '--vpt_vp-arg8', # with dash in name default='123', type=str) parser.add_value_provider_argument( # not set and no default - '--vp_arg4', + '--vpt_vp_arg9', type=float) parser.add_value_provider_argument( # positional argument set - 'vp_pos_arg', # default & runtime ignored + 'vpt_vp_arg10', # default & runtime ignored help='This positional argument is a value provider', type=float, default=5.4) @@ -123,23 +128,23 @@ class ValueProviderTests(unittest.TestCase): # provide values at graph-construction time # (options not provided here become of the type RuntimeValueProvider) options = UserDefinedOptions1(['1.2']) - self.assertFalse(options.vp_arg.is_accessible()) - self.assertFalse(options.vp_arg2.is_accessible()) - self.assertFalse(options.vp_arg3.is_accessible()) - self.assertFalse(options.vp_arg4.is_accessible()) - self.assertTrue(options.vp_pos_arg.is_accessible()) + self.assertFalse(options.vpt_vp_arg6.is_accessible()) + self.assertFalse(options.vpt_vp_arg7.is_accessible()) + self.assertFalse(options.vpt_vp_arg8.is_accessible()) + self.assertFalse(options.vpt_vp_arg9.is_accessible()) + self.assertTrue(options.vpt_vp_arg10.is_accessible()) # provide values at job-execution time # (options not provided here will use their default, if they have one) - RuntimeValueProvider.set_runtime_options({'vp_arg': 'abc', - 'vp_pos_arg':'3.2'}) - self.assertTrue(options.vp_arg.is_accessible()) - self.assertEqual(options.vp_arg.get(), 'abc') - self.assertTrue(options.vp_arg2.is_accessible()) - self.assertEqual(options.vp_arg2.get(), 123) - self.assertTrue(options.vp_arg3.is_accessible()) - self.assertEqual(options.vp_arg3.get(), '123') - self.assertTrue(options.vp_arg4.is_accessible()) - self.assertIsNone(options.vp_arg4.get()) - self.assertTrue(options.vp_pos_arg.is_accessible()) - self.assertEqual(options.vp_pos_arg.get(), 1.2) + RuntimeValueProvider.set_runtime_options({'vpt_vp_arg6': 'abc', + 'vpt_vp_arg10':'3.2'}) + self.assertTrue(options.vpt_vp_arg6.is_accessible()) + self.assertEqual(options.vpt_vp_arg6.get(), 'abc') + self.assertTrue(options.vpt_vp_arg7.is_accessible()) + self.assertEqual(options.vpt_vp_arg7.get(), 123) + self.assertTrue(options.vpt_vp_arg8.is_accessible()) + self.assertEqual(options.vpt_vp_arg8.get(), '123') + self.assertTrue(options.vpt_vp_arg9.is_accessible()) + self.assertIsNone(options.vpt_vp_arg9.get()) + self.assertTrue(options.vpt_vp_arg10.is_accessible()) + self.assertEqual(options.vpt_vp_arg10.get(), 1.2)