def test_hgfileinfo_author(self): path = 'LICENSE' hi = HGFileInfo(path) fi = hi.get(path, authors=['*****@*****.**']) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual(fi['authors']['*****@*****.**']['reviewers'], {}) self.assertEqual(fi['bugs'], set()) self.assertEqual(len(fi['patches']), 1) self.assertEqual(fi['patches'][0]['user'], '*****@*****.**') self.assertEqual( fi, hi.get(path, utils.get_timestamp('2008-01-01'), utils.get_timestamp('2012-01-01'), authors=['*****@*****.**'])) fi = hi.get(path, authors=['*****@*****.**', '*****@*****.**']) self.assertEqual(len(fi['authors']), 2) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual( len(fi['authors']['*****@*****.**']['reviewers']), 1) self.assertEqual( fi['authors']['*****@*****.**']['reviewers']['gerv'], 1) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual(fi['authors']['*****@*****.**']['reviewers'], {}) self.assertEqual(fi['bugs'], set(['547914'])) self.assertEqual(len(fi['patches']), 2) self.assertEqual(fi['patches'][0]['user'], '*****@*****.**') self.assertEqual(fi['patches'][1]['user'], '*****@*****.**')
def test_get_timestamp(self): date = '1991-04-16' self.assertEqual(utils.get_timestamp(date), 671760000) self.assertEqual( utils.get_timestamp(datetime.datetime.strptime(date, '%Y-%m-%d')), 671760000) self.assertGreater(utils.get_timestamp('today'), utils.get_timestamp(date))
def test_hgfileinfo_creation_vs_push_date(self): path = 'LICENSE' hi = HGFileInfo(path, date_type='creation') fi = hi.get(path, utc_ts_to=utils.get_timestamp('2010-02-22')) self.assertEqual(len(fi['authors']), 1) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual(fi['authors']['*****@*****.**']['reviewers'], {}) self.assertEqual(fi['bugs'], set()) self.assertEqual(len(fi['patches']), 1) self.assertEqual(fi['patches'][0]['user'], '*****@*****.**') fi = hi.get(path, utc_ts_to=utils.get_timestamp('2010-02-24')) self.assertEqual(len(fi['authors']), 2) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual( len(fi['authors']['*****@*****.**']['reviewers']), 1) self.assertEqual( fi['authors']['*****@*****.**']['reviewers']['gerv'], 1) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual(fi['authors']['*****@*****.**']['reviewers'], {}) self.assertEqual(fi['bugs'], set(['547914'])) self.assertEqual(len(fi['patches']), 2) self.assertEqual(fi['patches'][0]['user'], '*****@*****.**') self.assertEqual(fi['patches'][1]['user'], '*****@*****.**') hi = HGFileInfo(path, date_type='push') fi = hi.get(path, utc_ts_to=utils.get_timestamp('2010-02-24')) self.assertEqual(len(fi['authors']), 1) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual(fi['authors']['*****@*****.**']['reviewers'], {}) self.assertEqual(fi['bugs'], set()) self.assertEqual(len(fi['patches']), 1) self.assertEqual(fi['patches'][0]['user'], '*****@*****.**') fi = hi.get(path, utc_ts_to=utils.get_timestamp('2010-04-07')) self.assertEqual(len(fi['authors']), 2) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual( len(fi['authors']['*****@*****.**']['reviewers']), 1) self.assertEqual( fi['authors']['*****@*****.**']['reviewers']['gerv'], 1) self.assertEqual(fi['authors']['*****@*****.**']['count'], 1) self.assertEqual(fi['authors']['*****@*****.**']['reviewers'], {}) self.assertEqual(fi['bugs'], set(['547914'])) self.assertEqual(len(fi['patches']), 2) self.assertEqual(fi['patches'][0]['user'], '*****@*****.**') self.assertEqual(fi['patches'][1]['user'], '*****@*****.**')
def add(tool, mails, extra, result, ts=lmdutils.get_timestamp('now')): check(Email.__tablename__) with FileLock(lock_path): tool = Tool.get_or_create(tool) for mail in mails: session.add(Email(tool, ts, mail, extra, result)) session.commit()
def analyze(channel, data, date='today', max_days=3, cache=None, verbose=False): results = {} if data: bt_info = get_bt(data, cache=cache, verbose=verbose) ts = utils.get_timestamp(date) date = utils.get_date_ymd(date) for sgn, info1 in bt_info.items(): res = [] info = walk_on_the_bt(channel, ts, max_days, info1, sgn=sgn, verbose=verbose) for bt, info2 in info1.items(): if not info2['processed']: l = [] haspatch = False for i in range(len(info2['files'])): f = info2['files'][i] if f: if not haspatch and info[f]['patches']: haspatch = True l.append((bt[i], info[f])) else: l.append((bt[i], {'filename': '', 'patches': []})) if haspatch: res.append({'count': info2['count'], 'uuids': info2['uuids'], 'bt': l}) if res: results[sgn] = res return results
def test_date_from_timestamp(self): date = '1975-03-16' dt = utils.get_date_ymd(date) ts = utils.get_timestamp(dt) self.assertEqual(dt, datetime.datetime(1975, 3, 16, tzinfo=tzutc())) self.assertEqual(ts, 164160000) new_dt = utils.get_date_from_timestamp(ts) self.assertEqual(new_dt, dt)
def get_ts(date, default=0): if isinstance(date, six.integer_types): return date if date: if isinstance(date, six.string_types): date = dateutil.parser.parse(date) date = int(calendar.timegm(date.timetuple())) return date if default == 'now': return lmdutils.get_timestamp('now') return default
def test_get_timestamp(self): date = '1991-04-16' self.assertEqual(utils.get_timestamp(date), 671760000) self.assertEqual( utils.get_timestamp(datetime.datetime.strptime(date, '%Y-%m-%d')), 671760000) self.assertGreater(utils.get_timestamp('today'), utils.get_timestamp(date)) ts1 = utils.get_timestamp('now') time.sleep(1.01) ts2 = utils.get_timestamp('now') self.assertGreater(ts2, ts1)
def analyze(channel, data, date='today', max_days=3, cache=None, verbose=False): results = {} if data: bt_info = get_bt(data, cache=cache, verbose=verbose) ts = utils.get_timestamp(date) date = utils.get_date_ymd(date) for sgn, info1 in bt_info.items(): res = [] info = walk_on_the_bt(channel, ts, max_days, info1, sgn=sgn, verbose=verbose) for bt, info2 in info1.items(): if not info2['processed']: l = [] haspatch = False for i in range(len(info2['files'])): f = info2['files'][i] if f: if not haspatch and info[f]['patches']: haspatch = True l.append((bt[i], info[f])) else: l.append((bt[i], {'filename': '', 'patches': []})) if haspatch: res.append({ 'count': info2['count'], 'uuids': info2['uuids'], 'bt': l }) if res: results[sgn] = res return results
def test_filestats_date(self): path = 'LICENSE' info = FileStats(path, utc_ts=utils.get_timestamp('today')).get_info() self.assertEqual(info['components'], set()) self.assertIsNotNone(info['needinfo']) self.assertEqual(info['path'], path) self.assertIsNone(info['guilty']) info = FileStats(path, utc_ts=utils.get_timestamp('2010-04-06')).get_info() self.assertEqual(info['infered_component'], 'Core::General') self.assertEqual(info['needinfo'], '*****@*****.**') self.assertEqual(info['path'], path) self.assertEqual(len(info['guilty']['patches']), 1) self.assertEqual(info['guilty']['main_author'], '*****@*****.**') self.assertEqual(info['guilty']['last_author'], '*****@*****.**') self.assertEqual(info['bugs'], 1) self.assertEqual( info, FileStats(path, utc_ts=utils.get_timestamp('2010-04-07')).get_info()) self.assertEqual( info, FileStats(path, utc_ts=utils.get_timestamp('2010-04-08')).get_info()) info = FileStats( path, utc_ts=utils.get_timestamp('2010-04-09')).get_static_info() self.assertEqual(info['components'], set()) self.assertIsNone(info['needinfo']) self.assertEqual(info['path'], path) self.assertIsNone(info['guilty']) self.assertNotIn('bugs', info) info = FileStats(path, utc_ts=utils.get_timestamp('2008-03-21')).get_info() self.assertEqual(info['infered_component'], 'Core::General') self.assertEqual(info['needinfo'], '*****@*****.**') self.assertEqual(info['path'], path) self.assertEqual(len(info['guilty']['patches']), 1) self.assertEqual(info['guilty']['main_author'], '*****@*****.**') self.assertEqual(info['guilty']['last_author'], '*****@*****.**') self.assertEqual(info['bugs'], 1)
def add(tool, bugid, ts=lmdutils.get_timestamp('now'), extra=''): check(BugChange.__tablename__) with FileLock(lock_path): session.add(BugChange(tool, ts, bugid, extra)) session.commit()
def test_get_now_timestamp(self): date = '1991-04-16' self.assertGreater(utils.get_now_timestamp(), utils.get_timestamp(date))