Fix broken retry tests

* Failure was in output transformer specified in retry_task.yaml.
* Added assertion back to enable the tests.
* Extra logging to include more context in the logs to gather more insight from the logs.

Change-Id: Ic6f4665cd4d74d2676fc17891dbf66984926cd42
This commit is contained in:
Manas Kelshikar 2014-04-17 11:23:45 -07:00
parent c55623c96d
commit 594fab664d
3 changed files with 40 additions and 40 deletions

View File

@ -30,8 +30,8 @@ from mistral.openstack.common import importutils
# We need to make sure that all configuration properties are registered.
importutils.import_module("mistral.config")
from mistral.db.sqlalchemy import api as db_api
from mistral.openstack.common import log as logging
from mistral.engine import engine
from mistral.engine.scalable.executor import server
from mistral.engine.scalable import engine as concrete_engine
@ -40,6 +40,7 @@ from mistral import version
RESOURCES_PATH = 'tests/resources/'
LOG = logging.getLogger(__name__)
def get_resource(resource_name):
@ -95,6 +96,8 @@ class BaseTest(unittest2.TestCase):
found = len(filtered_items)
if found != count:
LOG.info("[failed test ctx] items=%s, expected_props=%s" % (str(
items), props))
self.fail("Wrong number of items found [props=%s, "
"expected=%s, found=%s]" % (props, count, found))

View File

@ -7,7 +7,7 @@ Namespaces:
url: http://path_to_service/action_url
method: GET
output:
output: '$.op_1'
output: $
sync-action:
class: std.echo
base-parameters:

View File

@ -79,8 +79,8 @@ class TaskRetryTest(base.EngineTestCase):
{'output': 'result'})
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#self._assert_single_item(tasks, name='retry_task')
#self._assert_single_item(tasks, task_runtime_context=None)
self._assert_single_item(tasks, name='retry_task')
self._assert_single_item(tasks, task_runtime_context=None)
def test_retry_always_error(self):
workbook = _get_workbook(WB_NAME)
@ -97,12 +97,12 @@ class TaskRetryTest(base.EngineTestCase):
{'output': 'result'})
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#tasks = db_api.tasks_get(WB_NAME, execution['id'])
tasks = db_api.tasks_get(WB_NAME, execution['id'])
#self._assert_single_item(tasks, name='retry_task')
#self._assert_single_item(tasks, task_runtime_context={
# 'retry_no': retry_count - 1})
#self._assert_single_item(tasks, state=states.ERROR)
self._assert_single_item(tasks, name='retry_task')
self._assert_single_item(tasks, task_runtime_context={
'retry_no': retry_count - 1})
self._assert_single_item(tasks, state=states.ERROR)
def test_retry_eventual_success(self):
workbook = _get_workbook(WB_NAME)
@ -123,11 +123,11 @@ class TaskRetryTest(base.EngineTestCase):
{'output': 'result'})
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#tasks = db_api.tasks_get(WB_NAME, execution['id'])
tasks = db_api.tasks_get(WB_NAME, execution['id'])
#self._assert_single_item(tasks, name='retry_task')
#self._assert_single_item(tasks, task_runtime_context={
# 'retry_no': retry_count/2 - 1})
self._assert_single_item(tasks, name='retry_task')
self._assert_single_item(tasks, task_runtime_context={
'retry_no': retry_count/2 - 1})
def test_retry_delay(self):
task_name = 'delay_retry_task'
@ -148,8 +148,8 @@ class TaskRetryTest(base.EngineTestCase):
tasks = db_api.tasks_get(WB_NAME, execution['id'])
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#self._assert_single_item(tasks, name=task_name)
#self._assert_single_item(tasks, state=states.DELAYED)
self._assert_single_item(tasks, name=task_name)
self._assert_single_item(tasks, state=states.DELAYED)
eventlet.sleep(delay * 2)
@ -159,13 +159,12 @@ class TaskRetryTest(base.EngineTestCase):
{'output': 'result'})
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#tasks =
# db_api.tasks_get(WB_NAME, execution['id'])
tasks = db_api.tasks_get(WB_NAME, execution['id'])
#self._assert_single_item(tasks, name=task_name)
#self._assert_single_item(tasks, task_runtime_context={
# 'retry_no': retry_count - 1})
#self._assert_single_item(tasks, state=states.ERROR)
self._assert_single_item(tasks, name=task_name)
self._assert_single_item(tasks, task_runtime_context={
'retry_no': retry_count - 1})
self._assert_single_item(tasks, state=states.ERROR)
def test_from_no_retry_to_retry_task(self):
task_name_1 = 'no_retry_task'
@ -198,8 +197,8 @@ class TaskRetryTest(base.EngineTestCase):
tasks = db_api.tasks_get(WB_NAME, execution['id'])
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#self._assert_single_item(tasks, name=task_name_1)
#self._assert_single_item(tasks, state=states.DELAYED)
self._assert_single_item(tasks, name=task_name_1)
self._assert_single_item(tasks, state=states.DELAYED)
eventlet.sleep(delay * 2)
@ -209,12 +208,12 @@ class TaskRetryTest(base.EngineTestCase):
{'output': 'result'})
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#tasks = db_api.tasks_get(WB_NAME, execution['id'])
tasks = db_api.tasks_get(WB_NAME, execution['id'])
#self._assert_single_item(tasks, name=task_name_2)
#self._assert_single_item(tasks, task_runtime_context={
# 'retry_no': retry_count - 1})
#self._assert_single_item(tasks, state=states.ERROR)
self._assert_single_item(tasks, name=task_name_2)
self._assert_single_item(tasks, task_runtime_context={
'retry_no': retry_count - 1})
self._assert_single_item(tasks, state=states.ERROR)
@mock.patch.object(std_actions.EchoAction, "run",
mock.MagicMock(side_effect=exc.ActionException))
@ -228,13 +227,12 @@ class TaskRetryTest(base.EngineTestCase):
task_name_1, None)
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#tasks =
db_api.tasks_get(WB_NAME, execution['id'])
tasks = db_api.tasks_get(WB_NAME, execution['id'])
#self._assert_single_item(tasks, name=task_name_1)
#self._assert_single_item(tasks, task_runtime_context={
# 'retry_no': retry_count - 1})
#self._assert_single_item(tasks, state=states.ERROR)
self._assert_single_item(tasks, name=task_name_1)
self._assert_single_item(tasks, task_runtime_context={
'retry_no': retry_count - 1})
self._assert_single_item(tasks, state=states.ERROR)
def test_sync_action_eventual_success(self):
task_name_1 = 'sync_task'
@ -252,10 +250,9 @@ class TaskRetryTest(base.EngineTestCase):
task_name_1, None)
# TODO(rakhmerov): It's not stable, need to avoid race condition.
#tasks =
db_api.tasks_get(WB_NAME, execution['id'])
tasks = db_api.tasks_get(WB_NAME, execution['id'])
#self._assert_single_item(tasks, name=task_name_1)
#self._assert_single_item(tasks, task_runtime_context={
# 'retry_no': retry_count/2})
#self._assert_single_item(tasks, state=states.SUCCESS)
self._assert_single_item(tasks, name=task_name_1)
self._assert_single_item(tasks, task_runtime_context={
'retry_no': retry_count/2})
self._assert_single_item(tasks, state=states.SUCCESS)