| % Regression tests for TestSocket |
| |
| + Configuration |
| ~ conf |
| |
| = Imports |
| |
| from test.testsocket import TestSocket, cleanup_testsockets |
| |
| = Create Dummy Packet |
| |
| class TestPacket(Packet): |
| fields_desc = [ |
| IntField("identifier", 0), |
| StrField("data", b"") |
| ] |
| def answers(self, other): |
| if other.__class__ != self.__class__: |
| return False |
| if self.identifier % 2: |
| return False |
| if self.identifier == (other.identifier + 1): |
| return True |
| return False |
| def hashret(self): |
| return struct.pack('I', self.identifier + (self.identifier % 2)) |
| |
| |
| = Create Sockets |
| |
| sender = TestSocket(TestPacket) |
| receiver = TestSocket(TestPacket) |
| sender.pair(receiver) |
| |
| + Basic tests |
| |
| = Simple ping pong |
| |
| def create_answer(p): |
| ans = TestPacket(identifier=p.identifier + 1, data=p.data + b"_answer") |
| receiver.send(ans) |
| |
| t = AsyncSniffer(timeout=50, prn=create_answer, opened_socket=receiver) |
| t.start() |
| |
| pks = PacketList() |
| |
| for i in range(1, 2000, 2): |
| txp = TestPacket(identifier=i, data=b"hello"*i) |
| rxp = sender.sr1(txp, verbose=False, timeout=0.5) |
| pks.append(txp) |
| pks.append(rxp) |
| |
| t.stop(join=True) |
| convs = pks.sr() |
| |
| sender.close() |
| receiver.close() |
| |
| assert len(t.results) == 1000 |
| assert len(pks) == 2000 |
| assert len(convs[0]) == 1000 |
| |
| = Simple ping pong with sr with packet generator 500 |
| |
| testlen = 500 |
| |
| sender = TestSocket(TestPacket) |
| receiver = TestSocket(TestPacket) |
| sender.pair(receiver) |
| |
| t = AsyncSniffer(timeout=10, prn=create_answer, opened_socket=receiver) |
| t.start() |
| |
| txp = TestPacket(identifier=range(1, testlen * 2, 2), data=b"test1") |
| rxp = sender.sr(txp, timeout=10, verbose=False, prebuild=True) |
| t.stop(join=True) |
| |
| print(rxp) |
| print(rxp[0].summary()) |
| |
| sender.close() |
| receiver.close() |
| |
| assert len(t.results) == testlen |
| assert len(rxp[0]) == testlen |
| |
| = Simple ping pong with sr with generated packets |
| |
| sender = TestSocket(TestPacket) |
| receiver = TestSocket(TestPacket) |
| sender.pair(receiver) |
| |
| t = AsyncSniffer(timeout=10, prn=create_answer, opened_socket=receiver) |
| t.start() |
| |
| txp = [TestPacket(identifier=i, data=b"hello") for i in range(1, 2000, 2)] |
| rxp = sender.sr(txp, timeout=10, verbose=False) |
| t.stop(join=True) |
| |
| print(rxp) |
| assert len(t.results) == 1000 |
| assert len(rxp[0]) == 1000 |
| |
| + Cleanup |
| |
| = Delete TestSockets |
| |
| cleanup_testsockets() |