示例#1
0
    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'], '*****@*****.**')
示例#2
0
 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))
示例#3
0
    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'], '*****@*****.**')
示例#4
0
 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()
示例#5
0
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
示例#6
0
 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)
示例#7
0
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
示例#8
0
 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
示例#10
0
    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)
示例#11
0
 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()
示例#12
0
 def test_get_now_timestamp(self):
     date = '1991-04-16'
     self.assertGreater(utils.get_now_timestamp(),
                        utils.get_timestamp(date))