Re: [ovs-dev] [PATCH ovn branch-22.03] tests: Add helper for tcpdump.

2024-03-21 Thread Dumitru Ceara
On 3/21/24 07:15, Ales Musil wrote:
> On Wed, Mar 20, 2024 at 8:37 PM Mark Michelson  wrote:
> 
>> Hi Ales, thanks for providing this patch. However, branch-22.03 is now
>> in maintenance mode. It only is receiving patches for security issues
>> and other high-severity issues. I'm not planning to merge this, but if
>> there is a good reason that we should, I'm willing to hear it.
>>
> 
> 
> I think it's fine, I didn't realize the maintenance mode.
> 
> 

Even though it's less likely to push other patches to 22.03 I'd vote for
applying this one.  It passes CI and it will make any potential future
backports easier.

I'm fine either way however.

Regards,
Dumitru

>> On 3/20/24 06:13, Ales Musil wrote:
>>> The way how tcpdump was called in tests was inconsistent,
>>> a lot fo the tests didn't even wait for the tcpdump to properly
>>> start, some of them didn't redirect the stderr which could cause
>>> leak into the test stderr and fail the test.
>>>
>>> To prevent that add macro that starts tcpdump and properly
>>> waits for the "listening" state, at the same time redirects
>>> the stderr into separate file.
>>>
>>> Signed-off-by: Ales Musil 
>>> Signed-off-by: Dumitru Ceara 
>>> (cherry picked from commit e8ac18104df0bbd6579d8c62fd4282939631b878)
>>> ---
>>>   tests/system-common-macros.at |  25 +++--
>>>   tests/system-ovn-kmod.at  |  10 +-
>>>   tests/system-ovn.at   | 193 +-
>>>   3 files changed, 114 insertions(+), 114 deletions(-)
>>>
>>> diff --git a/tests/system-common-macros.at b/tests/
>> system-common-macros.at
>>> index 28a9873d6..d4f334036 100644
>>> --- a/tests/system-common-macros.at
>>> +++ b/tests/system-common-macros.at
>>> @@ -299,6 +299,18 @@ m4_define([OVS_START_L7],
>>>  ]
>>>   )
>>>
>>> +# NETNS_START_TCPDUMP([namespace], [params], [name])
>>> +#
>>> +# Helper to properly start tcpdump and wait for the startup.
>>> +# The tcpdump output is available in .tcpdump file.
>>> +m4_define([NETNS_START_TCPDUMP],
>>> +[
>>> + NETNS_DAEMONIZE([$1], [tcpdump -l $2 >$3.tcpdump 2>$3.stderr],
>> [$3.pid])
>>> + OVS_WAIT_UNTIL([grep -q "listening" $3.stderr])
>>> +]
>>> +)
>>> +
>>> +
>>>   # OVS_CHECK_VXLAN()
>>>   #
>>>   # Do basic check for vxlan functionality, skip the test if it's not
>> there.
>>> @@ -453,8 +465,7 @@ chown root:dhcpd /var/lib/dhcp
>> /var/lib/dhcp/dhcpd6.leases
>>>   chmod 775 /var/lib/dhcp
>>>   chmod 664 /var/lib/dhcp/dhcpd6.leases
>>>
>>> -NS_CHECK_EXEC([server], [tcpdump -nni s1 > pkt.pcap &])
>>> -
>>> +NETNS_START_TCPDUMP([server], [-nni s1], [server])
>>>   NETNS_DAEMONIZE([server], [dhcpd -6 -f s1 > dhcpd.log 2>&1],
>> [dhcpd.pid])
>>>   ovn-nbctl --wait=hv sync
>>>
>>> @@ -477,22 +488,20 @@ ovn-nbctl list logical_router_port rp-public >
>> /tmp/rp-public
>>>   ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
>>>   ovn-nbctl set logical_router_port rp-sw1 options:prefix=false
>>>   # Renew message
>>> -NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x05 and
>> ip6[[113:4]]=0x${prefix} > renew.pcap &])
>>> +NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x05 and
>> ip6[[113:4]]=0x${prefix}], [renew])
>>>   # Reply message with Status OK
>>> -NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x07 and
>> ip6[[81:4]]=0x${prefix} > reply.pcap &])
>>> +NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x07 and
>> ip6[[81:4]]=0x${prefix}], [reply])
>>>
>>>   OVS_WAIT_UNTIL([
>>> -total_pkts=$(cat renew.pcap | wc -l)
>>> +total_pkts=$(cat renew.tcpdump | wc -l)
>>>   test "${total_pkts}" = "1"
>>>   ])
>>>
>>>   OVS_WAIT_UNTIL([
>>> -total_pkts=$(cat reply.pcap | wc -l)
>>> +total_pkts=$(cat reply.tcpdump | wc -l)
>>>   test "${total_pkts}" = "1"
>>>   ])
>>>
>>> -kill $(pidof tcpdump)
>>> -
>>>   ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
>>>   ovn-nbctl clear logical_router_port rp-sw0 ipv6_prefix
>>>   OVS_WAIT_WHILE([test "$(ovn-nbctl get logical_router_port rp-sw0
>> ipv6_prefix | cut -c3-16)" = "[2001:1db8:]"])
>>> diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
>>> index db4191f31..7122b909c 100644
>>> --- a/tests/system-ovn-kmod.at
>>> +++ b/tests/system-ovn-kmod.at
>>> @@ -320,14 +320,10 @@ while True:
>>>   NETNS_DAEMONIZE([server], [$PYTHON3 ./server.py > server.log],
>> [server.pid])
>>>
>>>   dnl Collect packets on server side.
>>> -NETNS_DAEMONIZE([server], [tcpdump -l -U -i server -vnne \
>>> -  'ip and (icmp or udp)' > server.tcpdump 2>server_err],
>> [tcpdump0.pid])
>>> -OVS_WAIT_UNTIL([grep "listening" server_err])
>>> +NETNS_START_TCPDUMP([server], [-U -i server -vnne 'ip and (icmp or
>> udp)'], [tcpdump-server])
>>>
>>>   dnl Collect packets on client side.
>>> -NETNS_DAEMONIZE([client], [tcpdump -l -U -i client -vnne \
>>> -  'ip and (icmp or udp)' > client.tcpdump 2>client_err],
>> [tcpdump1.pid])
>>> -OVS_WAIT_UNTIL([grep "listening" client_err])
>>> 

Re: [ovs-dev] [PATCH ovn branch-22.03] tests: Add helper for tcpdump.

2024-03-21 Thread Ales Musil
On Wed, Mar 20, 2024 at 8:37 PM Mark Michelson  wrote:

> Hi Ales, thanks for providing this patch. However, branch-22.03 is now
> in maintenance mode. It only is receiving patches for security issues
> and other high-severity issues. I'm not planning to merge this, but if
> there is a good reason that we should, I'm willing to hear it.
>


I think it's fine, I didn't realize the maintenance mode.


> On 3/20/24 06:13, Ales Musil wrote:
> > The way how tcpdump was called in tests was inconsistent,
> > a lot fo the tests didn't even wait for the tcpdump to properly
> > start, some of them didn't redirect the stderr which could cause
> > leak into the test stderr and fail the test.
> >
> > To prevent that add macro that starts tcpdump and properly
> > waits for the "listening" state, at the same time redirects
> > the stderr into separate file.
> >
> > Signed-off-by: Ales Musil 
> > Signed-off-by: Dumitru Ceara 
> > (cherry picked from commit e8ac18104df0bbd6579d8c62fd4282939631b878)
> > ---
> >   tests/system-common-macros.at |  25 +++--
> >   tests/system-ovn-kmod.at  |  10 +-
> >   tests/system-ovn.at   | 193 +-
> >   3 files changed, 114 insertions(+), 114 deletions(-)
> >
> > diff --git a/tests/system-common-macros.at b/tests/
> system-common-macros.at
> > index 28a9873d6..d4f334036 100644
> > --- a/tests/system-common-macros.at
> > +++ b/tests/system-common-macros.at
> > @@ -299,6 +299,18 @@ m4_define([OVS_START_L7],
> >  ]
> >   )
> >
> > +# NETNS_START_TCPDUMP([namespace], [params], [name])
> > +#
> > +# Helper to properly start tcpdump and wait for the startup.
> > +# The tcpdump output is available in .tcpdump file.
> > +m4_define([NETNS_START_TCPDUMP],
> > +[
> > + NETNS_DAEMONIZE([$1], [tcpdump -l $2 >$3.tcpdump 2>$3.stderr],
> [$3.pid])
> > + OVS_WAIT_UNTIL([grep -q "listening" $3.stderr])
> > +]
> > +)
> > +
> > +
> >   # OVS_CHECK_VXLAN()
> >   #
> >   # Do basic check for vxlan functionality, skip the test if it's not
> there.
> > @@ -453,8 +465,7 @@ chown root:dhcpd /var/lib/dhcp
> /var/lib/dhcp/dhcpd6.leases
> >   chmod 775 /var/lib/dhcp
> >   chmod 664 /var/lib/dhcp/dhcpd6.leases
> >
> > -NS_CHECK_EXEC([server], [tcpdump -nni s1 > pkt.pcap &])
> > -
> > +NETNS_START_TCPDUMP([server], [-nni s1], [server])
> >   NETNS_DAEMONIZE([server], [dhcpd -6 -f s1 > dhcpd.log 2>&1],
> [dhcpd.pid])
> >   ovn-nbctl --wait=hv sync
> >
> > @@ -477,22 +488,20 @@ ovn-nbctl list logical_router_port rp-public >
> /tmp/rp-public
> >   ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
> >   ovn-nbctl set logical_router_port rp-sw1 options:prefix=false
> >   # Renew message
> > -NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x05 and
> ip6[[113:4]]=0x${prefix} > renew.pcap &])
> > +NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x05 and
> ip6[[113:4]]=0x${prefix}], [renew])
> >   # Reply message with Status OK
> > -NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x07 and
> ip6[[81:4]]=0x${prefix} > reply.pcap &])
> > +NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x07 and
> ip6[[81:4]]=0x${prefix}], [reply])
> >
> >   OVS_WAIT_UNTIL([
> > -total_pkts=$(cat renew.pcap | wc -l)
> > +total_pkts=$(cat renew.tcpdump | wc -l)
> >   test "${total_pkts}" = "1"
> >   ])
> >
> >   OVS_WAIT_UNTIL([
> > -total_pkts=$(cat reply.pcap | wc -l)
> > +total_pkts=$(cat reply.tcpdump | wc -l)
> >   test "${total_pkts}" = "1"
> >   ])
> >
> > -kill $(pidof tcpdump)
> > -
> >   ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
> >   ovn-nbctl clear logical_router_port rp-sw0 ipv6_prefix
> >   OVS_WAIT_WHILE([test "$(ovn-nbctl get logical_router_port rp-sw0
> ipv6_prefix | cut -c3-16)" = "[2001:1db8:]"])
> > diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
> > index db4191f31..7122b909c 100644
> > --- a/tests/system-ovn-kmod.at
> > +++ b/tests/system-ovn-kmod.at
> > @@ -320,14 +320,10 @@ while True:
> >   NETNS_DAEMONIZE([server], [$PYTHON3 ./server.py > server.log],
> [server.pid])
> >
> >   dnl Collect packets on server side.
> > -NETNS_DAEMONIZE([server], [tcpdump -l -U -i server -vnne \
> > -  'ip and (icmp or udp)' > server.tcpdump 2>server_err],
> [tcpdump0.pid])
> > -OVS_WAIT_UNTIL([grep "listening" server_err])
> > +NETNS_START_TCPDUMP([server], [-U -i server -vnne 'ip and (icmp or
> udp)'], [tcpdump-server])
> >
> >   dnl Collect packets on client side.
> > -NETNS_DAEMONIZE([client], [tcpdump -l -U -i client -vnne \
> > -  'ip and (icmp or udp)' > client.tcpdump 2>client_err],
> [tcpdump1.pid])
> > -OVS_WAIT_UNTIL([grep "listening" client_err])
> > +NETNS_START_TCPDUMP([client], [-U -i client -vnne 'ip and (icmp or
> udp)'], [tcpdump-client])
> >
> >   dnl Send two packets to the server with a short interval.
> >   dnl First packet should generate 'needs frag', the second should
> result in
> > @@ -345,7 +341,7 @@ time.sleep(5)
> >   

Re: [ovs-dev] [PATCH ovn branch-22.03] tests: Add helper for tcpdump.

2024-03-20 Thread Mark Michelson
Hi Ales, thanks for providing this patch. However, branch-22.03 is now 
in maintenance mode. It only is receiving patches for security issues 
and other high-severity issues. I'm not planning to merge this, but if 
there is a good reason that we should, I'm willing to hear it.


On 3/20/24 06:13, Ales Musil wrote:

The way how tcpdump was called in tests was inconsistent,
a lot fo the tests didn't even wait for the tcpdump to properly
start, some of them didn't redirect the stderr which could cause
leak into the test stderr and fail the test.

To prevent that add macro that starts tcpdump and properly
waits for the "listening" state, at the same time redirects
the stderr into separate file.

Signed-off-by: Ales Musil 
Signed-off-by: Dumitru Ceara 
(cherry picked from commit e8ac18104df0bbd6579d8c62fd4282939631b878)
---
  tests/system-common-macros.at |  25 +++--
  tests/system-ovn-kmod.at  |  10 +-
  tests/system-ovn.at   | 193 +-
  3 files changed, 114 insertions(+), 114 deletions(-)

diff --git a/tests/system-common-macros.at b/tests/system-common-macros.at
index 28a9873d6..d4f334036 100644
--- a/tests/system-common-macros.at
+++ b/tests/system-common-macros.at
@@ -299,6 +299,18 @@ m4_define([OVS_START_L7],
 ]
  )
  
+# NETNS_START_TCPDUMP([namespace], [params], [name])

+#
+# Helper to properly start tcpdump and wait for the startup.
+# The tcpdump output is available in .tcpdump file.
+m4_define([NETNS_START_TCPDUMP],
+[
+ NETNS_DAEMONIZE([$1], [tcpdump -l $2 >$3.tcpdump 2>$3.stderr], [$3.pid])
+ OVS_WAIT_UNTIL([grep -q "listening" $3.stderr])
+]
+)
+
+
  # OVS_CHECK_VXLAN()
  #
  # Do basic check for vxlan functionality, skip the test if it's not there.
@@ -453,8 +465,7 @@ chown root:dhcpd /var/lib/dhcp /var/lib/dhcp/dhcpd6.leases
  chmod 775 /var/lib/dhcp
  chmod 664 /var/lib/dhcp/dhcpd6.leases
  
-NS_CHECK_EXEC([server], [tcpdump -nni s1 > pkt.pcap &])

-
+NETNS_START_TCPDUMP([server], [-nni s1], [server])
  NETNS_DAEMONIZE([server], [dhcpd -6 -f s1 > dhcpd.log 2>&1], [dhcpd.pid])
  ovn-nbctl --wait=hv sync
  
@@ -477,22 +488,20 @@ ovn-nbctl list logical_router_port rp-public > /tmp/rp-public

  ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
  ovn-nbctl set logical_router_port rp-sw1 options:prefix=false
  # Renew message
-NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x05 and 
ip6[[113:4]]=0x${prefix} > renew.pcap &])
+NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x05 and 
ip6[[113:4]]=0x${prefix}], [renew])
  # Reply message with Status OK
-NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x07 and 
ip6[[81:4]]=0x${prefix} > reply.pcap &])
+NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x07 and 
ip6[[81:4]]=0x${prefix}], [reply])
  
  OVS_WAIT_UNTIL([

-total_pkts=$(cat renew.pcap | wc -l)
+total_pkts=$(cat renew.tcpdump | wc -l)
  test "${total_pkts}" = "1"
  ])
  
  OVS_WAIT_UNTIL([

-total_pkts=$(cat reply.pcap | wc -l)
+total_pkts=$(cat reply.tcpdump | wc -l)
  test "${total_pkts}" = "1"
  ])
  
-kill $(pidof tcpdump)

-
  ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
  ovn-nbctl clear logical_router_port rp-sw0 ipv6_prefix
  OVS_WAIT_WHILE([test "$(ovn-nbctl get logical_router_port rp-sw0 ipv6_prefix | cut 
-c3-16)" = "[2001:1db8:]"])
diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
index db4191f31..7122b909c 100644
--- a/tests/system-ovn-kmod.at
+++ b/tests/system-ovn-kmod.at
@@ -320,14 +320,10 @@ while True:
  NETNS_DAEMONIZE([server], [$PYTHON3 ./server.py > server.log], [server.pid])
  
  dnl Collect packets on server side.

-NETNS_DAEMONIZE([server], [tcpdump -l -U -i server -vnne \
-  'ip and (icmp or udp)' > server.tcpdump 2>server_err], 
[tcpdump0.pid])
-OVS_WAIT_UNTIL([grep "listening" server_err])
+NETNS_START_TCPDUMP([server], [-U -i server -vnne 'ip and (icmp or udp)'], 
[tcpdump-server])
  
  dnl Collect packets on client side.

-NETNS_DAEMONIZE([client], [tcpdump -l -U -i client -vnne \
-  'ip and (icmp or udp)' > client.tcpdump 2>client_err], 
[tcpdump1.pid])
-OVS_WAIT_UNTIL([grep "listening" client_err])
+NETNS_START_TCPDUMP([client], [-U -i client -vnne 'ip and (icmp or udp)'], 
[tcpdump-client])
  
  dnl Send two packets to the server with a short interval.

  dnl First packet should generate 'needs frag', the second should result in
@@ -345,7 +341,7 @@ time.sleep(5)
  NS_CHECK_EXEC([client], [$PYTHON3 ./client.py])
  
  dnl Expecting 2 outgoing packets and 2 fragments back - 8 lines total.

-OVS_WAIT_UNTIL([test "$(cat client.tcpdump | wc -l)" = "8"])
+OVS_WAIT_UNTIL([test "$(cat tcpdump-client.tcpdump | wc -l)" = "8"])
  
  ovn-appctl -t ovn-controller vlog/set info
  
diff --git a/tests/system-ovn.at b/tests/system-ovn.at

index 9e2507a7a..d66c9ab63 100644
--- a/tests/system-ovn.at
+++ b/tests/system-ovn.at
@@ -1602,12 +1602,11 @@ OVS_WAIT_UNTIL([
  ovn-nbctl --reject lb-add lb3 

Re: [ovs-dev] [PATCH ovn branch-22.03] tests: Add helper for tcpdump.

2024-03-20 Thread 0-day Robot
Bleep bloop.  Greetings Ales Musil, I am a robot and I have tried out your 
patch.
Thanks for your contribution.

I encountered some error that I wasn't expecting.  See the details below.


checkpatch:
WARNING: Unexpected sign-offs from developers who are not authors or co-authors 
or committers: Dumitru Ceara 
Lines checked: 703, Warnings: 1, Errors: 0


Please check this out.  If you feel there has been an error, please email 
acon...@redhat.com

Thanks,
0-day Robot
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev


[ovs-dev] [PATCH ovn branch-22.03] tests: Add helper for tcpdump.

2024-03-20 Thread Ales Musil
The way how tcpdump was called in tests was inconsistent,
a lot fo the tests didn't even wait for the tcpdump to properly
start, some of them didn't redirect the stderr which could cause
leak into the test stderr and fail the test.

To prevent that add macro that starts tcpdump and properly
waits for the "listening" state, at the same time redirects
the stderr into separate file.

Signed-off-by: Ales Musil 
Signed-off-by: Dumitru Ceara 
(cherry picked from commit e8ac18104df0bbd6579d8c62fd4282939631b878)
---
 tests/system-common-macros.at |  25 +++--
 tests/system-ovn-kmod.at  |  10 +-
 tests/system-ovn.at   | 193 +-
 3 files changed, 114 insertions(+), 114 deletions(-)

diff --git a/tests/system-common-macros.at b/tests/system-common-macros.at
index 28a9873d6..d4f334036 100644
--- a/tests/system-common-macros.at
+++ b/tests/system-common-macros.at
@@ -299,6 +299,18 @@ m4_define([OVS_START_L7],
]
 )
 
+# NETNS_START_TCPDUMP([namespace], [params], [name])
+#
+# Helper to properly start tcpdump and wait for the startup.
+# The tcpdump output is available in .tcpdump file.
+m4_define([NETNS_START_TCPDUMP],
+[
+ NETNS_DAEMONIZE([$1], [tcpdump -l $2 >$3.tcpdump 2>$3.stderr], [$3.pid])
+ OVS_WAIT_UNTIL([grep -q "listening" $3.stderr])
+]
+)
+
+
 # OVS_CHECK_VXLAN()
 #
 # Do basic check for vxlan functionality, skip the test if it's not there.
@@ -453,8 +465,7 @@ chown root:dhcpd /var/lib/dhcp /var/lib/dhcp/dhcpd6.leases
 chmod 775 /var/lib/dhcp
 chmod 664 /var/lib/dhcp/dhcpd6.leases
 
-NS_CHECK_EXEC([server], [tcpdump -nni s1 > pkt.pcap &])
-
+NETNS_START_TCPDUMP([server], [-nni s1], [server])
 NETNS_DAEMONIZE([server], [dhcpd -6 -f s1 > dhcpd.log 2>&1], [dhcpd.pid])
 ovn-nbctl --wait=hv sync
 
@@ -477,22 +488,20 @@ ovn-nbctl list logical_router_port rp-public > 
/tmp/rp-public
 ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
 ovn-nbctl set logical_router_port rp-sw1 options:prefix=false
 # Renew message
-NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x05 and 
ip6[[113:4]]=0x${prefix} > renew.pcap &])
+NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x05 and 
ip6[[113:4]]=0x${prefix}], [renew])
 # Reply message with Status OK
-NS_CHECK_EXEC([server], [tcpdump -c 1 -nni s1 ip6[[48:1]]=0x07 and 
ip6[[81:4]]=0x${prefix} > reply.pcap &])
+NETNS_START_TCPDUMP([server], [-c 1 -nni s1 ip6[[48:1]]=0x07 and 
ip6[[81:4]]=0x${prefix}], [reply])
 
 OVS_WAIT_UNTIL([
-total_pkts=$(cat renew.pcap | wc -l)
+total_pkts=$(cat renew.tcpdump | wc -l)
 test "${total_pkts}" = "1"
 ])
 
 OVS_WAIT_UNTIL([
-total_pkts=$(cat reply.pcap | wc -l)
+total_pkts=$(cat reply.tcpdump | wc -l)
 test "${total_pkts}" = "1"
 ])
 
-kill $(pidof tcpdump)
-
 ovn-nbctl set logical_router_port rp-sw0 options:prefix=false
 ovn-nbctl clear logical_router_port rp-sw0 ipv6_prefix
 OVS_WAIT_WHILE([test "$(ovn-nbctl get logical_router_port rp-sw0 ipv6_prefix | 
cut -c3-16)" = "[2001:1db8:]"])
diff --git a/tests/system-ovn-kmod.at b/tests/system-ovn-kmod.at
index db4191f31..7122b909c 100644
--- a/tests/system-ovn-kmod.at
+++ b/tests/system-ovn-kmod.at
@@ -320,14 +320,10 @@ while True:
 NETNS_DAEMONIZE([server], [$PYTHON3 ./server.py > server.log], [server.pid])
 
 dnl Collect packets on server side.
-NETNS_DAEMONIZE([server], [tcpdump -l -U -i server -vnne \
-  'ip and (icmp or udp)' > server.tcpdump 2>server_err], 
[tcpdump0.pid])
-OVS_WAIT_UNTIL([grep "listening" server_err])
+NETNS_START_TCPDUMP([server], [-U -i server -vnne 'ip and (icmp or udp)'], 
[tcpdump-server])
 
 dnl Collect packets on client side.
-NETNS_DAEMONIZE([client], [tcpdump -l -U -i client -vnne \
-  'ip and (icmp or udp)' > client.tcpdump 2>client_err], 
[tcpdump1.pid])
-OVS_WAIT_UNTIL([grep "listening" client_err])
+NETNS_START_TCPDUMP([client], [-U -i client -vnne 'ip and (icmp or udp)'], 
[tcpdump-client])
 
 dnl Send two packets to the server with a short interval.
 dnl First packet should generate 'needs frag', the second should result in
@@ -345,7 +341,7 @@ time.sleep(5)
 NS_CHECK_EXEC([client], [$PYTHON3 ./client.py])
 
 dnl Expecting 2 outgoing packets and 2 fragments back - 8 lines total.
-OVS_WAIT_UNTIL([test "$(cat client.tcpdump | wc -l)" = "8"])
+OVS_WAIT_UNTIL([test "$(cat tcpdump-client.tcpdump | wc -l)" = "8"])
 
 ovn-appctl -t ovn-controller vlog/set info
 
diff --git a/tests/system-ovn.at b/tests/system-ovn.at
index 9e2507a7a..d66c9ab63 100644
--- a/tests/system-ovn.at
+++ b/tests/system-ovn.at
@@ -1602,12 +1602,11 @@ OVS_WAIT_UNTIL([
 ovn-nbctl --reject lb-add lb3 30.0.0.10:80 ""
 ovn-nbctl ls-lb-add foo lb3
 # Filter reset segments
-NS_CHECK_EXEC([foo1], [tcpdump -l -c 1 -neei foo1 ip[[33:1]]=0x14 > rst.pcap 
2>tcpdump_err &])
-OVS_WAIT_UNTIL([grep "listening" tcpdump_err])
+NETNS_START_TCPDUMP([foo1], [-c 1 -neei foo1 ip[[33:1]]=0x14], [rst])
 NS_CHECK_EXEC([foo1], [wget -q 30.0.0.10],[4])
 
 OVS_WAIT_UNTIL([
-n_reset=$(cat