def test_message_flow(self): print("") print("Testing message flow") print("") # Create file we're suppose to be uploading. path = os.path.join(self.alice_storage, self.syn[u"data_id"]) if not os.path.exists(path): with open(path, "w") as fp: fp.write("0") # Clear existing contracts. self.clean_slate_all() # Alice: build SYN. contract_id = self.alice.simple_data_request( data_id=self.syn[u"data_id"], node_unl=self.bob.net.unl.value, direction=u"send" ) syn = self.alice.contracts[contract_id] self.assertIsInstance(syn, OrderedDict) print(self.alice.net.unl.value) print(self.bob.net.unl.value) print(syn) # Bob: process SYN, build SYN-ACK. syn_ack = process_syn(self.bob, syn) self.assertIsInstance(syn_ack, OrderedDict) # Alice: process SYN-ACK, build ACK. ack = process_syn_ack(self.alice, syn_ack) self.assertIsInstance(ack, OrderedDict) # Bob: process ack. fin = process_ack(self.bob, ack) self.assertTrue(fin == 1) print("") print("Done testing message flow") print("")
def test_process_syn(self): print("") print("Testing process syn") print("") self.clean_slate_all() syn = copy.deepcopy(self.syn) # Create file we're suppose to be uploading. path = os.path.join(self.alice_storage, syn[u"data_id"]) if not os.path.exists(path): with open(path, "w") as fp: fp.write("0") # Test accept SYN with a handler. def request_handler(contract_id, src_unl, data_id, file_size): return 1 self.bob.handlers["accept"] = [request_handler] syn = copy.deepcopy(self.syn) self.assertIsInstance(process_syn( self.bob, self.alice.sign_contract(syn), enable_accept_handlers=1 ), OrderedDict) del syn["signature"] # Test reject SYN with a handler. def request_handler(contract_id, src_unl, data_id, file_size): return 0 self.bob.handlers["accept"] = [request_handler] syn = copy.deepcopy(self.syn) self.assertTrue(process_syn( self.bob, self.alice.sign_contract(syn), enable_accept_handlers=1 ) == -2) del syn["signature"] # Our UNL is incorrect. syn = copy.deepcopy(self.syn) syn[u"dest_unl"] = self.alice.net.unl.value self.assertTrue(process_syn( self.bob, self.alice.sign_contract(syn), enable_accept_handlers=0 ) == -3) syn[u"dest_unl"] = self.bob.net.unl.value del syn["signature"] # Their sig is invalid. syn = copy.deepcopy(self.syn) syn[u"signature"] = "x" self.assertTrue(process_syn( self.bob, syn, enable_accept_handlers=0 ) == -4) del syn["signature"] # Handshake state is incorrect. syn = copy.deepcopy(self.syn) syn = self.alice.sign_contract(syn) contract_id = self.bob.contract_id(syn) self.bob.handshake[contract_id] = "SYN" self.assertTrue(process_syn( self.bob, syn, enable_accept_handlers=0 ) == -5) del self.bob.handshake[contract_id] # This should pass. self.assertIsInstance(process_syn( self.bob, syn, enable_accept_handlers=0 ), OrderedDict) print("") print("Ending process syn") print("")