commit 50df3ff29e42c733fc6dfbe64da7f4ae1cd89b9e Author: Arturo Filastò art@fuffa.org Date: Sat Nov 10 00:22:55 2012 +0100
Update example for writing scapy tests. * Make changes to test template of scapy tests --- nettests/examples/example_scapyt.py | 22 ++++++++++++++++------ ooni/templates/scapyt.py | 19 ++++++++++++++----- 2 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/nettests/examples/example_scapyt.py b/nettests/examples/example_scapyt.py index 51ffd02..a6199e2 100644 --- a/nettests/examples/example_scapyt.py +++ b/nettests/examples/example_scapyt.py @@ -5,13 +5,23 @@
from ooni.utils import log from ooni.templates import scapyt -from scapy.all import IP, TCP +from scapy.all import IP, ICMP
-class ExampleBasicScapy(scapyt.BaseScapyTest): - name = "Example Scapy Test" + +class ExampleICMPPingScapy(scapyt.BaseScapyTest): + name = "Example ICMP Ping Test" author = "Arturo Filastò" version = 0.1
- def test_send_raw_ip_frame(self): - log.msg("Running send receive") - ans, unans = self.sr(IP(dst='8.8.8.8')/TCP(), timeout=1) + def test_icmp_ping(self): + log.msg("Pinging 8.8.8.8") + def finished(packets): + print packets + answered, unanswered = packets + for snd, rcv in answered: + rcv.show() + + packets = IP(dst='8.8.8.8')/ICMP() + d = self.sr(packets) + d.addCallback(finished) + return d diff --git a/ooni/templates/scapyt.py b/ooni/templates/scapyt.py index 4c18f0a..3087ac7 100644 --- a/ooni/templates/scapyt.py +++ b/ooni/templates/scapyt.py @@ -47,14 +47,23 @@ class BaseScapyTest(NetTestCase): Wrapper around scapy.sendrecv.sr for sending and receiving of packets at layer 3. """ - def finished(result): - answered, unanswered = result - sent_packets, received_packets = answered - self.report['answered_packets'] = createPacketReport(received_packets) - self.report['sent_packets'] = createPacketReport(sent_packets) + def finished(packets): + log.debug("Got this bullshit") + answered, unanswered = packets + self.report['answered_packets'] = [] + self.report['sent_packets'] = [] + for snd, rcv in answered: + log.debug("Writing report %s") + pkt_report_r = createPacketReport(rcv) + pkt_report_s = createPacketReport(snd) + self.report['answered_packets'].append(pkt_report_r) + self.report['sent_packets'].append(pkt_report_s) + log.debug("Done") + return packets
scapyProtocol = ScapyProtocol(*arg, **kw) d = scapyProtocol.startSending(packets) + d.addCallback(finished) return d
def send(self, pkts, *arg, **kw):
tor-commits@lists.torproject.org