def sample(self, services): """ The entrance to start the logic to check the status of the given services on the current node. :param services: the list of services Object whose status to check :return: the verification results which is a list of Result Object """ results = [] logger = LOG() logger_root = logger.root() logger_tester = logger.tester() logger_root.debug( "NodeSampler:sample has been called by sampler server.") logger_tester.debug( "NodeSampler:sample has been called by sampler server.") for service in services: checker_class = self._checker_map[service.check_methods] logger_root.debug( "service.name:%s service.check_method: %s service.checker:%s" % (service.name, service.check_methods, checker_class)) if checker_class: logger_tester.info("%s", checker_class) checker = checker_class() service_status = checker.check(service.name) service_result = Result(service, service_status) results.append(service_result) else: raise Exception( "The '%s' checker used to check '%s' cannot be find in sampler node." % (service.check_methods, service.name)) logger_root.debug("NodeSampler return :%s" % results) return results
def check(self, service_name): logger = LOG() log_tester = logger.tester() self.is_mock_checker_called = True self.service_name = service_name log_tester.info("MockedMethodChecker has been called.") return TEST_STATUS
def register_checker(self, name, klass): self._checker_map[name] = klass logger = LOG() log_root = logger.root() log_root.debug( "Register Checker: {Check method: %s , Checker registered: %s}" % (name, klass)) log_tester = logger.tester() log_tester.info( "Register Checker: {Check method: %s , Checker registered: %s}" % (name, klass))
def test_communicate(self): logger = LOG() logger_tester = logger.tester() sedna_config_value = SednaConfig(port=TEST_PORT, nodes=self.expected_nodes) logger_tester.info("{port:%s, nodes:%s}" % (sedna_config_value.port, sedna_config_value.nodes)) master = Master() results = master.verify_nodes(sedna_config_value) logger_tester.info("Sampler Server results: %s" % results) self.assertEquals(results[0].group, self.expected_node.group, "Fail when test_get_nodes information") self.assertEquals(results[0].ip, self.expected_node.ip, "Fail when test_get_nodes information") expected_result = Result(status=TEST_STATUS, service=self.expected_service) for result in results[0].result: self.assertEquals(result, expected_result)
def sample(self, services): """ The wrapper of sample method to convert service dictionaries to service object :param services: the list of Service dicts which is transformed from Service Obj to dict form :return: services sample result """ list_services = [] log = LOG() log_root = log.root() log_tester = log.tester() log_root.info("Receive raw info from Master: %s" % services) for service in services: list_services.append(Service(**service)) log_root.info("Receive format info from Master: %s" % list_services) log_tester.info("Receive format info from Master: %s" % list_services) return self._sampler.sample(list_services)