class StubManager(object): def __init__(self): self.testbed = Testbed() self.active_stubs = None self.pre_test_stubs = None def setup_stubs(self, connection): if self.active_stubs is not None: return if not have_appserver: self.setup_local_stubs(connection) def activate_test_stubs(self): if self.active_stubs == 'test': return self.testbed.activate() self.pre_test_stubs = self.active_stubs self.active_stubs = 'test' self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(root_path=PROJECT_DIR) self.testbed.init_urlfetch_stub() self.testbed.init_user_stub() self.testbed.init_xmpp_stub() self.testbed.init_channel_stub() def deactivate_test_stubs(self): if self.active_stubs == 'test': self.testbed.deactivate() self.active_stubs = self.pre_test_stubs def setup_local_stubs(self, connection): if self.active_stubs == 'local': return from .base import get_datastore_paths from google.appengine.tools import dev_appserver_main args = dev_appserver_main.DEFAULT_ARGS.copy() args.update(get_datastore_paths(connection.settings_dict)) args.update(connection.settings_dict.get('DEV_APPSERVER_OPTIONS', {})) log_level = logging.getLogger().getEffectiveLevel() logging.getLogger().setLevel(logging.WARNING) from google.appengine.tools import dev_appserver dev_appserver.SetupStubs('dev~' + appid, **args) logging.getLogger().setLevel(log_level) self.active_stubs = 'local' def setup_remote_stubs(self, connection): if self.active_stubs == 'remote': return if not connection.remote_api_path: from ..utils import appconfig for handler in appconfig.handlers: if handler.script in REMOTE_API_SCRIPTS: connection.remote_api_path = handler.url.split('(', 1)[0] break server = '%s.%s' % (connection.remote_app_id, connection.domain) remote_url = 'https://%s%s' % (server, connection.remote_api_path) logging.info("Setting up remote_api for '%s' at %s." % (connection.remote_app_id, remote_url)) if not have_appserver: logging.info( "Connecting to remote_api handler.\n\n" "IMPORTANT: Check your login method settings in the " "App Engine Dashboard if you have problems logging in. " "Login is only supported for Google Accounts.") from google.appengine.ext.remote_api import remote_api_stub remote_api_stub.ConfigureRemoteApi( None, connection.remote_api_path, auth_func, servername=server, secure=connection.secure_remote_api, rpc_server_factory=rpc_server_factory) retry_delay = 1 while retry_delay <= 16: try: remote_api_stub.MaybeInvokeAuthentication() except HTTPError, e: if not have_appserver: logging.info("Retrying in %d seconds..." % retry_delay) time.sleep(retry_delay) retry_delay *= 2 else: break else:
class StubManager(object): def __init__(self): self.active_stubs = None self.pre_test_stubs = None def setup_stubs(self, connection): if self.active_stubs is not None: return if not have_appserver: self.setup_local_stubs(connection) def activate_test_stubs(self, connection): from google.appengine.ext.testbed import Testbed self.testbed = Testbed() if self.active_stubs == 'test': return os.environ['HTTP_HOST'] = "%s.appspot.com" % appid appserver_opts = connection.settings_dict.get('DEV_APPSERVER_OPTIONS', {}) high_replication = appserver_opts.get('high_replication', False) datastore_opts = {} if high_replication: from google.appengine.datastore import datastore_stub_util datastore_opts['consistency_policy'] = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=1) self.testbed.activate() self.pre_test_stubs = self.active_stubs self.active_stubs = 'test' self.testbed.init_datastore_v3_stub(**datastore_opts) self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(auto_task_running=True, root_path=PROJECT_DIR) self.testbed.init_urlfetch_stub() self.testbed.init_user_stub() self.testbed.init_xmpp_stub() self.testbed.init_channel_stub() def deactivate_test_stubs(self): if self.active_stubs == 'test': self.testbed.deactivate() self.active_stubs = self.pre_test_stubs def setup_local_stubs(self, connection): if self.active_stubs == 'local': return from .base import get_datastore_paths from google.appengine.tools import dev_appserver_main args = dev_appserver_main.DEFAULT_ARGS.copy() args.update(get_datastore_paths(connection.settings_dict)) args.update(connection.settings_dict.get('DEV_APPSERVER_OPTIONS', {})) log_level = logging.getLogger().getEffectiveLevel() logging.getLogger().setLevel(logging.WARNING) from google.appengine.tools import dev_appserver dev_appserver.SetupStubs('dev~' + appid, **args) logging.getLogger().setLevel(log_level) self.active_stubs = 'local' def setup_remote_stubs(self, connection): if self.active_stubs == 'remote': return if not connection.remote_api_path: from ..utils import appconfig for handler in appconfig.handlers: if handler.script in REMOTE_API_SCRIPTS: connection.remote_api_path = handler.url.split('(', 1)[0] break server = '%s.%s' % (connection.remote_app_id, connection.domain) remote_url = 'https://%s%s' % (server, connection.remote_api_path) logging.info("Setting up remote_api for '%s' at %s." % (connection.remote_app_id, remote_url)) if not have_appserver: logging.info( "Connecting to remote_api handler.\n\n" "IMPORTANT: Check your login method settings in the " "App Engine Dashboard if you have problems logging in. " "Login is only supported for Google Accounts.") from google.appengine.ext.remote_api import remote_api_stub remote_api_stub.ConfigureRemoteApi(None, connection.remote_api_path, auth_func, servername=server, secure=connection.secure_remote_api, rpc_server_factory=rpc_server_factory) retry_delay = 1 while retry_delay <= 16: try: remote_api_stub.MaybeInvokeAuthentication() except HTTPError, e: if not have_appserver: logging.info("Retrying in %d seconds..." % retry_delay) time.sleep(retry_delay) retry_delay *= 2 else: break else:
class StubManager(object): def __init__(self): self.testbed = None self.active_stubs = None self.pre_test_stubs = None def setup_stubs(self, connection): if self.active_stubs is not None: return if not have_appserver: self.activate_stubs(connection) def activate_stubs(self, connection): try: from google.appengine.tools import dev_appserver_main self.setup_local_stubs(connection) except ImportError: # patch: https://github.com/django-nonrel/djangoappengine/issues/97 import sys command_line_args = sys.argv is_local_shell = 'shell' in command_line_args and 'remote' not in command_line_args # datastore_path = connection.settings_dict.get('datastore_path', None) if is_local_shell else None # modification from ..boot import DATA_ROOT datastore_path = os.path.join(DATA_ROOT, 'datastore') # endpatch self.activate_test_stubs(connection, datastore_path) def reset_stubs(self, connection, datastore_path=None): if self.active_stubs == 'test': self.deactivate_test_stubs() self.activate_test_stubs(connection, datastore_path) elif self.active_stubs == 'local': self.setup_local_stubs(connection) elif self.active_stubs == 'remote': self.setup_remote_stubs(connection) def activate_test_stubs(self, connection, datastore_path=None): if self.active_stubs == 'test': return if self.testbed is None: from google.appengine.ext.testbed import Testbed self.testbed = Testbed() self.testbed.activate() self.pre_test_stubs = self.active_stubs self.active_stubs = 'test' os.environ['APPLICATION_ID'] = 'dev~' + appid os.environ['HTTP_HOST'] = "%s.appspot.com" % appid appserver_opts = connection.settings_dict.get('DEV_APPSERVER_OPTIONS', {}) high_replication = appserver_opts.get('high_replication', False) require_indexes = appserver_opts.get('require_indexes', False) use_sqlite = appserver_opts.get('use_sqlite', False) datastore_opts = { 'require_indexes': require_indexes, 'use_sqlite': use_sqlite } if high_replication: from google.appengine.datastore import datastore_stub_util datastore_opts[ 'consistency_policy'] = datastore_stub_util.PseudoRandomHRConsistencyPolicy( probability=1) self.testbed.init_datastore_v3_stub(datastore_file=datastore_path, **datastore_opts) self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(auto_task_running=True, root_path=PROJECT_DIR) self.testbed.init_urlfetch_stub() self.testbed.init_user_stub() self.testbed.init_xmpp_stub() self.testbed.init_channel_stub() def deactivate_test_stubs(self): if self.active_stubs == 'test': self.testbed.deactivate() self.active_stubs = self.pre_test_stubs def setup_local_stubs(self, connection): if self.active_stubs == 'local': return from .base import get_datastore_paths from google.appengine.tools import dev_appserver_main args = dev_appserver_main.DEFAULT_ARGS.copy() args.update(get_datastore_paths(connection.settings_dict)) args.update(connection.settings_dict.get('DEV_APPSERVER_OPTIONS', {})) log_level = logging.getLogger().getEffectiveLevel() logging.getLogger().setLevel(logging.WARNING) try: from google.appengine.tools import dev_appserver except ImportError: from google.appengine.tools import old_dev_appserver as dev_appserver dev_appserver.SetupStubs('dev~' + appid, **args) logging.getLogger().setLevel(log_level) self.active_stubs = 'local' def setup_remote_stubs(self, connection): if self.active_stubs == 'remote': return if not connection.remote_api_path: from djangoappengine.utils import appconfig from google.appengine.api import appinfo default_module = next(m for m in appconfig.modules if m.module_name == appinfo.DEFAULT_MODULE) for handler in default_module.handlers: if handler.script in REMOTE_API_SCRIPTS: connection.remote_api_path = handler.url.split('(', 1)[0] break server = '%s.%s' % (connection.remote_app_id, connection.domain) remote_url = 'https://%s%s' % (server, connection.remote_api_path) logging.info("Setting up remote_api for '%s' at %s." % (connection.remote_app_id, remote_url)) if not have_appserver: logging.info( "Connecting to remote_api handler.\n\n" "IMPORTANT: Check your login method settings in the " "App Engine Dashboard if you have problems logging in. " "Login is only supported for Google Accounts.") from google.appengine.ext.remote_api import remote_api_stub remote_api_stub.ConfigureRemoteApi( None, connection.remote_api_path, auth_func, servername=server, secure=connection.secure_remote_api, rpc_server_factory=rpc_server_factory) retry_delay = 1 while retry_delay <= 16: try: remote_api_stub.MaybeInvokeAuthentication() except HTTPError, e: if not have_appserver: logging.info("Retrying in %d seconds..." % retry_delay) time.sleep(retry_delay) retry_delay *= 2 else: break else:
class StubManager(object): def __init__(self): self.testbed = Testbed() self.active_stubs = None self.pre_test_stubs = None def setup_stubs(self, connection): if self.active_stubs is not None: return if not have_appserver: self.setup_local_stubs(connection) def activate_test_stubs(self): if self.active_stubs == 'test': return self.testbed.activate() self.pre_test_stubs = self.active_stubs self.active_stubs = 'test' self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.testbed.init_urlfetch_stub() self.testbed.init_user_stub() self.testbed.init_xmpp_stub() self.testbed.init_channel_stub() def deactivate_test_stubs(self): if self.active_stubs == 'test': self.testbed.deactivate() self.active_stubs = self.pre_test_stubs def setup_local_stubs(self, connection): if self.active_stubs == 'local': return from .base import get_datastore_paths from google.appengine.tools import dev_appserver_main args = dev_appserver_main.DEFAULT_ARGS.copy() args.update(get_datastore_paths(connection.settings_dict)) args.update(connection.settings_dict.get('DEV_APPSERVER_OPTIONS', {})) log_level = logging.getLogger().getEffectiveLevel() logging.getLogger().setLevel(logging.WARNING) from google.appengine.tools import dev_appserver dev_appserver.SetupStubs(appid, **args) logging.getLogger().setLevel(log_level) self.active_stubs = 'local' def setup_remote_stubs(self, connection): if self.active_stubs == 'remote': return if not connection.remote_api_path: from ..utils import appconfig for handler in appconfig.handlers: if handler.script == REMOTE_API_SCRIPT: connection.remote_api_path = handler.url.split('(', 1)[0] break server = '%s.%s' % (connection.remote_app_id, connection.domain) remote_url = 'https://%s%s' % (server, connection.remote_api_path) logging.info('Setting up remote_api for "%s" at %s' % (connection.remote_app_id, remote_url)) if not have_appserver: print('Connecting to remote_api handler.\n\n' 'IMPORTANT: Check your login method settings in the ' 'App Engine Dashboard if you have problems logging in. ' 'Login is only supported for Google Accounts.\n') from google.appengine.ext.remote_api import remote_api_stub remote_api_stub.ConfigureRemoteApi(None, connection.remote_api_path, auth_func, servername=server, secure=connection.secure_remote_api, rpc_server_factory=rpc_server_factory) retry_delay = 1 while retry_delay <= 16: try: remote_api_stub.MaybeInvokeAuthentication() except HTTPError, e: if not have_appserver: print 'Retrying in %d seconds...' % retry_delay time.sleep(retry_delay) retry_delay *= 2 else: break else:
#!/usr/bin/env python # coding: utf-8 import os import logging from dev_appserver import fix_sys_path fix_sys_path() from google.appengine.ext.testbed import Testbed tb = Testbed() tb.activate() os.environ['APPLICATION_ID'] = 'rss-xmpp' tb.init_xmpp_stub() tb.init_datastore_v3_stub() tb.init_urlfetch_stub() from rss_xmpp.main import * from google.appengine.api import xmpp from rss_xmpp import feedcrawler import unittest url = 'http://feeds.feedburner.com/github' class XMPPTestMessage(xmpp.Message): def reply(self, body, message_type="chat", raw_xml=False, send_message=xmpp.send_message):
#!/usr/bin/env python # coding: utf-8 import os import logging from dev_appserver import fix_sys_path fix_sys_path() from google.appengine.ext.testbed import Testbed tb = Testbed() tb.activate() os.environ['APPLICATION_ID'] = 'rss-xmpp' tb.init_xmpp_stub() tb.init_datastore_v3_stub() tb.init_urlfetch_stub() from rss_xmpp.main import * from google.appengine.api import xmpp from rss_xmpp import feedcrawler import unittest url = 'http://feeds.feedburner.com/github' class XMPPTestMessage(xmpp.Message): def reply(self, body, message_type="chat", raw_xml=False, send_message=xmpp.send_message): super(XMPPTestMessage, self).reply(body, message_type, raw_xml, send_message) logging.debug('\nSent message:\n' + '='*80 + '\n' + body + '='*80 + '\n') class TestRSSXMPP(unittest.TestCase):
class StubManager(object): def __init__(self): self.testbed = None self.active_stubs = None self.pre_test_stubs = None def setup_stubs(self, connection): if self.active_stubs is not None: return if not have_appserver: self.activate_stubs(connection) def activate_stubs(self, connection): try: from google.appengine.tools import dev_appserver_main self.setup_local_stubs(connection) except ImportError: self.activate_test_stubs(connection) def reset_stubs(self, connection, datastore_path=None): if self.active_stubs == "test": self.deactivate_test_stubs() self.activate_test_stubs(connection, datastore_path) elif self.active_stubs == "local": self.setup_local_stubs(connection) elif self.active_stubs == "remote": self.setup_remote_stubs(connection) def activate_test_stubs(self, connection, datastore_path=None): if self.active_stubs == "test": return if self.testbed is None: from google.appengine.ext.testbed import Testbed self.testbed = Testbed() self.testbed.activate() self.pre_test_stubs = self.active_stubs self.active_stubs = "test" os.environ["APPLICATION_ID"] = "dev~" + appid os.environ["HTTP_HOST"] = "%s.appspot.com" % appid appserver_opts = connection.settings_dict.get("DEV_APPSERVER_OPTIONS", {}) high_replication = appserver_opts.get("high_replication", False) require_indexes = appserver_opts.get("require_indexes", False) use_sqlite = appserver_opts.get("use_sqlite", False) datastore_opts = {"require_indexes": require_indexes, "use_sqlite": use_sqlite} if high_replication: from google.appengine.datastore import datastore_stub_util datastore_opts["consistency_policy"] = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=1) self.testbed.init_datastore_v3_stub(datastore_file=datastore_path, **datastore_opts) self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(auto_task_running=True, root_path=PROJECT_DIR) self.testbed.init_urlfetch_stub() self.testbed.init_user_stub() self.testbed.init_xmpp_stub() self.testbed.init_channel_stub() self.testbed.init_app_identity_stub() self.testbed.init_blobstore_stub() self.testbed.init_files_stub() self.testbed.init_images_stub() def deactivate_test_stubs(self): if self.active_stubs == "test": self.testbed.deactivate() self.active_stubs = self.pre_test_stubs def setup_local_stubs(self, connection): if self.active_stubs == "local": return from .base import get_datastore_paths from google.appengine.tools import dev_appserver_main args = dev_appserver_main.DEFAULT_ARGS.copy() args.update(get_datastore_paths(connection.settings_dict)) args.update(connection.settings_dict.get("DEV_APPSERVER_OPTIONS", {})) log_level = logging.getLogger().getEffectiveLevel() logging.getLogger().setLevel(logging.WARNING) try: from google.appengine.tools import dev_appserver except ImportError: from google.appengine.tools import old_dev_appserver as dev_appserver dev_appserver.SetupStubs("dev~" + appid, **args) logging.getLogger().setLevel(log_level) self.active_stubs = "local" def setup_remote_stubs(self, connection): if self.active_stubs == "remote": return if not connection.remote_api_path: from djangoappengine.utils import appconfig from google.appengine.api import appinfo default_module = next(m for m in appconfig.modules if m.module_name == appinfo.DEFAULT_MODULE) for handler in default_module.handlers: if handler.script in REMOTE_API_SCRIPTS: connection.remote_api_path = handler.url.split("(", 1)[0] break server = "%s.%s" % (connection.remote_app_id, connection.domain) remote_url = "https://%s%s" % (server, connection.remote_api_path) logging.info("Setting up remote_api for '%s' at %s." % (connection.remote_app_id, remote_url)) if not have_appserver: logging.info( "Connecting to remote_api handler.\n\n" "IMPORTANT: Check your login method settings in the " "App Engine Dashboard if you have problems logging in. " "Login is only supported for Google Accounts." ) from google.appengine.ext.remote_api import remote_api_stub remote_api_stub.ConfigureRemoteApi( None, connection.remote_api_path, auth_func, servername=server, secure=connection.secure_remote_api, rpc_server_factory=rpc_server_factory, ) retry_delay = 1 while retry_delay <= 16: try: remote_api_stub.MaybeInvokeAuthentication() except HTTPError, e: if not have_appserver: logging.info("Retrying in %d seconds..." % retry_delay) time.sleep(retry_delay) retry_delay *= 2 else: break else: