Ejemplo n.º 1
0
    def test_parent(self) -> None:
        """Test referencing parent and weak reference handling."""
        state = State()
        cloned_state = state.clone()

        assert cloned_state.parent is state

        del state
        gc.collect()

        assert cloned_state.parent is None
Ejemplo n.º 2
0
    def test_run(self, state: State, state_count: int) -> None:
        """Test running the hill climbing method."""
        beam = Beam()
        for _ in range(state_count):
            cloned_state = state.clone()
            cloned_state.iteration = state.iteration + 1
            beam.add_state(cloned_state)

        predictor = HillClimbing()
        context = flexmock(accepted_final_states_count=33, beam=beam)
        with predictor.assigned_context(context):
            next_state, package_tuple = predictor.run()
            assert next_state is not None
            assert next_state is beam.max()
            assert package_tuple[0] in next_state.unresolved_dependencies
            assert package_tuple in next_state.unresolved_dependencies[package_tuple[0]].values()
Ejemplo n.º 3
0
    def test_run(self, state: State, state_count: int) -> None:
        """Test running the approximating latest method."""
        beam = Beam()
        for _ in range(state_count):
            cloned_state = state.clone()
            cloned_state.iteration = state.iteration + 1
            beam.add_state(cloned_state)

        predictor = ApproximatingLatest()
        # Add an item to the heat up entry so that assume the heat-up process was already done.
        predictor._packages_heated_up = {"some-package"}
        context = flexmock(accepted_final_states_count=33, beam=beam)
        with predictor.assigned_context(context):
            next_state, package_tuple = predictor.run()
            assert next_state is not None
            assert next_state in beam.iter_states()
            assert package_tuple[0] in next_state.unresolved_dependencies
            assert package_tuple in next_state.unresolved_dependencies[
                package_tuple[0]].values()
Ejemplo n.º 4
0
    def test_clone(self, state: State) -> None:
        """Test cloning of states and their memory footprints."""
        cloned_state = state.clone()
        assert cloned_state is not state
        assert cloned_state.score == state.score

        # Check swallow copies.
        assert cloned_state.unresolved_dependencies is not state.unresolved_dependencies
        assert cloned_state.unresolved_dependencies == state.unresolved_dependencies
        assert cloned_state.resolved_dependencies is not state.resolved_dependencies
        assert cloned_state.resolved_dependencies == state.resolved_dependencies
        assert (
            cloned_state.advised_runtime_environment
            is not state.advised_runtime_environment
        )
        assert (
            cloned_state.advised_runtime_environment
            == state.advised_runtime_environment
        )
        assert cloned_state.justification is not state.justification
        assert cloned_state.justification == state.justification
Ejemplo n.º 5
0
    def test_run(self, state: State, state_count: int, limit: int, count: int,
                 iteration: int, accepted_final_states: int) -> None:
        """Test running the annealing."""
        beam = Beam()
        for _ in range(state_count):
            cloned_state = state.clone()
            cloned_state.iteration = state.iteration + 1
            beam.add_state(cloned_state)

        predictor = AdaptiveSimulatedAnnealing()
        context = flexmock(
            accepted_final_states_count=accepted_final_states,
            count=count,
            iteration=iteration,
            limit=limit,
            beam=beam,
        )
        with predictor.assigned_context(context):
            next_state, package_tuple = predictor.run()
            assert next_state in beam.iter_states()
            assert package_tuple is not None
            assert package_tuple[0] in next_state.unresolved_dependencies
            assert package_tuple in next_state.unresolved_dependencies[
                package_tuple[0]].values()