def test_ping_with_response(self): # Client creates a query ping_msg = message.OutgoingPingQuery(tc.CLIENT_ID) q = Query(ping_msg, tc.SERVER_NODE) # Querier.register_query sets a TID and timeout_task q.tid = tc.TID q.timeout_task = minitwisted.Task(TIMEOUT_DELAY, None) q.query_ts = time.time() # The query is sent time.sleep(1) # The server creates a response ping_r_msg_out = message.OutgoingPingResponse(tc.SERVER_ID) bencoded_r = ping_r_msg_out.encode(tc.TID) # The client receives the bencoded message ping_r_in = message.IncomingMsg(bencoded_r, tc.SERVER_ADDR) q.on_response_received(ping_r_in) assert 1 < q.rtt < 1.1 assert q.lookup_obj is None
def test_find_node_with_error(self): # Client creates a query fn_msg = message.OutgoingFindNodeQuery(tc.CLIENT_ID, tc.TARGET_ID) # the destination's ID is unknown q = Query(fn_msg, node.Node(tc.SERVER_ADDR)) # Querier.register_query sets a TID and timeout_task q.tid = tc.TID q.timeout_task = minitwisted.Task(TIMEOUT_DELAY, None) q.query_ts = time.time() # The query is sent # The server creates a response fn_r_out = message.OutgoingErrorMsg(message.GENERIC_E) bencoded_fn_r = fn_r_out.encode(tc.TID) time.sleep(1) # The client receives the bencoded message fn_r_in = message.IncomingMsg(bencoded_fn_r, tc.SERVER_ADDR) q.on_error_received(fn_r_in) assert 1 < q.rtt < 1.1 assert q.lookup_obj is None
def test_get_peers_with_response(self): # Client creates a query fn_msg = message.OutgoingGetPeersQuery(tc.CLIENT_ID, tc.INFO_HASH) # the destination's ID is unknown # This query belongs to a lookup q = Query(fn_msg, node.Node(tc.SERVER_ADDR), LOOKUP_OBJ) # Querier.register_query sets a TID and timeout_task q.tid = tc.TID q.timeout_task = minitwisted.Task(TIMEOUT_DELAY, None) q.query_ts = time.time() # The query is sent # The server creates a response fn_r_out = message.OutgoingGetPeersResponse(tc.SERVER_ID, nodes=tc.NODES) bencoded_fn_r = fn_r_out.encode(tc.TID) time.sleep(1) # The client receives the bencoded message fn_r_in = message.IncomingMsg(bencoded_fn_r, tc.SERVER_ADDR) q.on_response_received(fn_r_in) assert 1 < q.rtt < 1.1 assert q.lookup_obj is LOOKUP_OBJ