Exemplo n.º 1
0
    def testArtifactsDependencies(self, registry):
        """Check artifact dependencies work."""
        registry.AddFileSource(self.test_artifacts_file)

        art_obj = registry.GetArtifact("TestAggregationArtifactDeps")
        deps = ar.GetArtifactDependencies(art_obj)
        self.assertCountEqual(list(deps), ["TestAggregationArtifact"])

        deps = ar.GetArtifactDependencies(art_obj, recursive=True)
        self.assertCountEqual(
            list(deps),
            ["TestOSAgnostic", "TestCmdArtifact", "TestAggregationArtifact"])

        # Test recursive loop.
        # Make sure we use the registry registered version of the class.
        source = art_obj.sources[0]
        backup = source.attributes["names"]
        try:
            source.attributes["names"] = ["TestAggregationArtifactDeps"]
            with self.assertRaises(RuntimeError) as e:
                ar.GetArtifactDependencies(art_obj, recursive=True)
            self.assertIn("artifact recursion depth", str(e.exception))
        finally:
            source.attributes["names"] = backup  # Restore old source.
Exemplo n.º 2
0
  def BuildArtifactDescriptors(self, artifacts_list):
    result = []
    for artifact_val in artifacts_list:
      descriptor = rdf_artifacts.ArtifactDescriptor(
          artifact=artifact_val,
          dependencies=sorted(
              artifact_registry.GetArtifactDependencies(artifact_val)),
          path_dependencies=sorted(
              artifact_registry.GetArtifactPathDependencies(artifact_val)),
          error_message=artifact_val.error_message,
          is_custom=artifact_val.loaded_from.startswith("datastore:"))

      factory = parsers.ArtifactParserFactory(str(artifact_val.name))
      for parser in factory.AllParsers():
        parser_cls = type(parser)
        descriptor.processors.append(
            rdf_artifacts.ArtifactProcessorDescriptor.FromParser(parser_cls))

      result.append(descriptor)

    return result
Exemplo n.º 3
0
  def BuildArtifactDescriptors(self, artifacts_list):
    result = []
    for artifact_val in artifacts_list:
      descriptor = rdf_artifacts.ArtifactDescriptor(
          artifact=artifact_val,
          dependencies=sorted(
              artifact_registry.GetArtifactDependencies(artifact_val)),
          path_dependencies=sorted(
              artifact_registry.GetArtifactPathDependencies(artifact_val)),
          error_message=artifact_val.error_message,
          is_custom=artifact_val.loaded_from.startswith("datastore:"))

      for processor in parser.Parser.GetClassesByArtifact(artifact_val.name):
        descriptor.processors.append(
            rdf_artifacts.ArtifactProcessorDescriptor(
                name=processor.__name__,
                output_types=processor.output_types,
                description=processor.GetDescription()))

      result.append(descriptor)

    return result