Fix RSS feed unavailable when no failure
This commit fixes RSS feed unavailable error to return zero length entry list when there is specified run_metadata_key and value with no failure. Closes-Bug: #1573630 Change-Id: I48659140314a2d8737611dd0a86097f10c1f3ac8
This commit is contained in:
parent
0a45cdb81f
commit
8d9eb1da5d
|
@ -457,9 +457,12 @@ def get_recent_failed_runs_rss(run_metadata_key, value):
|
|||
return feeds[run_metadata_key][value].rss_str()
|
||||
feeds["last runs"][run_metadata_key][value] = last_run
|
||||
else:
|
||||
msg = 'No Failed Runs for run metadata %s: %s' % (
|
||||
run_metadata_key, value)
|
||||
return abort(make_response(msg, 400))
|
||||
count = api.get_runs_counts_by_run_metadata(
|
||||
run_metadata_key, value, session=session)
|
||||
if count == 0:
|
||||
msg = 'No Failed Runs for run metadata %s: %s' % (
|
||||
run_metadata_key, value)
|
||||
return abort(make_response(msg, 400))
|
||||
for run in failed_runs:
|
||||
meta = api.get_run_metadata(run.uuid, session=session)
|
||||
uuid = [x.value for x in meta if x.key == 'build_uuid'][0]
|
||||
|
|
|
@ -1029,3 +1029,33 @@ class TestRestAPI(base.TestCase):
|
|||
self.assertEqual(timestamp_b,
|
||||
date_parser.parse(out.entries[0].published).replace(
|
||||
tzinfo=None))
|
||||
|
||||
@mock.patch('subunit2sql.db.api.get_recent_failed_runs_by_run_metadata',
|
||||
return_value=[])
|
||||
@mock.patch('subunit2sql.db.api.get_runs_counts_by_run_metadata',
|
||||
return_value=1)
|
||||
def test_get_recent_failed_runs_rss_no_failure_valid_meta(self, count_mock,
|
||||
db_mock):
|
||||
api.rss_opts['data_dir'] = tempfile.gettempdir()
|
||||
api.rss_opts['frontend_url'] = 'http://status.openstack.org'
|
||||
build_uuid = str(uuid.uuid4())
|
||||
meta_mock = mock.patch(
|
||||
'subunit2sql.db.api.get_run_metadata',
|
||||
return_value=[
|
||||
models.RunMetadata(key='build_name', value='job'),
|
||||
models.RunMetadata(key='build_uuid', value=build_uuid)])
|
||||
meta_mock.start()
|
||||
self.addCleanup(meta_mock.stop)
|
||||
res = self.app.get('/runs/key/b_key/b_value/recent/rss')
|
||||
self.assertEqual(200, res.status_code)
|
||||
db_mock.assert_called_once_with('b_key', 'b_value',
|
||||
start_date=None, session=api.Session())
|
||||
count_mock.assert_called_once_with('b_key', 'b_value',
|
||||
session=api.Session())
|
||||
db_mock.reset_mock()
|
||||
count_mock.reset_mock()
|
||||
out = feedparser.parse(res.data.decode('utf-8'))
|
||||
title = 'Failures for %s: %s' % ('b_key', 'b_value')
|
||||
self.assertEqual(title, out['feed']['title'])
|
||||
self.assertEqual('en', out['feed']['language'])
|
||||
self.assertEqual(0, len(out.entries))
|
||||
|
|
|
@ -5,7 +5,7 @@ pbr>=1.6 # Apache-2.0
|
|||
Flask<1.0,>=0.11 # BSD
|
||||
pymemcache >= 1.3.5 # Apache-2.0
|
||||
dogpile.cache>=0.6.0 # BSD
|
||||
subunit2sql>=1.6.0 # Apache-2.0
|
||||
subunit2sql>=1.7.0 # Apache-2.0
|
||||
SQLAlchemy<1.1.0,>=1.0.10 # MIT
|
||||
flask-jsonpify>=1.5.0 # MIT
|
||||
PyMySQL>=0.6.2 # MIT License
|
||||
|
|
Loading…
Reference in New Issue