def get_checked_versions(): # There are different reasons to not return versions: # i) we're merge day: the versions are changing # ii) not consecutive versions numbers # iii) bugzilla updated nightly version but p-d is not updated if is_merge_day(): return {} versions = lmdversions.get(base=True) versions["central"] = versions["nightly"] v = [versions[k] for k in ["release", "beta", "central"]] versions = {k: str(v) for k, v in versions.items()} if v[0] + 2 == v[1] + 1 == v[2]: nightly_bugzilla = get_nightly_version_from_bz() if v[2] != nightly_bugzilla: from . import logger logger.info( "Versions mismatch between Bugzilla and product-details") return {} return versions from . import logger logger.info("Not consecutive versions in product/details") return {}
def test_unique_esr(self): # Check no esr previous is present with self.setup_versions(nightly="55.0a1", devel="54.0b6", stable="53.0.2", esr="52.1.1esr"): v = versions.get(base=True) self.assertDictEqual( v, { 'nightly': 55, 'beta': 54, 'release': 53, 'esr': 52, 'esr_previous': None, })
def test_version_dates(self): self.assertEqual(versions.getMajorDate(46), datetime.datetime(2016, 4, 26, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('46'), datetime.datetime(2016, 4, 26, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('46.0'), datetime.datetime(2016, 4, 26, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('46.0.1'), datetime.datetime(2016, 4, 26, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('1'), datetime.datetime(2004, 11, 9, 8, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('1.0'), datetime.datetime(2004, 11, 9, 8, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('1.5'), datetime.datetime(2005, 11, 29, 8, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('14'), datetime.datetime(2012, 7, 17, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('14.0'), datetime.datetime(2012, 7, 17, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('14.0.1'), datetime.datetime(2012, 7, 17, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('33'), datetime.datetime(2014, 10, 14, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('33.0'), datetime.datetime(2014, 10, 14, 7, 0, tzinfo=tzutc())) self.assertEqual(versions.getMajorDate('33.1'), datetime.datetime(2014, 11, 10, 8, 0, tzinfo=tzutc())) v = versions.get(base=True) self.assertTrue( versions.getMajorDate(v['release']) <= versions.getMajorDate( v['beta']) <= versions.getMajorDate(v['aurora']) <= versions.getMajorDate(v['nightly'])) date = utils.get_date_ymd('2011-08-24T14:52:52Z') self.assertEqual(date - versions.getMajorDate('7'), datetime.timedelta(-34, 28372)) self.assertEqual( versions.getCloserMajorRelease(date), ('7.0', datetime.datetime(2011, 9, 27, 7, 0, tzinfo=tzutc()))) self.assertEqual( versions.getCloserMajorRelease(date, negative=True), ('6.0', datetime.datetime(2011, 8, 16, 7, 0, tzinfo=tzutc()))) self.assertEqual( versions.getCloserMajorRelease(date, negative=False), ('7.0', datetime.datetime(2011, 9, 27, 7, 0, tzinfo=tzutc())))
def test_dual_esr(self): # Check esr & esr previous with self.setup_versions(nightly="55.0a1", devel="54.0b6", stable="53.0.2", esr="45.9.0esr", esr_next="52.1.1esr"): v = versions.get(base=True) self.assertDictEqual( v, { 'nightly': 55, 'beta': 54, 'release': 53, 'esr': 52, 'esr_previous': 45, })
def test_info_from_major(self): v = versions.get(base=True) i = socorro.ProductVersions.get_info_from_major(v) self.assertIsNotNone(i)
def run(self, only=None): """ Build bug analysis for a specified Bugzilla query Used by taskcluster - no db interaction """ assert self.repository is not None, \ 'Missing mozilla repository' # Update HG central to get new patches revisions self.repository.checkout(b'central') # Get official mozilla release versions current_versions = versions.get(True) # Load all analysis for analysis in api_client.list_analysis(): # Check version number current_version = current_versions.get(analysis['name']) if current_version is None: raise Exception('Unsupported analysis {}'.format( analysis['name'])) # noqa if analysis['version'] != current_version: data = { 'version': current_version, } analysis = api_client.update_analysis(analysis['id'], data) logger.info('Updated analysis version', name=analysis['name'], version=analysis['version']) # noqa # Mark bugs already in analysis logger.info('List remote bugs', name=analysis['name']) analysis_details = api_client.get_analysis(analysis['id']) for bug in analysis_details['bugs']: sync = self.get_bug_sync(bug['bugzilla_id']) sync.setup_remote(analysis) # Get bugs from bugzilla for this analysis logger.info('List bugzilla bugs', name=analysis['name']) raw_bugs = self.list_bugs(analysis['parameters']) for bugzilla_id, bug_data in raw_bugs.items(): sync = self.get_bug_sync(bugzilla_id) sync.setup_bugzilla(analysis, bug_data) merge_tests = [] for sync in self.sync.values(): # Filter bugs when 'only' is filled if only is not None and sync.bugzilla_id not in only: logger.debug('Skip', bz_id=sync.bugzilla_id) continue if len(sync.on_bugzilla) > 0: if self.update_bug(sync): merge_tests += sync.merge_tests elif len(sync.on_remote) > 0: self.delete_bug(sync) # Sort merge tests by branches logger.info('Running merge tests', nb=len(merge_tests)) merge_tests = sorted(merge_tests, key=lambda x: x.branch) groups = itertools.groupby(merge_tests, lambda x: x.branch) for branch, tests in groups: # Switch to branch and get parent revision self.repository.checkout(branch) # Run all the merge tests for this revision for merge_test in tests: self.run_merge_test(merge_test) # Send report self.report.send()
def run(self, only=None): ''' Build bug analysis for a specified Bugzilla query Used by taskcluster - no db interaction ''' assert self.repository is not None, \ 'Missing mozilla repository' # Update HG central to get new patches revisions self.repository.checkout(b'central') # Get official mozilla release versions current_versions = versions.get(True) # Load all analysis for analysis in api_client.list_analysis(): # Check version number current_version = current_versions.get(analysis['name']) if current_version is None: raise Exception('Unsupported analysis {}'.format(analysis['name'])) # noqa if analysis['version'] != current_version: data = { 'version': current_version, } analysis = api_client.update_analysis(analysis['id'], data) logger.info('Updated analysis version', name=analysis['name'], version=analysis['version']) # noqa # Mark bugs already in analysis logger.info('List remote bugs', name=analysis['name']) analysis_details = api_client.get_analysis(analysis['id']) for bug in analysis_details['bugs']: sync = self.get_bug_sync(bug['bugzilla_id']) sync.setup_remote(analysis) # Get bugs from bugzilla for this analysis logger.info('List bugzilla bugs', name=analysis['name']) raw_bugs = list_bugs(analysis['parameters']) for bugzilla_id, bug_data in raw_bugs.items(): sync = self.get_bug_sync(bugzilla_id) sync.setup_bugzilla(analysis, bug_data) merge_tests = [] for sync in self.sync.values(): # Filter bugs when 'only' is filled if only is not None and sync.bugzilla_id not in only: logger.debug('Skip', bz_id=sync.bugzilla_id) continue if len(sync.on_bugzilla) > 0: if self.update_bug(sync): merge_tests += sync.merge_tests elif len(sync.on_remote) > 0: self.delete_bug(sync) # Sort merge tests by branches logger.info('Running merge tests', nb=len(merge_tests)) merge_tests = sorted(merge_tests, key=lambda x: x.branch) groups = itertools.groupby(merge_tests, lambda x: x.branch) for branch, tests in groups: # Switch to branch and get parent revision self.repository.checkout(branch) # Run all the merge tests for this revision for merge_test in tests: self.run_merge_test(merge_test) # Send report self.report.send(self.app_channel)
def test_versions(self): v = versions.get(base=True) self.assertTrue( v['esr'] <= v['release'] <= v['beta'] < v['aurora'] < v['nightly'])