only care about unclassifieds in gate queue
we really don't care about check failures for classification, because those might just be terrible code, which we get a lot of. So only report unclassified tests to the user on gate failures. Now with extra tests for this behavior! Change-Id: I52044afb4f3a1bf3f22ba4c0e8d38d76271ffc00
This commit is contained in:
parent
047433b5b0
commit
a04553ee89
@ -134,7 +134,9 @@ class FailEvent(object):
|
|||||||
bug_map = {}
|
bug_map = {}
|
||||||
for job in self.failed_jobs:
|
for job in self.failed_jobs:
|
||||||
if len(job.bugs) is 0:
|
if len(job.bugs) is 0:
|
||||||
bug_map[job.name] = None
|
# we only care about fails with missing bugs in the gate
|
||||||
|
if self.queue() == "gate":
|
||||||
|
bug_map[job.name] = None
|
||||||
else:
|
else:
|
||||||
bug_map[job.name] = ', '.join(self.bug_urls(job.bugs))
|
bug_map[job.name] = ', '.join(self.bug_urls(job.bugs))
|
||||||
bug_list = []
|
bug_list = []
|
||||||
@ -148,6 +150,10 @@ class FailEvent(object):
|
|||||||
def is_fully_classified(self):
|
def is_fully_classified(self):
|
||||||
if self.get_all_bugs() is None:
|
if self.get_all_bugs() is None:
|
||||||
return True
|
return True
|
||||||
|
# we consider anything that's not in the gate queue
|
||||||
|
# fully classified, because errors are expected
|
||||||
|
if self.queue() != "gate":
|
||||||
|
return True
|
||||||
for job in self.failed_jobs:
|
for job in self.failed_jobs:
|
||||||
if len(job.bugs) is 0:
|
if len(job.bugs) is 0:
|
||||||
return False
|
return False
|
||||||
|
@ -239,6 +239,46 @@
|
|||||||
"subject": "Enhance auth tests for non-default default_domain_id"
|
"subject": "Enhance auth tests for non-default default_domain_id"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"comment": "Build failed. For information on how to proceed, see https:\/\/wiki.openstack.org\/wiki\/GerritJenkinsGit#Test_Failures\n\n- gate-keystone-pep8 http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-keystone-pep8\/16e0b97 : SUCCESS in 2m 25s\n- gate-keystone-docs http:\/\/docs-draft.openstack.org\/49\/64750\/6\/gate\/gate-keystone-docs\/77c8f7a\/doc\/build\/html\/ : SUCCESS in 5m 25s\n- gate-keystone-python26 http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-keystone-python26\/d3fd328 : FAILURE in 18m 04s\n- gate-keystone-python27 http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-keystone-python27\/5dd41fe : FAILURE in 10m 01s\n- gate-tempest-dsvm-full http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-tempest-dsvm-full\/fce905d : SUCCESS in 46m 00s\n- gate-tempest-dsvm-postgres-full http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-tempest-dsvm-postgres-full\/e5cd968 : SUCCESS in 53m 30s\n- gate-tempest-dsvm-neutron http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-tempest-dsvm-neutron\/0673b30 : SUCCESS in 37m 25s\n- gate-tempest-dsvm-large-ops http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-tempest-dsvm-large-ops\/bdc661a : SUCCESS in 13m 21s\n- gate-tempest-dsvm-neutron-large-ops http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-tempest-dsvm-neutron-large-ops\/991887c : SUCCESS in 12m 28s\n- gate-grenade-dsvm http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-grenade-dsvm\/d098069 : SUCCESS in 31m 05s\n- gate-swift-dsvm-functional http:\/\/logs.openstack.org\/49\/64750\/6\/gate\/gate-swift-dsvm-functional\/2f9377b : SUCCESS in 11m 56s\n",
|
||||||
|
"author": {
|
||||||
|
"username": "jenkins",
|
||||||
|
"name": "Jenkins"
|
||||||
|
},
|
||||||
|
"approvals": [
|
||||||
|
{
|
||||||
|
"type": "VRIF",
|
||||||
|
"description": "Verified",
|
||||||
|
"value": "-1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"patchSet": {
|
||||||
|
"createdOn": 1389378289,
|
||||||
|
"ref": "refs\/changes\/49\/64750\/6",
|
||||||
|
"number": "6",
|
||||||
|
"uploader": {
|
||||||
|
"username": "blk-u",
|
||||||
|
"name": "Brant Knudson",
|
||||||
|
"email": "bknudson@us.ibm.com"
|
||||||
|
},
|
||||||
|
"revision": "06b14616cb2a11514b0c151cc213c1ab5cea324b"
|
||||||
|
},
|
||||||
|
"type": "comment-added",
|
||||||
|
"change": {
|
||||||
|
"topic": "bug\/1265108",
|
||||||
|
"url": "https:\/\/review.openstack.org\/64750",
|
||||||
|
"number": "64750",
|
||||||
|
"project": "openstack\/keystone",
|
||||||
|
"branch": "master",
|
||||||
|
"owner": {
|
||||||
|
"username": "blk-u",
|
||||||
|
"name": "Brant Knudson",
|
||||||
|
"email": "bknudson@us.ibm.com"
|
||||||
|
},
|
||||||
|
"id": "I890a1c798d7f4a8a345404cd7754708ab0d36651",
|
||||||
|
"subject": "Enhance auth tests for non-default default_domain_id"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"comment": "Build succeeded.\n\n- gate-neutron-pep8 http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-neutron-pep8\/0ef123c : SUCCESS in 2m 13s\n- gate-neutron-docs http:\/\/docs-draft.openstack.org\/02\/65902\/3\/check\/gate-neutron-docs\/4a7a2ce\/doc\/build\/html\/ : SUCCESS in 1m 43s\n- gate-neutron-python26 http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-neutron-python26\/d3e596e : SUCCESS in 43m 38s\n- gate-neutron-python27 http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-neutron-python27\/525acec : SUCCESS in 27m 10s\n- check-tempest-dsvm-neutron http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron\/469682a : SUCCESS in 35m 59s\n- check-tempest-dsvm-neutron-pg http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron-pg\/91e8f4f : SUCCESS in 37m 11s\n- check-tempest-dsvm-neutron-isolated http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron-isolated\/90021b9 : SUCCESS in 41m 27s\n- check-tempest-dsvm-neutron-pg-isolated http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron-pg-isolated\/7bc809a : SUCCESS in 45m 35s\n- gate-tempest-dsvm-neutron-large-ops http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-tempest-dsvm-neutron-large-ops\/aea24f9 : SUCCESS in 15m 01s\n- check-grenade-dsvm-neutron http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-grenade-dsvm-neutron\/59354b6 : FAILURE in 20m 16s (non-voting)\n- check-devstack-dsvm-neutron http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-devstack-dsvm-neutron\/d347313 : FAILURE in 17m 10s (non-voting)\n",
|
"comment": "Build succeeded.\n\n- gate-neutron-pep8 http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-neutron-pep8\/0ef123c : SUCCESS in 2m 13s\n- gate-neutron-docs http:\/\/docs-draft.openstack.org\/02\/65902\/3\/check\/gate-neutron-docs\/4a7a2ce\/doc\/build\/html\/ : SUCCESS in 1m 43s\n- gate-neutron-python26 http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-neutron-python26\/d3e596e : SUCCESS in 43m 38s\n- gate-neutron-python27 http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-neutron-python27\/525acec : SUCCESS in 27m 10s\n- check-tempest-dsvm-neutron http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron\/469682a : SUCCESS in 35m 59s\n- check-tempest-dsvm-neutron-pg http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron-pg\/91e8f4f : SUCCESS in 37m 11s\n- check-tempest-dsvm-neutron-isolated http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron-isolated\/90021b9 : SUCCESS in 41m 27s\n- check-tempest-dsvm-neutron-pg-isolated http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-tempest-dsvm-neutron-pg-isolated\/7bc809a : SUCCESS in 45m 35s\n- gate-tempest-dsvm-neutron-large-ops http:\/\/logs.openstack.org\/02\/65902\/3\/check\/gate-tempest-dsvm-neutron-large-ops\/aea24f9 : SUCCESS in 15m 01s\n- check-grenade-dsvm-neutron http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-grenade-dsvm-neutron\/59354b6 : FAILURE in 20m 16s (non-voting)\n- check-devstack-dsvm-neutron http:\/\/logs.openstack.org\/02\/65902\/3\/check\/check-devstack-dsvm-neutron\/d347313 : FAILURE in 17m 10s (non-voting)\n",
|
||||||
"author": {
|
"author": {
|
||||||
|
@ -39,6 +39,24 @@ class TestStream(tests.TestCase):
|
|||||||
|
|
||||||
# there are currently 10 events in the stream, 3 are
|
# there are currently 10 events in the stream, 3 are
|
||||||
# failures
|
# failures
|
||||||
|
event = stream.get_failed_tempest()
|
||||||
|
self.assertEqual(event.change, 64750)
|
||||||
|
self.assertEqual(event.rev, 6)
|
||||||
|
self.assertEqual(event.project, "openstack/keystone")
|
||||||
|
self.assertEqual(event.name(), "64750,6")
|
||||||
|
self.assertEqual(event.url, "https://review.openstack.org/64750")
|
||||||
|
self.assertEqual(sorted(event.short_build_uuids()),
|
||||||
|
["5dd41fe", "d3fd328"])
|
||||||
|
self.assertTrue(event.is_openstack_project())
|
||||||
|
self.assertEqual(event.queue(), "gate")
|
||||||
|
self.assertEqual(event.bug_urls(), None)
|
||||||
|
self.assertEqual(event.bug_urls_map(), None)
|
||||||
|
self.assertEqual(sorted(event.failed_job_names()),
|
||||||
|
['gate-keystone-python26',
|
||||||
|
'gate-keystone-python27'])
|
||||||
|
self.assertEqual(event.get_all_bugs(), None)
|
||||||
|
self.assertTrue(event.is_fully_classified())
|
||||||
|
|
||||||
event = stream.get_failed_tempest()
|
event = stream.get_failed_tempest()
|
||||||
self.assertEqual(event.change, 64749)
|
self.assertEqual(event.change, 64749)
|
||||||
self.assertEqual(event.rev, 6)
|
self.assertEqual(event.rev, 6)
|
||||||
@ -117,6 +135,32 @@ class TestStream(tests.TestCase):
|
|||||||
mock_data.return_value = True
|
mock_data.return_value = True
|
||||||
stream = elasticRecheck.Stream("", "", "")
|
stream = elasticRecheck.Stream("", "", "")
|
||||||
|
|
||||||
|
event = stream.get_failed_tempest()
|
||||||
|
# Add bugs
|
||||||
|
for job in event.failed_jobs:
|
||||||
|
if job.name == 'gate-keystone-python26':
|
||||||
|
job.bugs = ['123456']
|
||||||
|
self.assertEqual(event.change, 64750)
|
||||||
|
self.assertEqual(event.rev, 6)
|
||||||
|
self.assertEqual(event.project, "openstack/keystone")
|
||||||
|
self.assertEqual(event.name(), "64750,6")
|
||||||
|
self.assertEqual(event.url, "https://review.openstack.org/64750")
|
||||||
|
self.assertEqual(sorted(event.short_build_uuids()),
|
||||||
|
["5dd41fe", "d3fd328"])
|
||||||
|
self.assertTrue(event.is_openstack_project())
|
||||||
|
self.assertEqual(event.queue(), "gate")
|
||||||
|
self.assertEqual(event.bug_urls(),
|
||||||
|
['https://bugs.launchpad.net/bugs/123456'])
|
||||||
|
self.assertEqual(event.bug_urls_map(),
|
||||||
|
['gate-keystone-python27: unrecognized error',
|
||||||
|
'gate-keystone-python26: '
|
||||||
|
'https://bugs.launchpad.net/bugs/123456'])
|
||||||
|
self.assertEqual(sorted(event.failed_job_names()),
|
||||||
|
['gate-keystone-python26',
|
||||||
|
'gate-keystone-python27'])
|
||||||
|
self.assertEqual(event.get_all_bugs(), ['123456'])
|
||||||
|
self.assertFalse(event.is_fully_classified())
|
||||||
|
|
||||||
event = stream.get_failed_tempest()
|
event = stream.get_failed_tempest()
|
||||||
# Add bugs
|
# Add bugs
|
||||||
for job in event.failed_jobs:
|
for job in event.failed_jobs:
|
||||||
@ -134,11 +178,10 @@ class TestStream(tests.TestCase):
|
|||||||
self.assertEqual(event.bug_urls(),
|
self.assertEqual(event.bug_urls(),
|
||||||
['https://bugs.launchpad.net/bugs/123456'])
|
['https://bugs.launchpad.net/bugs/123456'])
|
||||||
self.assertEqual(event.bug_urls_map(),
|
self.assertEqual(event.bug_urls_map(),
|
||||||
['gate-keystone-python27: unrecognized error',
|
['gate-keystone-python26: '
|
||||||
'gate-keystone-python26: '
|
|
||||||
'https://bugs.launchpad.net/bugs/123456'])
|
'https://bugs.launchpad.net/bugs/123456'])
|
||||||
self.assertEqual(sorted(event.failed_job_names()),
|
self.assertEqual(sorted(event.failed_job_names()),
|
||||||
['gate-keystone-python26',
|
['gate-keystone-python26',
|
||||||
'gate-keystone-python27'])
|
'gate-keystone-python27'])
|
||||||
self.assertEqual(event.get_all_bugs(), ['123456'])
|
self.assertEqual(event.get_all_bugs(), ['123456'])
|
||||||
self.assertFalse(event.is_fully_classified())
|
self.assertTrue(event.is_fully_classified())
|
||||||
|
Loading…
Reference in New Issue
Block a user