commit c24e22402e66b62fdb206a46ec541449b3e7cd6b Author: Damian Johnson atagar@torproject.org Date: Sat Jan 20 15:37:37 2018 -0800
Support packing Netinfo cells
Now that addresses can be packed supporting Netinfo cells is simple. --- stem/client/cell.py | 4 ++-- test/unit/client/cell.py | 14 +++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/stem/client/cell.py b/stem/client/cell.py index 074d2079..3a596b9c 100644 --- a/stem/client/cell.py +++ b/stem/client/cell.py @@ -366,11 +366,11 @@ class NetinfoCell(Cell):
payload = io.BytesIO() payload.write(Size.LONG.pack(int(datetime_to_unix(timestamp)))) - payload.write(Address.pack(receiver_address)) + payload.write(receiver_address.pack()) payload.write(Size.CHAR.pack(len(sender_addresses)))
for addr in sender_addresses: - payload.write(Address.pack(addr)) + payload.write(addr.pack())
return cls._pack(link_version, payload.getvalue())
diff --git a/test/unit/client/cell.py b/test/unit/client/cell.py index 7f3318ee..22de54d9 100644 --- a/test/unit/client/cell.py +++ b/test/unit/client/cell.py @@ -33,7 +33,9 @@ VERSIONS_CELLS = { '\x00\x00\x07\x00\x06\x00\x01\x00\x02\x00\x03': [1, 2, 3], }
-NETINFO_CELL = '\x00\x00\x08ZZ\xb6\x90\x04\x04\x7f\x00\x00\x01\x01\x04\x04aq\x0f\x02' + ZERO * (FIXED_PAYLOAD_LEN - 17) +NETINFO_CELLS = { + '\x00\x00\x08ZZ\xb6\x90\x04\x04\x7f\x00\x00\x01\x01\x04\x04aq\x0f\x02' + ZERO * (FIXED_PAYLOAD_LEN - 17): (datetime.datetime(2018, 1, 14, 1, 46, 56), Address(AddrType.IPv4, '127.0.0.1'), [Address(AddrType.IPv4, '97.113.15.2')]), +}
VPADDING_CELLS = { '\x00\x00\x80\x00\x00': '', @@ -122,11 +124,13 @@ class TestCell(unittest.TestCase): self.assertEqual(versions, Cell.unpack(cell_bytes, 2)[0].versions)
def test_netinfo_packing(self): - cell = Cell.unpack(NETINFO_CELL, 2)[0] + for cell_bytes, (timestamp, receiver_address, sender_addresses) in NETINFO_CELLS.items(): + self.assertEqual(cell_bytes, NetinfoCell.pack(2, receiver_address, sender_addresses, timestamp))
- self.assertEqual(datetime.datetime(2018, 1, 14, 1, 46, 56), cell.timestamp) - self.assertEqual(Address(AddrType.IPv4, '127.0.0.1'), cell.receiver_address) - self.assertEqual([Address(AddrType.IPv4, '97.113.15.2')], cell.sender_addresses) + cell = Cell.unpack(cell_bytes, 2)[0] + self.assertEqual(timestamp, cell.timestamp) + self.assertEqual(receiver_address, cell.receiver_address) + self.assertEqual(sender_addresses, cell.sender_addresses)
def test_vpadding_packing(self): for cell_bytes, payload in VPADDING_CELLS.items():