Merge "Convergence: Fix failing integration tests"

This commit is contained in:
Jenkins 2015-09-14 13:20:47 +00:00 committed by Gerrit Code Review
commit 1397af1b6d
3 changed files with 42 additions and 10 deletions

View File

@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import ast
from oslo_log import log as logging
import six
@ -75,16 +76,47 @@ def update_input_data(context, entity_id, current_traversal,
return rows_updated
def _str_pack_tuple(t):
return u'tuple:' + str(t)
def _str_unpack_tuple(s):
s = s[s.index(':') + 1:]
return ast.literal_eval(s)
def _deserialize(d):
d2 = {}
for k, v in d.items():
if isinstance(k, six.string_types) and k.startswith(u'tuple:('):
k = _str_unpack_tuple(k)
if isinstance(v, dict):
v = _deserialize(v)
d2[k] = v
return d2
def _serialize(d):
d2 = {}
for k, v in d.items():
if isinstance(k, tuple):
k = _str_pack_tuple(k)
if isinstance(v, dict):
v = _serialize(v)
d2[k] = v
return d2
def deserialize_input_data(db_input_data):
db_input_data = db_input_data.get('input_data')
if not db_input_data:
return {}
return {tuple(i): j for i, j in db_input_data}
return dict(_deserialize(db_input_data))
def serialize_input_data(input_data):
return {'input_data': [[list(i), j] for i, j in six.iteritems(input_data)]}
return {'input_data': _serialize(input_data)}
def sync(cnxt, entity_id, current_traversal, is_update, propagate,
@ -95,7 +127,7 @@ def sync(cnxt, entity_id, current_traversal, is_update, propagate,
while not rows_updated:
# TODO(sirushtim): Add a conf option to add no. of retries
sync_point = get(cnxt, entity_id, current_traversal, is_update)
input_data = dict(deserialize_input_data(sync_point.input_data))
input_data = deserialize_input_data(sync_point.input_data)
input_data.update(new_data)
rows_updated = update_input_data(
cnxt, entity_id, current_traversal, is_update,

View File

@ -65,4 +65,4 @@ class SyncPointTestCase(common.HeatTestCase):
def test_serialize_input_data(self):
res = sync_point.serialize_input_data({(3, 8): None})
self.assertEqual({'input_data': [[[3, 8], None]]}, res)
self.assertEqual({'input_data': {u'tuple:(3, 8)': None}}, res)

View File

@ -70,7 +70,7 @@ class StackConvergenceCreateUpdateDeleteTest(common.HeatTestCase):
expected_calls.append(
mock.call.worker_client.WorkerClient.check_resource(
stack.context, rsrc_id, stack.current_traversal,
{'input_data': []},
{'input_data': {}},
is_update, None))
self.assertEqual(expected_calls, mock_cr.mock_calls)
@ -127,7 +127,7 @@ class StackConvergenceCreateUpdateDeleteTest(common.HeatTestCase):
expected_calls.append(
mock.call.worker_client.WorkerClient.check_resource(
stack.context, rsrc_id, stack.current_traversal,
{'input_data': []},
{'input_data': {}},
is_update, None))
self.assertEqual(expected_calls, mock_cr.mock_calls)
@ -265,7 +265,7 @@ class StackConvergenceCreateUpdateDeleteTest(common.HeatTestCase):
expected_calls.append(
mock.call.worker_client.WorkerClient.check_resource(
stack.context, rsrc_id, stack.current_traversal,
{'input_data': []},
{'input_data': {}},
is_update, None))
leaves = curr_stack.convergence_dependencies.leaves()
@ -273,7 +273,7 @@ class StackConvergenceCreateUpdateDeleteTest(common.HeatTestCase):
expected_calls.append(
mock.call.worker_client.WorkerClient.check_resource(
curr_stack.context, rsrc_id, curr_stack.current_traversal,
{'input_data': []},
{'input_data': {}},
is_update, None))
self.assertEqual(expected_calls, mock_cr.mock_calls)
@ -347,7 +347,7 @@ class StackConvergenceCreateUpdateDeleteTest(common.HeatTestCase):
expected_calls.append(
mock.call.worker_client.WorkerClient.check_resource(
stack.context, rsrc_id, stack.current_traversal,
{'input_data': []},
{'input_data': {}},
is_update, None))
leaves = curr_stack.convergence_dependencies.leaves()
@ -355,7 +355,7 @@ class StackConvergenceCreateUpdateDeleteTest(common.HeatTestCase):
expected_calls.append(
mock.call.worker_client.WorkerClient.check_resource(
curr_stack.context, rsrc_id, curr_stack.current_traversal,
{'input_data': []},
{'input_data': {}},
is_update, None))
self.assertEqual(expected_calls, mock_cr.mock_calls)