class TestRoutingNode: def setup(self): self.rnode1 = RoutingNode(Node(addr1, id1)) self.rnode2 = RoutingNode(Node(addr2, id2)) def test_rnode(self): RTT1 = 1 RTT2 = 2 assert self.rnode1.timeouts_in_a_row() == 0 self.rnode1.on_timeout() self.rnode1.on_timeout() self.rnode1.on_timeout() assert self.rnode1.timeouts_in_a_row() == 3 assert self.rnode1.timeouts_in_a_row(False) == 3 self.rnode1.on_query_received() assert self.rnode1.timeouts_in_a_row() == 0 eq_(self.rnode1.timeouts_in_a_row(False), 3) self.rnode1.on_response_received(1) assert self.rnode1.timeouts_in_a_row() == 0 assert self.rnode1.timeouts_in_a_row(False) == 0 assert self.rnode1._num_queries == 1 assert self.rnode1._num_responses == 1 assert self.rnode1._num_timeouts == 3 self.rnode1.on_response_received(RTT1) self.rnode1.on_response_received(RTT1) self.rnode1.on_response_received(RTT1) self.rnode1.on_response_received(RTT1) self.rnode1.on_response_received(RTT1) self.rnode1.on_response_received(RTT1) self.rnode1.on_response_received(RTT1) self.rnode1.on_response_received(RTT2) eq_(self.rnode1._rtt_avg, RTT1 * (1 - LAST_RTT_W) + RTT2 * LAST_RTT_W) self.rnode1.on_timeout() self.rnode1.on_timeout() def _test_rank(self): eq_(self.rnode1.rank(), 0) self.rnode1.on_query_received() eq_(self.rnode1.rank(), 0) self.rnode1.on_response_received() eq_(self.rnode1.rank(), 1) def test_repr(self): _ = repr(RoutingNode(tc.CLIENT_NODE)) def test_get_rnode(self): eq_(self.rnode1.get_rnode(), self.rnode1)