>
> On Fri, Oct 12, 2018 at 08:54:49AM -0700, Ben Pfaff wrote:
> > On Fri, Oct 12, 2018 at 03:44:51PM +0300, Ilya Maximets wrote:
> > > > Hi,
> > > >
> > > > it seems that travis-ci is failing due to a testsuite regression
> > > > introduced
> > > > by 1adcbcee8f4c ("ossfuzz: Break flow test target into two targets to
> > > > speed
> > > > up fuzzing.").
> > > >
> > > > https://travis-ci.org/openvswitch/ovs/jobs/439811394
> > >
> > > Hi Simon,
> > >
> > > As it was already said, this is not the patch that produces the issue.
> > > I'm able to reproduce '2649: ovn -- 3 HVs, 3 LS, 3 lports/LS, 1 LR'
> > > test failure locally by restricting to use only one CPU core with taskset.
> > > So, I bisected the issue and found that the fist patch that fails is:
> > >
> > > 2e5cdb4b1392 ("OVN: add buffering support for ip packets").
> > >
> > > Issue happens only if single core assigned:
> > >
> > > taskset -c 2 make check TESTSUITEFLAGS='2649' #FAILS
> > > taskset -c 2-3 make check TESTSUITEFLAGS='2649' #OK
> > >
> > > As Travis has no much CPU resources it fails all the time.
> > >
> > > I'm not much familiar with OVN code/tests, hope above information will
> > > be useful for your investigation.
> >
> > I can reproduce this too, with your hint (although it's test 3309, not
> > 2649).
> >
> > The failure is because a lot of expected packets don't show up:
> >
> > ...
> > rcv_n=212 exp_n=233
> > ovn.at:12: wait failed after 10 seconds
> >
> > It needs more looking into.
>
> I don't have time to look into it, but we need the tests passing, so I
> sent a revert: https://patchwork.ozlabs.org/patch/984336/
Hi all,
I looked into it and it is probably a timing issue. In particular the
ARP replies generated during test 8
do not reach the router before the ip buffering gc time-out so we will
end up having less packets than
expected.
A trivial solution is to invert test 8 and 4,5,6 or maybe we can add a
unixctl command to disable ip
buffering.
Could you please try following patch? it fixes in my tests
Regards,
Lorenzo
diff --git a/tests/ovn.at b/tests/ovn.at
index 002ef0dfb..562d96533 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -2673,17 +2673,62 @@ test_arp() {
fi
}
+: > mac_bindings.expected
+# 4. Generate an ARP reply for each of the IP addresses ARPed for
+# earlier as #3.
+#
+# Here, the $s is the VIF that originated the ARP request and $d is
+# the VIF that sends the ARP reply, which is somewhat backward but
+# it means that $s and $d are the same as #3.
+for is in 1 2 3; do
+ for js in 1 2 3; do
+ for ks in 1 2 3; do
+ s=$is$js$ks
+ for id in 1 2 3; do
+ for jd in 1 2 3; do
+ if test $is$js = $id$jd; then
+ continue
+ fi
+
+ kd=1
+ d=$id$jd$kd
+
+ o4=`expr $is '*' 9 + $js '*' 3 + $ks + 10`
+ host_ip=`ip_to_hex 192 168 $id$jd $o4`
+ host_mac=8000000000$o4
+
+ lrmac=00000000ff$id$jd
+ lrip=`ip_to_hex 192 168 $id$jd 254`
+
+
arp=${lrmac}${host_mac}08060001080006040002${host_mac}${host_ip}${lrmac}${lrip}
+
+ echo
+ echo
+ echo
+ hv=hv`vif_to_hv $d`
+ as $hv ovs-appctl netdev-dummy/receive vif$d $arp
+ #as $hv ovs-appctl ofproto/trace br-int in_port=$d $arp
+ #as $hv ovs-ofctl dump-flows br-int table=19
+
+ host_ip_pretty=192.168.$id$jd.$o4
+ host_mac_pretty=80:00:00:00:00:$o4
+ echo lrp$id$jd,$host_ip_pretty,$host_mac_pretty >>
mac_bindings.expected
+ done
+ done
+ done
+ done
+done
+
# Test router replies to ARP requests from all source ports:
#
-# 4. Router replies to query for its MAC address from port's own IP address.
+# 5. Router replies to query for its MAC address from port's own IP address.
#
-# 5. Router replies to query for its MAC address from any random IP address
+# 6. Router replies to query for its MAC address from any random IP address
# in its subnet.
#
-# 6. No reply to query for IP address other than router IP.
+# 7. No reply to query for IP address other than router IP.
#
-# 7. No reply to query from another subnet.
-: > mac_bindings.expected
+# 8. No reply to query from another subnet.
for i in 1 2 3; do
for j in 1 2 3; do
for k in 1 2 3; do
@@ -2727,50 +2772,6 @@ for i in 1 2 3; do
done
done
-# 8. Generate an ARP reply for each of the IP addresses ARPed for
-# earlier as #3.
-#
-# Here, the $s is the VIF that originated the ARP request and $d is
-# the VIF that sends the ARP reply, which is somewhat backward but
-# it means that $s and $d are the same as #3.
-for is in 1 2 3; do
- for js in 1 2 3; do
- for ks in 1 2 3; do
- s=$is$js$ks
- for id in 1 2 3; do
- for jd in 1 2 3; do
- if test $is$js = $id$jd; then
- continue
- fi
-
- kd=1
- d=$id$jd$kd
-
- o4=`expr $is '*' 9 + $js '*' 3 + $ks + 10`
- host_ip=`ip_to_hex 192 168 $id$jd $o4`
- host_mac=8000000000$o4
-
- lrmac=00000000ff$id$jd
- lrip=`ip_to_hex 192 168 $id$jd 254`
-
-
arp=${lrmac}${host_mac}08060001080006040002${host_mac}${host_ip}${lrmac}${lrip}
-
- echo
- echo
- echo
- hv=hv`vif_to_hv $d`
- as $hv ovs-appctl netdev-dummy/receive vif$d $arp
- #as $hv ovs-appctl ofproto/trace br-int in_port=$d $arp
- #as $hv ovs-ofctl dump-flows br-int table=19
-
- host_ip_pretty=192.168.$id$jd.$o4
- host_mac_pretty=80:00:00:00:00:$o4
- echo lrp$id$jd,$host_ip_pretty,$host_mac_pretty >>
mac_bindings.expected
- done
- done
- done
- done
-done
# Allow some time for packet forwarding.
# XXX This can be improved.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev