예제 #1
0
    def test_checks_requirements(self):
        requirement = Requirement("test requirement")
        requirement.check = MagicMock()
        self.test_task.get_requirements = MagicMock(return_value=[requirement])

        self.uut.run()

        requirement.check.assert_called_with()
예제 #2
0
def is_satisfied(requirement: Requirement, logger: logging.Logger) -> bool:
    try:
        requirement.check()
        logger.debug("Requirement '%s' satisfied", requirement.description)
        return True
    except Exception as e:
        logger.error("Requirement '%s' not satisfied: %s", requirement.description, e)
        return False
예제 #3
0
    def test_stops_on_unsatisfied_requirement(self):
        requirement = Requirement("test requirement")
        requirement.check = MagicMock(side_effect=ValueError("not satisfied"))
        self.test_task.get_requirements = MagicMock(return_value=[requirement])

        with assert_raises(SystemExit):
            self.uut.run()

        # assert that exit comes before task is started
        self.test_task.start.assert_not_called()
예제 #4
0
def check_all_requirements():
    logger = logging.getLogger("requirements")
    logger.info("Checking all requirements...")
    requirements = map(lambda requirement: requirement(), Requirement.__subclasses__())  # type: List[Requirement]
    if are_satisfied(requirements, logger):
        logger.info("All requirements satisfied. You're good to go.")
    else:
        logger.info("Unsatisfied requirements. Some MUBench tasks might work anyways, but to use the entire benchmark,"
                    " please ensure that your environment meets all requirements.")