Esempio n. 1
0
 def test_to_dict(self, pipeline_config: PipelineConfig) -> None:
     """Test serialization of pipeline configuration."""
     assert pipeline_config.to_dict() == {
         "boots": [{"name": "Boot1", "configuration": {"some_parameter": -0.2}}],
         "sieves": [{"name": "Sieve1", "configuration": {"flying_circus": 1969}}],
         "steps": [{"name": "Step1", "configuration": {"guido_retirement": 2019}}],
         "strides": [
             {
                 "name": "Stride1",
                 "configuration": {
                     "linus": {
                         "residence": "oregon",
                         "children": 3,
                         "parents": ["nils", "anna"],
                     }
                 },
             }
         ],
         "wraps": [
             {
                 "name": "Wrap1",
                 "configuration": {
                     "thoth": [2018, 2019],
                     "cities": ["Brno", "Bonn", "Boston", "Milan"],
                 },
             }
         ],
     }
Esempio n. 2
0
    def test_to_dict(self, pipeline_config: PipelineConfig) -> None:
        """Test conversion to a dict."""
        report = Report(count=3, pipeline=pipeline_config)

        project = flexmock()
        project_dict = {"aresto momentum": "avada kedavra"}
        project.should_receive("to_dict").with_args(
            keep_thoth_section=True).and_return(
                project_dict).twice()  # In test and in the report.

        product = Product(
            project=project,
            score=0.666,
            justification=[{
                "gryffindor": "le gladium leviosa"
            }],
            advised_runtime_environment=RuntimeEnvironment.from_dict(
                {"python_version": "3.6"}),
        )
        report.add_product(product)

        assert report.product_count() == 1
        assert list(report.iter_products()) == [product]
        assert report.to_dict() == {
            "pipeline": pipeline_config.to_dict(),
            "products": [product.to_dict()],
            "stack_info": [],
            "resolver_iterations": 0,
            "accepted_final_states_count": 0,
            "discarded_final_states_count": 0,
        }
 def test_to_dict(self, pipeline_config: PipelineConfig) -> None:
     """Test serialization of pipeline configuration."""
     pipeline_dict = pipeline_config.to_dict()
     assert pipeline_dict == {
         "boots": [{
             "configuration": {
                 "package_name": "flask",
                 "some_parameter": -0.2
             },
             "name": "Boot1",
             "unit_run": False
         }],
         "pseudonyms": [{
             "configuration": {
                 "another_parameter": 0.33,
                 "package_name": "tensorflow"
             },
             "name": "Pseudonym1",
             "unit_run": False,
         }],
         "sieves": [{
             "configuration": {
                 "flying_circus": 1969,
                 "package_name": "tensorflow"
             },
             "name": "Sieve1",
             "unit_run": False,
         }],
         "steps": [{
             "configuration": {
                 "guido_retirement": 2019,
                 "package_name": "tensorflow",
                 "multi_package_resolution": False,
             },
             "name": "Step1",
             "unit_run": False,
         }],
         "strides": [{
             "configuration": {
                 "linus": {
                     "children": 3,
                     "parents": ["nils", "anna"],
                     "residence": "oregon"
                 },
                 "package_name": None,
             },
             "name": "Stride1",
             "unit_run": False,
         }],
         "wraps": [{
             "configuration": {
                 "cities": ["Brno", "Bonn", "Boston", "Milan"],
                 "thoth": [2018, 2019],
                 "package_name": None,
             },
             "name": "Wrap1",
             "unit_run": False,
         }],
     }
Esempio n. 4
0
    def test_to_dict_metadata(self, pipeline_config: PipelineConfig) -> None:
        """Test conversion to a dict with passed metadata."""
        report = Report(count=3, pipeline=pipeline_config)

        project = flexmock()
        project_dict = {"aresto momentum": "avada kedavra"}
        project.should_receive("to_dict").with_args(
            keep_thoth_section=True).and_return(project_dict)

        product = Product(
            project=project,
            score=0.666,
            justification=[{
                "gryffindor": "le gladium leviosa"
            }],
            advised_runtime_environment=RuntimeEnvironment.from_dict(
                {"python_version": "3.6"}),
        )
        report.add_product(product)

        stack_info = [{"type": "WARNING", "message": "Hello, metadata"}]
        stack_info_metadata = {
            "thoth.adviser": {
                "stack_info": stack_info,
            }
        }
        report.set_stack_info([{"foo": "bar"}])

        assert "THOTH_ADVISER_METADATA" not in os.environ
        os.environ["THOTH_ADVISER_METADATA"] = json.dumps(stack_info_metadata)

        try:
            assert report.product_count() == 1
            assert list(report.iter_products()) == [product]
            assert report.to_dict() == {
                "pipeline": pipeline_config.to_dict(),
                "products": [product.to_dict()],
                "stack_info": list(chain(stack_info, report.stack_info)),
                "resolver_iterations": 0,
                "accepted_final_states_count": 0,
                "discarded_final_states_count": 0,
            }
        except Exception:
            os.environ.pop("THOTH_ADVISER_METADATA")
            raise