Skip to content

Commit

Permalink
Merge pull request #193 from appsembler/john/course-mau-settings
Browse files Browse the repository at this point in the history
Default setting now disables Course MAU metrics pipeline scheduled task
  • Loading branch information
johnbaldwin authored Mar 9, 2020
2 parents b64340b + 6ad8508 commit 35e621a
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 1 deletion.
7 changes: 6 additions & 1 deletion figures/settings/lms_production.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ def update_webpack_loader(webpack_loader_settings, figures_env_tokens):
def update_celerybeat_schedule(celerybeat_schedule_settings, figures_env_tokens):
"""
Figures pipeline job schedule configuration in CELERYBEAT_SCHEDULE.
Daily metrics pipeline scheduler is on by default
Course MAU metrics pipeline scheduler is off by default
TODO: Language improvement: Change the "IMPORT" to "CAPTURE" or "EXTRACT"
"""
if figures_env_tokens.get('ENABLE_DAILY_METRICS_IMPORT', True):
celerybeat_schedule_settings['figures-populate-daily-metrics'] = {
Expand All @@ -35,7 +40,7 @@ def update_celerybeat_schedule(celerybeat_schedule_settings, figures_env_tokens)
),
}

if figures_env_tokens.get('ENABLE_DAILY_MAU_COLLECTION', True):
if figures_env_tokens.get('ENABLE_DAILY_MAU_IMPORT', False):
celerybeat_schedule_settings['figures-daily-mau'] = {
'task': 'figures.tasks.populate_all_mau',
'schedule': crontab(
Expand Down
42 changes: 42 additions & 0 deletions tests/test_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,45 @@ def test_update_settings(self, figures_env_tokens, run_celery):
assert self.CELERY_TASK_NAME not in settings.CELERYBEAT_SCHEDULE

assert settings.ENV_TOKENS['FIGURES'] == figures_env_tokens


class TestDailyMauPipelineSettings(object):
"""Tests MAU pipeline settings
See how edx-platforms does plugins. App: openedx.core.djangoapps.plugins
* constants.PLUGIN_APP_SETTINGS_FUNC_NAME
* openedx.core.djangoapps.plugins.plugin_settings
TODO: Abstract the core functionality in this test class because it presents
a pattern for testing plugin CeleryBeat schedule settings
"""
TASK_NAME = 'figures-daily-mau'
TASK_FUNC = 'figures.tasks.populate_all_mau'

@pytest.fixture(autouse=True)
def setup(self, db):
self.settings = mock.Mock(
WEBPACK_LOADER={},
CELERYBEAT_SCHEDULE={},
FEATURES={},
ENV_TOKENS={},
CELERY_IMPORTS=[],
)

def test_daily_mau_pipeline_flag_enabled(self):
self.settings.ENV_TOKENS['FIGURES'] = { 'ENABLE_DAILY_MAU_IMPORT': True }
plugin_settings(self.settings)
assert self.TASK_NAME in self.settings.CELERYBEAT_SCHEDULE
assert set(['task', 'schedule']) == set(
self.settings.CELERYBEAT_SCHEDULE[self.TASK_NAME].keys())

def test_daily_mau_pipeline_flag_disabled(self):
self.settings.ENV_TOKENS['FIGURES'] = { 'ENABLE_DAILY_MAU_IMPORT': False }
plugin_settings(self.settings)
assert self.TASK_NAME not in self.settings.CELERYBEAT_SCHEDULE

def test_daily_mau_pipeline_flag_not_present(self):
assert 'FIGURES' not in self.settings.ENV_TOKENS
plugin_settings(self.settings)
assert self.TASK_NAME not in self.settings.CELERYBEAT_SCHEDULE

0 comments on commit 35e621a

Please sign in to comment.