예제 #1
0
    def testResolveArtifacts(self):
        with metadata.Metadata(connection_config=self._connection_config) as m:
            artifact1 = self._createExamples(1)
            artifact2 = self._createExamples(2)
            artifact3 = self._createExamples(3)
            artifact4 = self._createExamples(4)
            artifact5 = self._createExamples(5)

            # Test StaticRange.
            resolver = spans_resolver.SpansResolver(
                range_config=range_config_pb2.RangeConfig(
                    static_range=range_config_pb2.StaticRange(
                        start_span_number=2, end_span_number=3)))
            result = resolver.resolve_artifacts(m, {
                'input':
                [artifact1, artifact2, artifact3, artifact4, artifact5]
            })
            self.assertIsNotNone(result)
            self.assertEqual({a.uri
                              for a in result['input']},
                             {artifact3.uri, artifact2.uri})

            # Test RollingRange.
            resolver = spans_resolver.SpansResolver(
                range_config=range_config_pb2.RangeConfig(
                    rolling_range=range_config_pb2.RollingRange(num_spans=3)))
            result = resolver.resolve_artifacts(m, {
                'input':
                [artifact1, artifact2, artifact3, artifact4, artifact5]
            })
            self.assertIsNotNone(result)
            self.assertEqual([a.uri for a in result['input']],
                             [artifact5.uri, artifact4.uri, artifact3.uri])

            # Test RollingRange with start_span_number.
            resolver = spans_resolver.SpansResolver(
                range_config=range_config_pb2.RangeConfig(
                    rolling_range=range_config_pb2.RollingRange(
                        start_span_number=4, num_spans=3)))
            result = resolver.resolve_artifacts(m, {
                'input':
                [artifact1, artifact2, artifact3, artifact4, artifact5]
            })
            self.assertIsNotNone(result)
            self.assertEqual([a.uri for a in result['input']],
                             [artifact5.uri, artifact4.uri])
예제 #2
0
    def testResolve(self):
        with metadata.Metadata(connection_config=self._connection_config) as m:
            contexts = m.register_pipeline_contexts_if_not_exists(
                self._pipeline_info)
            artifact_one = standard_artifacts.Examples()
            artifact_one.uri = 'uri_one'
            artifact_one.set_string_custom_property(utils.SPAN_PROPERTY_NAME,
                                                    '1')
            m.publish_artifacts([artifact_one])
            artifact_two = standard_artifacts.Examples()
            artifact_two.uri = 'uri_two'
            artifact_two.set_string_custom_property(utils.SPAN_PROPERTY_NAME,
                                                    '2')
            m.register_execution(exec_properties={},
                                 pipeline_info=self._pipeline_info,
                                 component_info=self._component_info,
                                 contexts=contexts)
            m.publish_execution(
                component_info=self._component_info,
                output_artifacts={'key': [artifact_one, artifact_two]})

            resolver = spans_resolver.SpansResolver(
                range_config=range_config_pb2.RangeConfig(
                    static_range=range_config_pb2.StaticRange(
                        start_span_number=1, end_span_number=1)))
            resolve_result = resolver.resolve(
                pipeline_info=self._pipeline_info,
                metadata_handler=m,
                source_channels={
                    'input':
                    types.Channel(type=artifact_one.type,
                                  producer_component_id=self._component_info.
                                  component_id,
                                  output_key='key')
                })

            self.assertTrue(resolve_result.has_complete_result)
            self.assertEqual([
                artifact.uri
                for artifact in resolve_result.per_key_resolve_result['input']
            ], [artifact_one.uri])
            self.assertTrue(resolve_result.per_key_resolve_state['input'])