Try to fix TestSerializer.test_call_serializer failed randomly

dict doesn't seem always keep order on Python. we have two separate part
to prepare test data[1], calling 'for k, v in self.args.items()' and
'for arg in self.args:' may get data in different order.

This commit makes we collect test data in same order.

Change-Id: I49f0d1b9aed110ad1e59140fd70760682e944d74
Related-Bug: #1677151
This commit is contained in:
ChangBo Guo(gcb) 2017-03-29 16:13:35 +08:00
parent 2ee6a2a480
commit 8253617168

View File

@ -339,8 +339,6 @@ class TestSerializer(test_utils.BaseTestCase):
transport._send = mock.Mock()
msg = dict(method='foo',
args=dict([(k, 's' + v) for k, v in self.args.items()]))
kwargs = dict(wait_for_reply=True, timeout=None) if self.call else {}
kwargs['retry'] = None
@ -350,9 +348,12 @@ class TestSerializer(test_utils.BaseTestCase):
serializer.deserialize_entity = mock.Mock()
serializer.serialize_context = mock.Mock()
msg = dict(method='foo', args=dict())
expected_side_effect = []
for arg in self.args:
expected_side_effect.append('s' + arg)
for k, v in self.args.items():
msg['args'][k] = 's' + v
expected_side_effect.append('s' + v)
serializer.serialize_entity.side_effect = expected_side_effect
if self.call: