def test_move(self): l = LogCapture(names="drivar.DrivarNoop", install=False, level=logging.DEBUG) drivar = DrivarNoop() drivar.initialize() adapter = PahoMqttAdapter(drivar) # Test that messages get interpreted correctly adapter.start() l.install() params = {'speed': Drivar.SPEED_FAST} self.client.publish("scene/robot/drivar/command/motor/move", json.dumps(params), 0, True) time.sleep(1) l.check( ('drivar.DrivarNoop', 'INFO', 'Drivar : Moving all wheels with power ' + str(DrivarNoop._getMotorPowerLevel(params['speed'])) + '.'), ('drivar.DrivarNoop', 'INFO', 'Drivar : Stopping the vehicle.')) l.clear() self.client.publish("scene/robot/drivar/command/motor/turn", "", 0, True) time.sleep(1) l.check(('drivar.DrivarNoop', 'INFO', 'Drivar : Turning the vehicle left by 90 degrees.')) l.uninstall()
def test_simple_manual_install(self): l = LogCapture(install=False) root.info('before') l.install() root.info('during') l.uninstall() root.info('after') assert str(l) == "root INFO\n during"
class TestCase(unittest.TestCase): __metaclass__ = abc.ABCMeta root_path = os.path.dirname(os.path.dirname(__file__)) environ = dict() domain = None use_cookie = False def setUp(self): # webtest if self.use_cookie: cookiejar = cookielib.CookieJar() else: cookiejar = None self.app = TestApp(utils.app, domain=self.domain, cookiejar=cookiejar) # os.environ self.origin_environ = dict() if "HTTP_HOST" not in self.environ.viewkeys(): self.environ["HTTP_HOST"] = "localhost" for key, value in self.environ.viewitems(): self.origin_environ[key], os.environ[key] = os.environ.get(key), value # testbed self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub(consistency_policy=datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0)) self.testbed.init_blobstore_stub() self.testbed.init_files_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(root_path=self.root_path) # logging self.log = LogCapture(level=logging.WARNING) self.log.install() def tearDown(self): try: # logging for record in self.log.records: pathname = get_tail(record.pathname).group("tail") log = (record.levelname, pathname.replace(os.path.abspath(os.curdir), "").lstrip("/"), record.funcName, record.getMessage()) if getattr(self, "expected_logs", None): if log in self.expected_logs: continue matched = None for expected_log in self.expected_logs: if "..." in expected_log[3]: if log[:2] == expected_log[:2]: if doctest._ellipsis_match(expected_log[3], log[3]): matched = True continue if matched: continue print(record.levelname, pathname, record.lineno, record.funcName, record.getMessage()) assert not log finally: self.log.clear() self.log.uninstall() # testbed self.testbed.deactivate() # os.environ for key, value in self.origin_environ.iteritems(): if value is not None: os.environ[key] = value def execute_tasks(self, queue_name): taskqueue_stub = apiproxy_stub_map.apiproxy.GetStub("taskqueue") tasks = taskqueue_stub.GetTasks(queue_name) for task in tasks: deferred.run(base64.b64decode(task["body"])) taskqueue_stub.DeleteTask(queue_name, task["name"])
class TestCase(unittest.TestCase): __metaclass__ = abc.ABCMeta root_path = os.path.dirname(os.path.dirname(__file__)) environ = dict() domain = None use_cookie = False def setUp(self): # webtest if self.use_cookie: cookiejar = cookielib.CookieJar() else: cookiejar = None self.app = TestApp(utils.app, domain=self.domain, cookiejar=cookiejar) # os.environ self.origin_environ = dict() if "HTTP_HOST" not in self.environ.viewkeys(): self.environ["HTTP_HOST"] = "localhost" for key, value in self.environ.viewitems(): self.origin_environ[key], os.environ[key] = os.environ.get( key), value # testbed self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub( consistency_policy=datastore_stub_util. PseudoRandomHRConsistencyPolicy(probability=0)) self.testbed.init_blobstore_stub() self.testbed.init_files_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(root_path=self.root_path) # logging self.log = LogCapture(level=logging.WARNING) self.log.install() def tearDown(self): try: # logging for record in self.log.records: pathname = get_tail(record.pathname).group("tail") log = (record.levelname, pathname.replace(os.path.abspath(os.curdir), "").lstrip("/"), record.funcName, record.getMessage()) if getattr(self, "expected_logs", None): if log in self.expected_logs: continue matched = None for expected_log in self.expected_logs: if "..." in expected_log[3]: if log[:2] == expected_log[:2]: if doctest._ellipsis_match( expected_log[3], log[3]): matched = True continue if matched: continue print(record.levelname, pathname, record.lineno, record.funcName, record.getMessage()) assert not log finally: self.log.clear() self.log.uninstall() # testbed self.testbed.deactivate() # os.environ for key, value in self.origin_environ.iteritems(): if value is not None: os.environ[key] = value def execute_tasks(self, queue_name): taskqueue_stub = apiproxy_stub_map.apiproxy.GetStub("taskqueue") tasks = taskqueue_stub.GetTasks(queue_name) for task in tasks: deferred.run(base64.b64decode(task["body"])) taskqueue_stub.DeleteTask(queue_name, task["name"])
class TestCase(unittest.TestCase): __metaclass__ = abc.ABCMeta root_path = os.path.dirname(os.path.dirname(__file__)) environ = dict() domain = None use_cookie = False application = tap.app is_endpoints = False def __init__(self, *argv, **kwargv): super(TestCase, self).__init__(*argv, **kwargv) if isinstance(self.application, endpoints.api_config._ApiDecorator): api_names = list() for api_class in self.application.get_api_classes(): for name, _method in api_class.all_remote_methods().items(): api_names.append(name) self.api_names = tuple(api_names) self.application = endpoints.api_server([self.application], restricted=False) self.is_endpoints = True else: self.api_names = tuple() def setUp(self): # webtest if self.use_cookie: cookiejar = cookielib.CookieJar() else: cookiejar = None self.app = TestApp(self.application, domain=self.domain, cookiejar=cookiejar) # os.environ self.origin_environ = dict() if "HTTP_HOST" not in self.environ.viewkeys(): self.environ["HTTP_HOST"] = "localhost" for key, value in self.environ.viewitems(): self.origin_environ[key], os.environ[key] = os.environ.get(key), value # testbed self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub( consistency_policy=datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0), root_path=self.root_path, ) self.testbed.init_blobstore_stub() self.testbed.init_files_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(root_path=self.root_path) self.testbed.init_urlfetch_stub() self.testbed.init_user_stub() # logging self.log = LogCapture(level=logging.WARNING) self.log.install() def tearDown(self): restore() try: # logging for record in self.log.records: if self.is_endpoints and len(record.args) >= 3: exception = record.args[2] if isinstance(exception, endpoints.ServiceException): try: str(exception) except TypeError: record.args[2].args = [str(arg) for arg in exception.args] except UnicodeEncodeError: record.args[2].args = [unicode(arg) for arg in exception.args] pathname = get_tail(record.pathname).group("tail") curdir_abspath = os.path.abspath(os.curdir) if is_mac: if curdir_abspath.startswith(mac_volumes_prefix): curdir_abspath = curdir_abspath[mac_volumes_prefix_length:] if pathname.startswith(mac_volumes_prefix): pathname = pathname[mac_volumes_prefix_length:] else: curdir_abspath = curdir_abspath.lstrip('/') pathname = pathname.lstrip('/') log = (record.levelname, pathname.replace(curdir_abspath, "").lstrip("/"), record.funcName, record.getMessage()) if getattr(self, "expected_logs", None): if log in self.expected_logs: continue matched = None for expected_log in self.expected_logs: if "..." in expected_log[3]: if log[:2] == expected_log[:2]: if doctest._ellipsis_match(expected_log[3], log[3]): matched = True continue if matched: continue elif self.is_endpoints: expected_log = ( 'WARNING', 'google/appengine/ext/ndb/tasklets.py', '_help_tasklet_along', '... generator ...(....py:...) raised ...Exception(...)') if log[:2] == expected_log[:2]: if doctest._ellipsis_match(expected_log[3], log[3]): matched = True continue print(record.levelname, pathname, record.lineno, record.funcName, record.getMessage()) assert not log finally: self.log.clear() self.log.uninstall() # testbed self.testbed.deactivate() # os.environ for key, value in self.origin_environ.iteritems(): if value is not None: os.environ[key] = value def execute_tasks(self, queue_name): taskqueue_stub = apiproxy_stub_map.apiproxy.GetStub("taskqueue") tasks = taskqueue_stub.GetTasks(queue_name) for task in tasks: deferred.run(base64.b64decode(task["body"])) taskqueue_stub.DeleteTask(queue_name, task["name"]) def endpoints_uri(self, endpoint): api_class_name, api_method_name = endpoint.split(".", 1) real_api_method_name = "_{0}_{1}".format(api_class_name, api_method_name) assert real_api_method_name in self.api_names return "/_ah/spi/{0}.{1}".format(api_class_name, real_api_method_name) def endpoints_via_oauth(self, email=None, _auth_domain=None, _user_id=None, federated_identity=None, federated_provider=None, _strict_mode=False): if email is not None: if _auth_domain is None: _auth_domain = email.split("@", 1)[1] if _user_id is None: _user_id = str(tap.base_decoder(sorted(set(email)))(email)) user = users.User(email, _auth_domain, _user_id, federated_identity, federated_provider, _strict_mode) mock("endpoints.get_current_user", returns=user, tracker=None)