def test_any_lagged_single_wiki_without_lag_but_older_revisions(self): self._add_edit(hour_offset=4, name='foo') self._add_edit(hour_offset=2, name='bar') service = ReplicationLagService(mw_projects=[mediawiki_project]) self.assertFalse(service.is_any_lagged())
def test_any_lagged_single_wiki_large_threshold_with_lag(self): self._add_edit(hour_offset=31) service = ReplicationLagService( mw_projects=[mediawiki_project], lag_threshold=timedelta(hours=30), ) self.assertTrue(service.is_any_lagged())
def test_any_lagged_two_wikis_both_with_lag(self): # Setup of wiki self._add_edit(hour_offset=4, name='foo', mw_session=self.mwSession) # Setup of wiki2 self._add_edit(hour_offset=4, name='bar', mw_session=self.mwSession2) service = ReplicationLagService(mw_projects=[ mediawiki_project, second_mediawiki_project, ]) self.assertTrue(service.is_any_lagged())
def test_any_lagged_two_wikis_first_with_lag(self): # Setup of wiki self._add_edit(hour_offset=4, name='foo', mw_session=self.mwSession) # Setup of wiki2 self._add_edit(hour_offset=1, name='bar', mw_session=self.mwSession2) service = ReplicationLagService(mw_projects=[ mediawiki_project, second_mediawiki_project, ]) self.assertTrue(service.is_any_lagged())
def recurring_reports(report_id=None): from wikimetrics.configurables import db from wikimetrics.models import ReportStore, RunReport replication_lag_service = ReplicationLagService() if replication_lag_service.is_any_lagged(): task_logger.warning( 'Replication lag detected. ' 'Hence, skipping creating new recurring reports.' ) return try: session = db.get_session() query = session.query(ReportStore) \ .filter(ReportStore.recurrent) \ if report_id is not None: query = query.filter(ReportStore.id == report_id) for report in query.all(): try: task_logger.info('Running recurring report "{0}"'.format(report)) no_more_than = queue.conf.get('MAX_INSTANCES_PER_RECURRENT_REPORT') kwargs = dict() if no_more_than: kwargs['no_more_than'] = no_more_than days_to_run = RunReport.create_reports_for_missed_days( report, session, **kwargs ) for day_to_run in days_to_run: day_to_run.task.delay(day_to_run) except Exception: task_logger.error('Problem running recurring report "{}": {}'.format( report, traceback.format_exc() )) except Exception: task_logger.error('Problem running recurring reports: {}'.format( traceback.format_exc() ))
def test_any_lagged_single_wiki_with_lag(self): self._add_edit(hour_offset=4) service = ReplicationLagService(mw_projects=[mediawiki_project]) self.assertTrue(service.is_any_lagged())
def test_any_lagged_without_wiki(self): service = ReplicationLagService(mw_projects=[]) self.assertFalse(service.is_any_lagged())