Exemplo n.º 1
0
    def test_runner_api_transformation_with_subscription(
            self, unused_mock_pubsub):
        source = _PubSubSource(
            topic=None,
            subscription='projects/fakeprj/subscriptions/a_subscription',
            id_label='a_label',
            timestamp_attribute='b_label',
            with_attributes=True)
        transform = Read(source)

        context = pipeline_context.PipelineContext()
        proto_transform_spec = transform.to_runner_api(context)
        self.assertEqual(common_urns.composites.PUBSUB_READ.urn,
                         proto_transform_spec.urn)

        pubsub_read_payload = (proto_utils.parse_Bytes(
            proto_transform_spec.payload,
            beam_runner_api_pb2.PubSubReadPayload))
        self.assertEqual('projects/fakeprj/subscriptions/a_subscription',
                         pubsub_read_payload.subscription)
        self.assertEqual('a_label', pubsub_read_payload.id_attribute)
        self.assertEqual('b_label', pubsub_read_payload.timestamp_attribute)
        self.assertEqual('', pubsub_read_payload.topic)
        self.assertTrue(pubsub_read_payload.with_attributes)

        proto_transform = beam_runner_api_pb2.PTransform(
            unique_name="dummy_label", spec=proto_transform_spec)

        transform_from_proto = Read.from_runner_api_parameter(
            proto_transform, pubsub_read_payload, None)
        self.assertTrue(isinstance(transform_from_proto, Read))
        self.assertTrue(isinstance(transform_from_proto.source, _PubSubSource))
        self.assertTrue(transform_from_proto.source.with_attributes)
        self.assertEqual('projects/fakeprj/subscriptions/a_subscription',
                         transform_from_proto.source.full_subscription)
Exemplo n.º 2
0
    def test_runner_api_transformation_properties_none(self,
                                                       unused_mock_pubsub):
        # Confirming that properties stay None after a runner API transformation.
        source = _PubSubSource(topic='projects/fakeprj/topics/a_topic',
                               with_attributes=True)
        transform = Read(source)

        context = pipeline_context.PipelineContext()
        proto_transform_spec = transform.to_runner_api(context)
        self.assertEqual(common_urns.composites.PUBSUB_READ.urn,
                         proto_transform_spec.urn)

        pubsub_read_payload = (proto_utils.parse_Bytes(
            proto_transform_spec.payload,
            beam_runner_api_pb2.PubSubReadPayload))

        proto_transform = beam_runner_api_pb2.PTransform(
            unique_name="dummy_label", spec=proto_transform_spec)

        transform_from_proto = Read.from_runner_api_parameter(
            proto_transform, pubsub_read_payload, None)
        self.assertIsNone(transform_from_proto.source.full_subscription)
        self.assertIsNone(transform_from_proto.source.id_label)
        self.assertIsNone(transform_from_proto.source.timestamp_attribute)