def test_add_two_identical_from_different_senders_message_to_manager(self): replies_manager = rsi.RepliesManager() packed = self._build_msg(b'hello') rsi_reply = rsi.MsgWithReplicaSpecificInfo(packed, sender_id=0) rsi_reply2 = rsi.MsgWithReplicaSpecificInfo(packed, sender_id=1) num_of_replies = replies_manager.add_reply(rsi_reply) self.assertEqual(num_of_replies, 1) num_of_replies = replies_manager.add_reply(rsi_reply2) self.assertEqual(num_of_replies, 2)
def test_add_same_message_twice_to_manager(self): replies_manager = rsi.RepliesManager() packed = self._build_msg(b'hello') rsi_reply = rsi.MsgWithReplicaSpecificInfo(packed, sender_id=0) num_of_replies = replies_manager.add_reply(rsi_reply) self.assertEqual(num_of_replies, 1) num_of_replies = replies_manager.add_reply(rsi_reply) self.assertEqual(num_of_replies, 1)
def __init__(self, config, replicas): self.config = config self.replicas = replicas self.req_seq_num = ReqSeqNum() self.client_id = config.id self.primary = None self.replies = None self.retries = 0 self.msgs_sent = 0 self.replies_manager = rsi.RepliesManager() self.rsi_replies = dict() self.comm_prepared = False
def __init__(self, config, replicas): self.config = config self.replicas = replicas self.sock = trio.socket.socket(trio.socket.AF_INET, trio.socket.SOCK_DGRAM) self.req_seq_num = ReqSeqNum() self.client_id = config.id self.primary = None self.reply = None self.retries = 0 self.msgs_sent = 0 self.port = BASE_PORT + 2 * self.client_id self.sock_bound = False self.replies_manager = rsi.RepliesManager() self.rsi_replies = dict()
def __init__(self, config, replicas, ro_replicas=[]): self.config = config self.replicas = replicas self.req_seq_num = ReqSeqNum() self.client_id = config.id self.primary = None self.replies = None self.retries = 0 self.msgs_sent = 0 self.replies_manager = RSI.RepliesManager() self.rsi_replies = dict() self.comm_prepared = False self.ro_replicas = ro_replicas txn_signing_key_path = self._get_txn_signing_priv_key_path(self.client_id) self.signing_key = None if txn_signing_key_path: with open(txn_signing_key_path, 'rb') as f: self.signing_key = RSA.import_key(f.read())
def test_add_two_message_with_different_rsi_to_manager(self): replies_manager = rsi.RepliesManager() packed = self._build_msg(b'hello0', rsi_length=1) rsi_reply = rsi.MsgWithReplicaSpecificInfo(packed, sender_id=1) num_of_replies = replies_manager.add_reply(rsi_reply) self.assertEqual(num_of_replies, 1) packed2 = self._build_msg(b'hello1', rsi_length=1) rsi_reply2 = rsi.MsgWithReplicaSpecificInfo(packed2, sender_id=0) num_of_replies = replies_manager.add_reply(rsi_reply2) self.assertEqual(num_of_replies, 2) common_key = rsi_reply.get_matched_reply_key() rsi_replies = replies_manager.pop(common_key) self.assertEqual(replies_manager.num_matching_replies(common_key), 0) self.assertEqual(common_key.header.req_seq_num, 1) self.assertEqual(common_key.data, b'hello') self.assertEqual(b'1', rsi_replies[0].get_rsi_data()) self.assertTrue(b'0', rsi_replies[1].get_rsi_data())
def test_add_message_with_two_seq_num_to_manager(self): replies_manager = rsi.RepliesManager() packed = self._build_msg(b'hello') rsi_reply = rsi.MsgWithReplicaSpecificInfo(packed, sender_id=0) num_of_replies = replies_manager.add_reply(rsi_reply) self.assertEqual(num_of_replies, 1) packed2 = self._build_msg(b'hello', req_seq_num=2) rsi_reply2 = rsi.MsgWithReplicaSpecificInfo(packed2, 0) num_of_replies = replies_manager.add_reply(rsi_reply2) self.assertEqual(num_of_replies, 1) self.assertEqual(replies_manager.num_distinct_replies(), 2) key1 = rsi_reply.get_matched_reply_key() replies_manager.pop(key1) self.assertEqual(replies_manager.num_matching_replies(key1), 0) self.assertEqual(replies_manager.num_distinct_replies(), 1) key2 = rsi_reply2.get_matched_reply_key() replies_manager.pop(key2) self.assertEqual(replies_manager.num_matching_replies(key2), 0) self.assertEqual(replies_manager.num_distinct_replies(), 0)