def test_job_python_from_python_it(self):
        @ptransform.PTransform.register_urn('simple', None)
        class SimpleTransform(ptransform.PTransform):
            def expand(self, pcoll):
                return pcoll | beam.Map(lambda x: 'Simple(%s)' % x)

            def to_runner_api_parameter(self, unused_context):
                return 'simple', None

            @staticmethod
            def from_runner_api_parameter(_0, _1, _2):
                return SimpleTransform()

        pipeline = TestPipeline(is_integration_test=True)

        res = (pipeline
               | beam.Create(['a', 'b'])
               | beam.ExternalTransform(
                   'simple', None,
                   expansion_service.ExpansionServiceServicer()))
        assert_that(res, equal_to(['Simple(a)', 'Simple(b)']))

        proto_pipeline, _ = pipeline.to_runner_api(return_context=True)
        pipeline_from_proto = Pipeline.from_runner_api(proto_pipeline,
                                                       pipeline.runner,
                                                       pipeline._options)
        pipeline_from_proto.run().wait_until_finish()
Example #2
0
    def test_pipeline_generation(self):
        @ptransform.PTransform.register_urn('simple', None)
        class SimpleTransform(ptransform.PTransform):
            def expand(self, pcoll):
                return pcoll | 'TestLabel' >> beam.Map(
                    lambda x: 'Simple(%s)' % x)

            def to_runner_api_parameter(self, unused_context):
                return 'simple', None

            @staticmethod
            def from_runner_api_parameter(unused_parameter, unused_context):
                return SimpleTransform()

        pipeline = beam.Pipeline()
        res = (pipeline
               | beam.Create(['a', 'b'])
               | beam.ExternalTransform(
                   'simple', None,
                   expansion_service.ExpansionServiceServicer()))
        assert_that(res, equal_to(['Simple(a)', 'Simple(b)']))

        proto, _ = pipeline.to_runner_api(return_context=True)
        pipeline_from_proto = Pipeline.from_runner_api(proto, pipeline.runner,
                                                       pipeline._options)

        # Original pipeline has the un-expanded external transform
        self.assertEqual([], pipeline.transforms_stack[0].parts[1].parts)

        # new pipeline has the expanded external transform
        self.assertNotEqual(
            [], pipeline_from_proto.transforms_stack[0].parts[1].parts)
        self.assertEqual(
            u'ExternalTransform(simple)/TestLabel', pipeline_from_proto.
            transforms_stack[0].parts[1].parts[0].full_label)
Example #3
0
    def test_pipeline_generation(self):
        pipeline = beam.Pipeline()
        res = (pipeline
               | beam.Create(['a', 'b'])
               | beam.ExternalTransform(
                   'simple', None,
                   expansion_service.ExpansionServiceServicer()))
        assert_that(res, equal_to(['Simple(a)', 'Simple(b)']))

        proto, _ = pipeline.to_runner_api(return_context=True)
        pipeline_from_proto = Pipeline.from_runner_api(proto, pipeline.runner,
                                                       pipeline._options)

        # Original pipeline has the un-expanded external transform
        self.assertEqual([], pipeline.transforms_stack[0].parts[1].parts)

        # new pipeline has the expanded external transform
        self.assertNotEqual(
            [], pipeline_from_proto.transforms_stack[0].parts[1].parts)
        self.assertEqual(
            u'ExternalTransform(simple)/TestLabel', pipeline_from_proto.
            transforms_stack[0].parts[1].parts[0].full_label)
Example #4
0
    def test_pipeline_generation(self):
        pipeline = beam.Pipeline()
        _ = (pipeline
             | beam.Create(['a', 'b'])
             | beam.ExternalTransform(
                 'beam:transforms:xlang:test:prefix',
                 ImplicitSchemaPayloadBuilder({'data': u'0'}),
                 expansion_service.ExpansionServiceServicer()))

        proto, _ = pipeline.to_runner_api(return_context=True)
        pipeline_from_proto = Pipeline.from_runner_api(proto, pipeline.runner,
                                                       pipeline._options)

        # Original pipeline has the un-expanded external transform
        self.assertEqual([], pipeline.transforms_stack[0].parts[1].parts)

        # new pipeline has the expanded external transform
        self.assertNotEqual(
            [], pipeline_from_proto.transforms_stack[0].parts[1].parts)
        self.assertEqual(
            u'ExternalTransform(beam:transforms:xlang:test:prefix)/TestLabel',
            pipeline_from_proto.transforms_stack[0].parts[1].parts[0].
            full_label)
Example #5
0
  def test_pipeline_generation(self):
    pipeline = beam.Pipeline()
    res = (pipeline
           | beam.Create(['a', 'b'])
           | beam.ExternalTransform(
               'simple',
               None,
               expansion_service.ExpansionServiceServicer()))
    assert_that(res, equal_to(['Simple(a)', 'Simple(b)']))

    proto, _ = pipeline.to_runner_api(
        return_context=True)
    pipeline_from_proto = Pipeline.from_runner_api(
        proto, pipeline.runner, pipeline._options)

    # Original pipeline has the un-expanded external transform
    self.assertEqual([], pipeline.transforms_stack[0].parts[1].parts)

    # new pipeline has the expanded external transform
    self.assertNotEqual(
        [], pipeline_from_proto.transforms_stack[0].parts[1].parts)
    self.assertEqual(
        u'ExternalTransform(simple)/TestLabel',
        pipeline_from_proto.transforms_stack[0].parts[1].parts[0].full_label)