From 4da93c9a9273d8d5735e250a99388aae5d92b032 Mon Sep 17 00:00:00 2001 From: Pierre LALET <pierre.lalet@cea.fr> Date: Sun, 8 Jan 2017 13:47:51 +0100 Subject: [PATCH] Add tests for sniff(), send(), sendp() --- appveyor.yml | 2 +- test/regression.uts | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/appveyor.yml b/appveyor.yml index d634de0a..29131bf7 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,7 +27,7 @@ test_script: - set PATH="%APPVEYOR_BUILD_FOLDER%;C:\Program Files\Wireshark\;%PATH%" # Main unit tests - - "%PYTHON%\\python -m coverage run -a bin\\UTscapy -f text -t test\\regression.uts -F -K automaton -K mock_read_routes6_bsd || exit /b 42" + - "%PYTHON%\\python -m coverage run -a bin\\UTscapy -f text -t test\\regression.uts -F -K automaton -K mock_read_routes6_bsd -K fork || exit /b 42" - 'del test\regression.uts' # Secondary unit tests diff --git a/test/regression.uts b/test/regression.uts index 41c640a0..cf3051cc 100644 --- a/test/regression.uts +++ b/test/regression.uts @@ -688,6 +688,31 @@ assert(DNS in IP(str(dns_ans2))) conf.route.route("0.0.0.0")[2] arping(_+"/24") += send() and sniff() +~ netaccess fork +import time +import os +def send_and_sniff(pkt, timeout=2, flt=None, iface=None): + """Send a packet, sniff, and check the packet has been seen""" + pid = os.fork() + assert pid != -1 + if pid == 0: + time.sleep(1) + (sendp if isinstance(pkt, (Ether, Dot3)) else send)(pkt, iface=iface) + os._exit(0) + else: + spkt = str(pkt) + pkts = sniff( + timeout=timeout, iface=iface, filter=flt, + stop_filter=lambda p: pkt.__class__ in p and str(p[pkt.__class__]) == spkt + ) + os.waitpid(pid, 0) + assert str(pkt) in (str(p[pkt.__class__]) for p in pkts if pkt.__class__ in p) + +send_and_sniff(IP(dst="secdev.org")/ICMP()) +send_and_sniff(IP(dst="secdev.org")/ICMP(), flt="icmp") +send_and_sniff(Ether()/IP(dst="secdev.org")/ICMP()) + ############ ############ -- GitLab