def __init__(self, sender_id, nodes2=None, nodes=None): if nodes is not None: raise MsgError, 'not implemented' if nodes2 is not None: self._bencoded_msg = BENCODED_MSG_TEMPLATES['og_find_node_r'] self._values = [sender_id.bin_id, mt.compact_nodes2(nodes2), ''] #TID else: raise MsgError, 'must have nodes OR nodes2'
def test_tools_error(self): c_nodes = mt.compact_nodes(tc.NODES) # Compact nodes is one byte short # assert_raises(m.MsgError, mt.uncompact_nodes, c_nodes[:-1]) # IP size is weird # assert_raises(m.MsgError, mt.bin_to_ip, '123') # Port is 0 ( eq_(mt.uncompact_nodes(c_nodes), tc.NODES) n = tc.NODES[0] tc.NODES[0] = node.Node((n.addr[0], 0), n.id) c_nodes = mt.compact_nodes(tc.NODES) eq_(mt.uncompact_nodes(c_nodes), tc.NODES[1:]) c_nodes2 = mt.compact_nodes2(tc.NODES) eq_(mt.uncompact_nodes2(c_nodes2), tc.NODES[1:]) tc.NODES[0] = n
def __init__(self, sender_id, token, nodes2=None, peers=None): if peers: self._bencoded_msg = BENCODED_MSG_TEMPLATES['og_get_peers_r_values'] self._values = [sender_id.bin_id, token, mt.compact_peers(peers), ''] #TID elif nodes2: self._bencoded_msg = BENCODED_MSG_TEMPLATES['og_get_peers_r_nodes'] self._values = [sender_id.bin_id, mt.compact_nodes2(nodes2), token, ''] #TID else: raise MsgError, 'must have nodes OR peers'
def __init__(self, sender_id, token, nodes2=None, peers=None): if peers: self._bencoded_msg = BENCODED_MSG_TEMPLATES[ 'og_get_peers_r_values'] self._values = [ sender_id.bin_id, token, mt.compact_peers(peers), '' ] #TID elif nodes2: self._bencoded_msg = BENCODED_MSG_TEMPLATES['og_get_peers_r_nodes'] self._values = [ sender_id.bin_id, mt.compact_nodes2(nodes2), token, '' ] #TID else: raise MsgError, 'must have nodes OR peers'
def test_tools_error(self): c_nodes = mt.compact_nodes(tc.NODES) # Compact nodes is one byte short eq_(mt.uncompact_nodes(c_nodes[:-1]), []) # Port is 0 ( eq_(mt.uncompact_nodes(c_nodes), tc.NODES) nodes = [n for n in tc.NODES] # One address has port ZERO nodes[0] = node.Node((nodes[0].addr[0], 0), nodes[0].id) peers = [n.addr for n in nodes] c_nodes = mt.compact_nodes(nodes) eq_(mt.uncompact_nodes(c_nodes), nodes[1:]) c_nodes2 = mt.compact_nodes2(nodes) eq_(mt.uncompact_nodes2(c_nodes2), nodes[1:]) c_peers = mt.compact_peers(peers) eq_(mt.uncompact_peers(c_peers), peers[1:])
def test_sanitize(self): self.ping_r.sanitize_response(m.PING) del self.fn2_r._msg_dict[m.RESPONSE][m.NODES2] # No NODES and no NODES2 assert_raises(m.MsgError, self.fn2_r.sanitize_response, m.FIND_NODE) self.fn2_r._msg_dict[m.RESPONSE][m.NODES] = \ mt.compact_nodes(tc.NODES) # Just NODES self.fn2_r.sanitize_response(m.FIND_NODE) self.fn2_r._msg_dict[m.RESPONSE][m.NODES2] = \ mt.compact_nodes2(tc.NODES) # Both NODES and NODES2 self.fn2_r.sanitize_response(m.FIND_NODE) # Both NODES and PEERS in response self.gp_r._msg_dict[m.RESPONSE][m.NODES] = \ mt.compact_nodes(tc.NODES) self.gp_r.sanitize_response(m.GET_PEERS) # No NODES and no PEERS del self.gp_r._msg_dict[m.RESPONSE][m.NODES] del self.gp_r._msg_dict[m.RESPONSE][m.VALUES] assert_raises(m.MsgError, self.gp_r.sanitize_response, m.GET_PEERS)
def _test_sanitize(self): self.ping_r.sanitize_response(m.PING) del self.fn2_r._msg_dict[m.RESPONSE][m.NODES2] # No NODES and no NODES2 assert_raises(m.MsgError, self.fn2_r.sanitize_response, m.FIND_NODE) self.fn2_r._msg_dict[m.RESPONSE][m.NODES] = \ mt.compact_nodes(tc.NODES) # Just NODES self.fn2_r.sanitize_response(m.FIND_NODE) self.fn2_r._msg_dict[m.RESPONSE][m.NODES2] = \ mt.compact_nodes2(tc.NODES) # Both NODES and NODES2 self.fn2_r.sanitize_response(m.FIND_NODE) # Both NODES and PEERS in response self.gp_r._msg_dict[m.RESPONSE][m.NODES] = \ mt.compact_nodes(tc.NODES) self.gp_r.sanitize_response(m.GET_PEERS) # No NODES and no PEERS del self.gp_r._msg_dict[m.RESPONSE][m.NODES] del self.gp_r._msg_dict[m.RESPONSE][m.VALUES] assert_raises(m.MsgError, self.gp_r.sanitize_response, m.GET_PEERS)
def test_tools_error(self): c_nodes = mt.compact_nodes(tc.NODES) # Compact nodes is one byte short eq_(mt.uncompact_nodes(c_nodes[:-1]), []) # Port is 0 ( eq_(mt.uncompact_nodes(c_nodes), tc.NODES) nodes = [n for n in tc.NODES] # One address has port ZERO nodes[0] = node.Node((nodes[0].addr[0], 0), nodes[0].id) peers = [n.addr for n in nodes] c_nodes = mt.compact_nodes(nodes) eq_(mt.uncompact_nodes(c_nodes), nodes[1:]) c_nodes2 = mt.compact_nodes2(nodes) eq_(mt.uncompact_nodes2(c_nodes2), nodes[1:]) c_peers = mt.compact_peers(peers) eq_(mt.uncompact_peers(c_peers), peers[1:]) addr = ('1.2.3.4', 1234) c_addr = mt.compact_addr(addr) assert_raises(mt.AddrError, mt.uncompact_addr, c_addr[:-1]) assert_raises(mt.AddrError, mt.uncompact_addr, c_addr[1:]) assert_raises(mt.AddrError, mt.uncompact_addr, c_addr+'X')
def test_tools_error(self): c_nodes = mt.compact_nodes(tc.NODES) # Compact nodes is one byte short eq_(mt.uncompact_nodes(c_nodes[:-1]), []) # Port is 0 ( eq_(mt.uncompact_nodes(c_nodes), tc.NODES) nodes = [n for n in tc.NODES] # One address has port ZERO nodes[0] = node.Node((nodes[0].addr[0], 0), nodes[0].id) peers = [n.addr for n in nodes] c_nodes = mt.compact_nodes(nodes) eq_(mt.uncompact_nodes(c_nodes), nodes[1:]) c_nodes2 = mt.compact_nodes2(nodes) eq_(mt.uncompact_nodes2(c_nodes2), nodes[1:]) c_peers = mt.compact_peers(peers) eq_(mt.uncompact_peers(c_peers), peers[1:]) addr = ('1.2.3.4', 1234) c_addr = mt.compact_addr(addr) assert_raises(mt.AddrError, mt.uncompact_addr, c_addr[:-1]) assert_raises(mt.AddrError, mt.uncompact_addr, c_addr[1:]) assert_raises(mt.AddrError, mt.uncompact_addr, c_addr + 'X')
def test_nodes2(self): response = m.OutgoingGetPeersResponse(tc.SERVER_NODE, tc.CLIENT_ID, peers=tc.PEERS) response._dict[m.RESPONSE][m.NODES2] = mt.compact_nodes2(tc.NODES) bencoded = response.stamp(tc.TID) m.IncomingMsg(Datagram(bencoded, tc.CLIENT_ADDR))
def test_nodes2(self): response = clients_msg_f.outgoing_get_peers_response(tc.SERVER_NODE, peers=tc.PEERS) response._dict[m.RESPONSE][m.NODES2] = mt.compact_nodes2(tc.NODES) bencoded = response.stamp(tc.TID) servers_msg_f.incoming_msg(Datagram(bencoded, tc.CLIENT_ADDR))
def test_nodes2(self): response = m.OutgoingGetPeersResponse(tc.CLIENT_ID, peers=tc.PEERS) response._dict[m.RESPONSE][m.NODES2] = mt.compact_nodes2(tc.NODES) bencoded = response.encode(tc.TID) m.IncomingMsg(bencoded, tc.CLIENT_ADDR)