aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2011-06-26 14:45:19 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2011-06-26 14:45:19 -0500
commit9ea5c28b7a3bb74cebd923353b9e4c780e658d74 (patch)
treedb6b94000136f160b703fbc1a2cb5a71a5cc1c8c
parent426685e088cd1867c12fc2721d2430e1be335297 (diff)
downloadmediagoblin-9ea5c28b7a3bb74cebd923353b9e4c780e658d74.tar.lz
mediagoblin-9ea5c28b7a3bb74cebd923353b9e4c780e658d74.tar.xz
mediagoblin-9ea5c28b7a3bb74cebd923353b9e4c780e658d74.zip
Celery wasn't really being properly connected during tests.
Lots of fixes to do this. - setup_celery_from_config no longer responsible for checking 'celery_setup_elsewhere'; that's the app's job. (This was a problem because more than the app was relying on using this function) - Allow us to specifically set the config file we're setting up celery from with setup_self - Set up celery_always_eager. This is something we strongly want while doing tests. - Instead of setting up the app in the get_test_app method, let's set that up simply by importing from_tests, which should itself up via from_celery being the environment variable being set.
-rw-r--r--mediagoblin/celery_setup/__init__.py4
-rw-r--r--mediagoblin/celery_setup/from_celery.py8
-rw-r--r--mediagoblin/celery_setup/from_tests.py6
-rw-r--r--mediagoblin/tests/test_mgoblin_app.ini7
-rw-r--r--mediagoblin/tests/tools.py15
5 files changed, 19 insertions, 21 deletions
diff --git a/mediagoblin/celery_setup/__init__.py b/mediagoblin/celery_setup/__init__.py
index b6e35e99..e35dbce2 100644
--- a/mediagoblin/celery_setup/__init__.py
+++ b/mediagoblin/celery_setup/__init__.py
@@ -40,10 +40,6 @@ def setup_celery_from_config(app_config, global_config,
- set_environ: if set, this will CELERY_CONFIG_MODULE to the
settings_module
"""
- if app_config.get('celery_setup_elsewhere') == True:
- # Don't setup celery based on our config file.
- return
-
if global_config.has_key('celery'):
celery_conf = global_config['celery']
else:
diff --git a/mediagoblin/celery_setup/from_celery.py b/mediagoblin/celery_setup/from_celery.py
index 046aaa50..ed0a409e 100644
--- a/mediagoblin/celery_setup/from_celery.py
+++ b/mediagoblin/celery_setup/from_celery.py
@@ -23,7 +23,8 @@ from mediagoblin.celery_setup import setup_celery_from_config
OUR_MODULENAME = __name__
-def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME):
+def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME,
+ default_conf_file='mediagoblin.ini'):
"""
Transform this module into a celery config module by reading the
mediagoblin config file. Set the environment variable
@@ -36,9 +37,9 @@ def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME):
"""
if check_environ_for_conf:
mgoblin_conf_file = os.path.abspath(
- os.environ.get('MEDIAGOBLIN_CONFIG', 'mediagoblin.ini'))
+ os.environ.get('MEDIAGOBLIN_CONFIG', default_conf_file))
else:
- mgoblin_conf_file = 'mediagoblin.ini'
+ mgoblin_conf_file = default_conf_file
if not os.path.exists(mgoblin_conf_file):
raise IOError(
@@ -48,6 +49,7 @@ def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME):
# this is the module that gets set up.
os.environ['CELERY_CONFIG_MODULE'] = module_name
app.MediaGoblinApp(mgoblin_conf_file, setup_celery=False)
+
setup_celery_from_config(
mg_globals.app_config, mg_globals.global_config,
settings_module=module_name,
diff --git a/mediagoblin/celery_setup/from_tests.py b/mediagoblin/celery_setup/from_tests.py
index 43032f41..0f305df2 100644
--- a/mediagoblin/celery_setup/from_tests.py
+++ b/mediagoblin/celery_setup/from_tests.py
@@ -16,11 +16,15 @@
import os
+from mediagoblin.tests.tools import TEST_APP_CONFIG
from mediagoblin.celery_setup.from_celery import setup_self
OUR_MODULENAME = __name__
+CELERY_SETUP = False
if os.environ.get('CELERY_CONFIG_MODULE') == OUR_MODULENAME:
- setup_self(check_environ_for_conf=False, module_name=OUR_MODULENAME)
+ setup_self(check_environ_for_conf=False, module_name=OUR_MODULENAME,
+ default_conf_file=TEST_APP_CONFIG)
+ CELERY_SETUP = True
diff --git a/mediagoblin/tests/test_mgoblin_app.ini b/mediagoblin/tests/test_mgoblin_app.ini
index 94eafb5a..e022d47b 100644
--- a/mediagoblin/tests/test_mgoblin_app.ini
+++ b/mediagoblin/tests/test_mgoblin_app.ini
@@ -7,6 +7,9 @@ email_sender_address = "notice@mediagoblin.example.org"
email_debug_mode = true
db_name = __mediagoblin_tests__
-# Celery shouldn't be set up by the paste app factory as it's set up
-# elsewhere
+# Celery shouldn't be set up by the application as it's setup via
+# mediagoblin.celery_setup.from_celery
celery_setup_elsewhere = true
+
+[celery]
+celery_always_eager = true
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index ebb5f1b5..64f773f0 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -21,9 +21,8 @@ import os, shutil
from paste.deploy import loadapp
from webtest import TestApp
-from mediagoblin import util, mg_globals
+from mediagoblin import util
from mediagoblin.config import read_mediagoblin_config
-from mediagoblin.celery_setup import setup_celery_from_config
from mediagoblin.decorators import _make_safe
from mediagoblin.db.open import setup_connection_and_db_from_config
@@ -36,7 +35,6 @@ TEST_APP_CONFIG = pkg_resources.resource_filename(
TEST_USER_DEV = pkg_resources.resource_filename(
'mediagoblin.tests', 'test_user_dev')
MGOBLIN_APP = None
-CELERY_SETUP = False
USER_DEV_DIRECTORIES_TO_SETUP = [
'media/public', 'media/queue',
@@ -60,8 +58,10 @@ def suicide_if_bad_celery_environ():
def get_test_app(dump_old_app=True):
suicide_if_bad_celery_environ()
+ # Leave this imported as it sets up celery.
+ from mediagoblin.celery_setup import from_tests
+
global MGOBLIN_APP
- global CELERY_SETUP
# Just return the old app if that exists and it's okay to set up
# and return
@@ -103,13 +103,6 @@ def get_test_app(dump_old_app=True):
app = TestApp(test_app)
MGOBLIN_APP = app
- # setup celery
- if not CELERY_SETUP:
- setup_celery_from_config(
- mg_globals.app_config, mg_globals.global_config,
- set_environ=True)
- CELERY_SETUP = True
-
return app