taskWaitResults: more unit tests
This commit is contained in:
parent
7ce1c73777
commit
cb64ee6bd8
1 changed files with 70 additions and 1 deletions
|
|
@ -1,9 +1,14 @@
|
|||
import mock
|
||||
import unittest
|
||||
import xmlrpclib
|
||||
|
||||
import koji
|
||||
import kojihub
|
||||
|
||||
|
||||
QP = kojihub.QueryProcessor
|
||||
|
||||
|
||||
class TestTaskWaitResults(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
|
@ -13,8 +18,11 @@ class TestTaskWaitResults(unittest.TestCase):
|
|||
self.host_exports = kojihub.Host(self.host_id)
|
||||
self.host_exports.taskUnwait = mock.MagicMock()
|
||||
self.Task = mock.patch('kojihub.Task', side_effect=self.getTask).start()
|
||||
self.cnx = mock.patch('kojihub.context.cnx').start()
|
||||
self.tasks = {}
|
||||
self.queries = []
|
||||
self.execute = mock.MagicMock()
|
||||
self.QueryProcessor = mock.patch('kojihub.QueryProcessor',
|
||||
side_effect=self.get_query).start()
|
||||
|
||||
def tearDown(self):
|
||||
mock.patch.stopall()
|
||||
|
|
@ -27,6 +35,12 @@ class TestTaskWaitResults(unittest.TestCase):
|
|||
self.tasks[task_id] = task
|
||||
return task
|
||||
|
||||
def get_query(self, *args, **kwargs):
|
||||
query = QP(*args, **kwargs)
|
||||
query.execute = self.execute
|
||||
self.queries.append(query)
|
||||
return query
|
||||
|
||||
def test_basic(self):
|
||||
parent = 1
|
||||
task_ids = [5,6,7]
|
||||
|
|
@ -37,4 +51,59 @@ class TestTaskWaitResults(unittest.TestCase):
|
|||
results = self.host_exports.taskWaitResults(parent, task_ids)
|
||||
expect = [[t, "OK"] for t in task_ids]
|
||||
self.assertEqual(results, expect)
|
||||
self.assertEqual(self.queries, [])
|
||||
self.host_exports.taskUnwait.assert_called_with(parent)
|
||||
|
||||
def test_error(self):
|
||||
"""Ensure that errors is propagated when they should be"""
|
||||
parent = 1
|
||||
task_ids = [5,6,7]
|
||||
for t in task_ids:
|
||||
task = self.getTask(t)
|
||||
task.getResult.return_value = "OK"
|
||||
task.isCanceled.return_value = False
|
||||
self.tasks[6].getResult.side_effect = xmlrpclib.Fault(1, "error")
|
||||
with self.assertRaises(xmlrpclib.Fault):
|
||||
results = self.host_exports.taskWaitResults(parent, task_ids)
|
||||
self.tasks[6].getResult.side_effect = koji.GenericError('problem')
|
||||
with self.assertRaises(koji.GenericError):
|
||||
results = self.host_exports.taskWaitResults(parent, task_ids)
|
||||
self.assertEqual(self.queries, [])
|
||||
|
||||
def test_canfail_canceled(self):
|
||||
"""Canceled canfail tasks should not raise exceptions"""
|
||||
parent = 1
|
||||
task_ids = [5,6,7]
|
||||
canfail = [7]
|
||||
for t in task_ids:
|
||||
task = self.getTask(t)
|
||||
task.getResult.return_value = "OK"
|
||||
task.isCanceled.return_value = False
|
||||
self.tasks[7].getResult.side_effect = koji.GenericError('canceled')
|
||||
self.tasks[7].isCanceled.return_value = True
|
||||
results = self.host_exports.taskWaitResults(parent, task_ids,
|
||||
canfail=canfail)
|
||||
expect_f = {'faultCode': koji.GenericError.faultCode,
|
||||
'faultString': 'canceled'}
|
||||
expect = [[5, "OK"], [6, "OK"], [7, expect_f]]
|
||||
self.assertEqual(results, expect)
|
||||
self.host_exports.taskUnwait.assert_called_with(parent)
|
||||
self.assertEqual(self.queries, [])
|
||||
|
||||
def test_all_tasks(self):
|
||||
"""Canceled canfail tasks should not raise exceptions"""
|
||||
parent = 1
|
||||
task_ids = [5,6,7]
|
||||
self.execute.return_value = [[t] for t in task_ids]
|
||||
for t in task_ids:
|
||||
task = self.getTask(t)
|
||||
task.getResult.return_value = "OK"
|
||||
task.isCanceled.return_value = False
|
||||
results = self.host_exports.taskWaitResults(parent, None)
|
||||
expect = [[t, "OK"] for t in task_ids]
|
||||
self.assertEqual(results, expect)
|
||||
self.host_exports.taskUnwait.assert_called_with(parent)
|
||||
self.assertEqual(len(self.queries), 1)
|
||||
query = self.queries[0]
|
||||
self.assertEqual(query.tables, ['task'])
|
||||
self.assertEqual(query.columns, ['id'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue