def get_signatures(self, **kwargs): """Return top crashers by signatures. See http://socorro.readthedocs.org/en/latest/middleware.html#tcbs """ filters = [ ("product", None, "str"), ("version", None, "str"), ("crash_type", "all", "str"), ("to_date", datetimeutil.utc_now(), "datetime"), ("duration", datetime.timedelta(7), "timedelta"), ("os", None, "str"), ("limit", 100, "int"), ("date_range_type", None, "str") ] params = external_common.parse_arguments(filters, kwargs) params.logger = logger try: connection = self.database.connection() cursor = connection.cursor() return tcbs.twoPeriodTopCrasherComparison(cursor, params) finally: connection.close()
def get_signatures(self, **kwargs): """Return top crashers by signatures. See http://socorro.readthedocs.org/en/latest/middleware.html#tcbs """ filters = [ ("product", None, "str"), ("version", None, "str"), ("crash_type", "all", "str"), ("to_date", datetimeutil.utc_now(), "datetime"), ("duration", datetime.timedelta(7), "timedelta"), ("os", None, "str"), ("limit", 100, "int"), ("date_range_type", None, "str") ] params = external_common.parse_arguments(filters, kwargs) params.logger = logger # what the twoPeriodTopCrasherComparison() function does is that it # makes a start date from taking the to_date - duration if params.duration > datetime.timedelta(30): raise BadArgumentError('Duration too long. Max 30 days.') with self.get_connection() as connection: return tcbs.twoPeriodTopCrasherComparison(connection, params)
def test_twoPeriodTopCrasherComparisonLimited(self): lastweek = self.now - datetime.timedelta(days=7) lastweek_str = datetimeutil.date_to_string(lastweek.date()) two_weeks = datetimeutil.date_to_string(self.now.date() - datetime.timedelta(days=14)) self.params.limit = 1 res = tcbs.twoPeriodTopCrasherComparison(self.connection, self.params) res_expected = { 'totalPercentage': 0.58333333333333304, 'end_date': lastweek_str, 'start_date': two_weeks, 'crashes': [{ 'count': 14L, 'mac_count': 1L, 'content_count': 0, 'first_report': lastweek_str, 'previousRank': 'null', 'currentRank': 0, 'startup_percent': None, 'versions': 'plugin1, plugin2', 'first_report_exact': lastweek_str + ' 00:00:00', 'percentOfTotal': 0.58333333333333304, 'changeInRank': 'new', 'is_gc_count': 1L, 'win_count': 12L, 'changeInPercentOfTotal': 'new', 'linux_count': 1L, 'hang_count': 0L, 'signature': 'Fake Signature #1', 'versions_count': 2, 'previousPercentOfTotal': 'null', 'plugin_count': 0 }], 'totalNumberOfCrashes': 24L } eq_(res, res_expected)
def test_twoPeriodTopCrasherComparisonLimited(self): lastweek = self.now - datetime.timedelta(days=7) lastweek_str = datetimeutil.date_to_string(lastweek.date()) two_weeks = datetimeutil.date_to_string(self.now.date() - datetime.timedelta(days=14)) self.params.limit = 1 res = tcbs.twoPeriodTopCrasherComparison( self.connection, self.params ) res_expected = { 'totalPercentage': 0.58333333333333304, 'end_date': lastweek_str, 'start_date': two_weeks, 'crashes': [{ 'count': 14L, 'mac_count': 1L, 'content_count': 0, 'first_report': lastweek_str, 'previousRank': 'null', 'currentRank': 0, 'startup_percent': None, 'versions': 'plugin1, plugin2', 'first_report_exact': lastweek_str + ' 00:00:00', 'percentOfTotal': 0.58333333333333304, 'changeInRank': 'new', 'is_gc_count': 1L, 'win_count': 12L, 'changeInPercentOfTotal': 'new', 'linux_count': 1L, 'hang_count': 0L, 'signature': 'Fake Signature #1', 'versions_count': 2, 'previousPercentOfTotal': 'null', 'plugin_count': 0 }], 'totalNumberOfCrashes': 24L } eq_(res, res_expected)
def test_twoPeriodTopCrasherComparisonLimited(self): lastweek = self.now - datetime.timedelta(days=7) lastweek_str = datetimeutil.date_to_string(lastweek.date()) two_weeks = datetimeutil.date_to_string(self.now.date() - datetime.timedelta(days=14)) self.params.limit = 1 res = tcbs.twoPeriodTopCrasherComparison(self.connection, self.params) res_expected = { "totalPercentage": 0.58333333333333304, "end_date": lastweek_str, "start_date": two_weeks, "crashes": [ { "count": 14L, "mac_count": 1L, "content_count": 0, "first_report": lastweek_str, "previousRank": "null", "currentRank": 0, "startup_percent": None, "versions": "plugin1, plugin2", "first_report_exact": lastweek_str + " 00:00:00", "percentOfTotal": 0.58333333333333304, "changeInRank": "new", "is_gc_count": 1L, "win_count": 12L, "changeInPercentOfTotal": "new", "linux_count": 1L, "hang_count": 0L, "signature": "Fake Signature #1", "versions_count": 2, "previousPercentOfTotal": "null", "plugin_count": 0, } ], "totalNumberOfCrashes": 24L, } eq_(res, res_expected)