Skip to content

Commit fcfba66

Browse files
mzk-vctAndrei Goncharov
authored and
Andrei Goncharov
committed
Fix serialization of messages when ujson < 1.35 is used (#266)
* add test for serialization of messages * override __dir__ method for MessageBase to exclude service fields * add test for dir over message
1 parent a7076f3 commit fcfba66

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

plenum/common/messages/message_base.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,6 @@ def __hash__(self):
156156
for index, value in enumerate(list(self.__iter__())):
157157
h = h * (index + 1) * (hash(value) + 1)
158158
return h
159+
160+
def __dir__(self):
161+
return self.keys()
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from plenum.common.messages.node_messages import LedgerStatus
2+
from stp_zmq.zstack import ZStack
3+
4+
5+
def test_that_service_fields_not_being_serialized():
6+
"""
7+
Checks that service fields of validators, like 'typename' and 'schema' ]
8+
are excluded from serialized message
9+
"""
10+
11+
message = LedgerStatus(1,10,None,None,"AwgQhPR9cgRubttBGjRruCRMLhZFBffbejbPipj7WBBm")
12+
serialized = ZStack.serializeMsg(message)
13+
deserialized = ZStack.deserializeMsg(serialized)
14+
service_fields = {'typename', 'schema', 'optional', 'nullable'}
15+
assert service_fields - set(deserialized) == service_fields
16+
17+
18+
def test_that_dir_returns_only_message_keys():
19+
message = LedgerStatus(1, 10, None, None, "AwgQhPR9cgRubttBGjRruCRMLhZFBffbejbPipj7WBBm")
20+
assert set(dir(message)) == set(message.keys())

0 commit comments

Comments
 (0)