66from lib .network import Network
77from lib .vm import VM
88
9+ from . import tcpdump
10+
911# Requirements:
1012# From --hosts parameter:
1113# - host(A1): an XCP-ng host
@@ -59,18 +61,12 @@ def test_passing(self, defer: Defer, empty_network: Network, imported_vm: VM, vm
5961 vm_writer .ssh (f"ip addr add 192.168.42.1/24 dev { ifaceW } .42" )
6062 vm_writer .ssh (f"ip link set { ifaceW } .42 up" )
6163
62- # send some packets on VLAN 42 (ARP packets will be send)
63- # the ping process could be still running after the test,
64- # but vm_writer will be destroyed, so it isn't a problem.
65- vm_writer .ssh ("ping -c1 -w1 192.168.42.2" , background = True , check = False )
66-
67- # check packets are seen on vm_reader
68- # fail if /tmp/out is empty
69- vm_reader .ssh (
70- f"tcpdump -i { ifaceR } -w /tmp/out -c1 -n 'vlan 42 and arp' &"
71- "pid=$! ; sleep 5 ; kill $pid ;"
72- "test -s /tmp/out"
73- )
64+ with tcpdump (defer , "tcpdump.pcap" , vm_reader , ifaceR , "vlan 42 and arp" , count = 1 ):
65+ # send some packets on VLAN 42 (ARP packets will be send)
66+ vm_writer .ssh ("ping -c1 -w1 192.168.42.2" , check = False )
67+
68+ # check packets are seen on vm_reader (trunks=42)
69+ vm_reader .ssh ("test $(tcpdump -n -r tcpdump.pcap | wc -l) -gt 0" )
7470
7571 def test_filtered (self , defer : Defer , empty_network : Network , imported_vm : VM , vm_with_tcpdump_scope_function : VM ):
7672 vm_writer , ifaceW = start_vm_on_trunk (
@@ -95,15 +91,9 @@ def test_filtered(self, defer: Defer, empty_network: Network, imported_vm: VM, v
9591 vm_writer .ssh (f"ip addr add 192.168.42.1/24 dev { ifaceW } .42" )
9692 vm_writer .ssh (f"ip link set { ifaceW } .42 up" )
9793
98- # send some packets on VLAN 42 (ARP packets will be send)
99- # the ping process could be still running after the test,
100- # but vm_writer will be destroyed, so it isn't a problem.
101- vm_writer .ssh ("ping -c1 -w1 192.168.42.2" , background = True , check = False )
102-
103- # check packets are seen on vm_reader
104- # fail if /tmp/out is not empty
105- vm_reader .ssh (
106- f"tcpdump -i { ifaceR } -w /tmp/out -c1 -n 'vlan 42 and arp' &"
107- "pid=$! ; sleep 5 ; kill $pid ;"
108- "test ! -s /tmp/out"
109- )
94+ with tcpdump (defer , "tcpdump.pcap" , vm_reader , ifaceR , "vlan 42 and arp" , count = 1 ):
95+ # send some packets on VLAN 42 (ARP packets will be send)
96+ vm_writer .ssh ("ping -c1 -w1 192.168.42.2" , check = False )
97+
98+ # check packets are *NOT* seen on vm_reader (trunks=52)
99+ vm_reader .ssh ("test $(tcpdump -n -r tcpdump.pcap | wc -l) -eq 0" )
0 commit comments