def test_fail__update_product_versions(self): with patch('socorro.cron.dailyMatviews.logger'): cursor = self.connection.cursor() cursor.execute(""" CREATE OR REPLACE FUNCTION update_product_versions() RETURNS boolean AS $$ BEGIN RETURN false; END; $$ LANGUAGE plpgsql; """) self.connection.commit() dailyMatviews.update(self.config, utc_now().date()) cursor = self.connection.cursor() for each in ('dailyMatviews:update_os_versions', 'dailyMatviews:update_adu', 'dailyMatviews:update_signatures', ): cursor.execute( 'select last_success from cronjobs where cronjob=%s', [each] ) last_success = cursor.fetchone()[0] self.assertTrue(last_success) for each in ('dailyMatviews:update_product_versions', 'dailyMatviews:update_tcbs', ): cursor.execute( 'select last_success from cronjobs where cronjob=%s', [each] ) last_success = cursor.fetchone()[0] self.assertTrue(not last_success)
def test_all_works(self): cursor = mock_cursor({}) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(mock_logger.info.call_count, 9) self.assertEqual(mock_logger.warn.call_count, 0) self.assertEqual(mock_logger.error.call_count, 0)
def test_all_works(self): cursor = mock_cursor({}) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(mock_logger.info.call_count, 15) self.assertEqual(mock_logger.warn.call_count, 0) self.assertEqual(mock_logger.error.call_count, 0)
def test_mock_internal_error(self): cursor = mock_cursor({ 'update_signatures': psycopg2.InternalError, }) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(mock_logger.info.call_count, 8) self.assertEqual(mock_logger.warn.call_count, 1) self.assertEqual(mock_logger.error.call_count, 1)
def test_mock_internal_error(self): cursor = mock_cursor({ 'update_signatures': psycopg2.InternalError, }) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(mock_logger.info.call_count, 15) self.assertEqual(mock_logger.warn.call_count, 0) self.assertEqual(mock_logger.error.call_count, 1)
def test_failing__update_adu(self): cursor = mock_cursor({ 'update_adu': (False,), }) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(mock_logger.info.call_count, 16) self.assertEqual(mock_logger.warn.call_count, 0) self.assertEqual(mock_logger.error.call_count, 0)
def test_failing__update_product_versions(self): cursor = mock_cursor({ 'update_product_versions': (False,), }) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(cursor.called, ['update_product_versions', 'update_signatures', 'update_os_versions', 'update_adu', 'update_daily_crashes', 'update_hang_report', 'rank_compare']) self.assertEqual(mock_logger.info.call_count, 7) self.assertEqual(mock_logger.warn.call_count, 2) self.assertEqual(mock_logger.error.call_count, 0)
def test_all_works_without_errors(self): with patch('socorro.cron.dailyMatviews.logger'): dailyMatviews.update(self.config, utc_now().date()) cursor = self.connection.cursor() for each in ('dailyMatviews:update_product_versions', 'dailyMatviews:update_os_versions', 'dailyMatviews:update_adu', 'dailyMatviews:update_tcbs', 'dailyMatviews:update_signatures', ): cursor.execute( 'select last_success from cronjobs where cronjob=%s', [each] ) last_success = cursor.fetchone()[0] self.assertTrue(last_success)
def test_failing__update_product_versions(self): cursor = mock_cursor({ 'update_product_versions': (False,), }) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(cursor.called, ['update_product_versions', 'update_signatures', 'update_os_versions', 'update_tcbs', 'update_adu', 'update_rank_compare', 'update_nightly_builds', 'update_build_adu', 'update_crashes_by_user', 'update_crashes_by_user_build', 'update_correlations', 'update_home_page_graph', 'update_home_page_graph_build', 'update_tcbs_build', 'update_explosiveness']) self.assertEqual(mock_logger.info.call_count, 15) self.assertEqual(mock_logger.warn.call_count, 1) self.assertEqual(mock_logger.error.call_count, 0)
def test_failing__update_product_versions(self): cursor = mock_cursor({ 'update_product_versions': (False,), }) dailyMatviews.psycopg2 = mock_psycopg2(cursor) with patch('socorro.cron.dailyMatviews.logger') as mock_logger: dailyMatviews.update(self.config, 'some date') self.assertEqual(cursor.called, ['update_product_versions', 'update_signatures', 'update_os_versions', 'update_tcbs', 'update_adu', 'update_hang_report', 'update_rank_compare', 'update_nightly_builds', 'update_build_adu', 'update_crashes_by_user', 'update_crashes_by_user_build', 'update_correlations', 'update_home_page_graph', 'update_home_page_graph_build', 'update_tcbs_build', 'update_explosiveness']) self.assertEqual(mock_logger.info.call_count, 16) self.assertEqual(mock_logger.warn.call_count, 1) self.assertEqual(mock_logger.error.call_count, 0)
except ImportError: import dailyMatviewsConfig as configModule import socorro.lib.ConfigurationManager as configurationManager import socorro.cron.dailyMatviews as dailyMatviews import socorro.lib.util as sutil try: config = configurationManager.newConfiguration( configurationModule=configModule, applicationName="dailyMatviews 0.1") except configurationManager.NotAnOptionError, x: print >>sys.stderr, x print >>sys.stderr, "for usage, try --help" sys.exit() logger = logging.getLogger("dailyMatviews") logger.setLevel(logging.DEBUG) sutil.setupLoggingHandlers(logger, config) sutil.echoConfig(logger, config) exitCode = 255 try: targetDate = date.today() - timedelta(1) exitCode = dailyMatviews.update(config, targetDate) finally: logger.info("done.") sys.exit(exitCode)
except ImportError: import dailyMatviewsConfig as configModule import socorro.lib.ConfigurationManager as configurationManager import socorro.cron.dailyMatviews as dailyMatviews import socorro.lib.util as sutil try: config = configurationManager.newConfiguration( configurationModule=configModule, applicationName="dailyMatviews 0.1") except configurationManager.NotAnOptionError, x: print >> sys.stderr, x print >> sys.stderr, "for usage, try --help" sys.exit() logger = logging.getLogger("dailyMatviews") logger.setLevel(logging.DEBUG) sutil.setupLoggingHandlers(logger, config) sutil.echoConfig(logger, config) exitCode = 255 try: targetDate = date.today() - timedelta(1) exitCode = dailyMatviews.update(config, targetDate) finally: logger.info("done.") sys.exit(exitCode)