From patchwork Thu Apr 20 16:14:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xavier Simonart X-Patchwork-Id: 1771527 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::133; helo=smtp2.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=hgy6Js/W; dkim-atps=neutral Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Q2N6T0HZwz23tD for ; Fri, 21 Apr 2023 02:15:12 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 2487442BBF; Thu, 20 Apr 2023 16:15:10 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 2487442BBF Authentication-Results: smtp2.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=hgy6Js/W X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PnRmaAiQL_Zo; Thu, 20 Apr 2023 16:15:08 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp2.osuosl.org (Postfix) with ESMTPS id 5599C427D6; Thu, 20 Apr 2023 16:15:07 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 5599C427D6 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 52D30C008E; Thu, 20 Apr 2023 16:15:05 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 577B9C0037 for ; Thu, 20 Apr 2023 16:15:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 4A64C4188C for ; Thu, 20 Apr 2023 16:15:02 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 4A64C4188C Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=hgy6Js/W X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 85w0CAOnPraY for ; Thu, 20 Apr 2023 16:15:00 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org AFE4D40975 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id AFE4D40975 for ; Thu, 20 Apr 2023 16:15:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682007299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NqOzBc3E+z4bf06zlrM05abHUG69nRdIUOhvmburLus=; b=hgy6Js/WsSuoIWVl+ZofMrJo6tylalmYXNBv/TxrhAnNJzJktVNMxtBID/jhTpykc7TJS8 T3uLvD6qhfAcc7Ohbi59qrvwSoRkvfh2BttlrpuaWieTWr/JtSc/hSETYMhvhCQj0fYQ7f qM5KRLTjU3FoqsE41ttQaMaPp9LfInk= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-441-WekhjYgDOI-U_GOSKSN5Hw-1; Thu, 20 Apr 2023 12:14:56 -0400 X-MC-Unique: WekhjYgDOI-U_GOSKSN5Hw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0A3A1185A794 for ; Thu, 20 Apr 2023 16:14:56 +0000 (UTC) Received: from wsfd-netdev90.ntdv.lab.eng.bos.redhat.com (wsfd-netdev90.ntdv.lab.eng.bos.redhat.com [10.19.188.196]) by smtp.corp.redhat.com (Postfix) with ESMTP id E04A12026D16; Thu, 20 Apr 2023 16:14:55 +0000 (UTC) From: Xavier Simonart To: xsimonar@redhat.com, dev@openvswitch.org Date: Thu, 20 Apr 2023 18:14:53 +0200 Message-Id: <20230420161455.134493-1-xsimonar@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [ovs-dev] [PATCH ovn 1/3] tests: Fixed "1 LR with HA distributed router gateway port" X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" This test is broken since a long time but passed as it used OVS_WAIT_UNTIL for checking output, which succeeds whatever the output is ... - Replaced OVS_WAIT_UNTIL by OVS_WAIT_FOR_OUTPUT - Update table numbers - Added back hv$i-vif1 port - Changed slaves to members - Added back gw2 (hence could remove the XXX) The following has also been removed: OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=9 | grep arp_tpa=192.168.0.101 | wc -l], [0], [[0 i.e. checking ARP responder flows in ls_in_arp_rsp as the test expected n such flows for the lowest priority chassis in the HA group. Signed-off-by: Xavier Simonart Acked-by: Ales Musil --- tests/ovn.at | 159 +++++++++++++++++++++++---------------------------- 1 file changed, 72 insertions(+), 87 deletions(-) diff --git a/tests/ovn.at b/tests/ovn.at index 7e804699a..aba3e92c6 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -13277,30 +13277,27 @@ as hv2 ovs-ofctl dump-flows br-int table=37 gw1_chassis=$(fetch_column Chassis _uuid name=gw1) gw2_chassis=$(fetch_column Chassis _uuid name=gw2) -OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv1_gw1_ofport,$hv1_gw2_ofport \ +OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv1_gw1_ofport,$hv1_gw2_ofport \ | wc -l], [0], [1 ]) -OVS_WAIT_UNTIL([as hv2 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv2_gw1_ofport,$hv2_gw2_ofport \ +OVS_WAIT_FOR_OUTPUT([as hv2 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv2_gw1_ofport,$hv2_gw2_ofport \ | wc -l], [0], [1 ]) -# make sure that flows for handling the outside router port reside on gw1 -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=25 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[1 +# make sure that flows for handling the outside router port reside on gw1 through ls_in_l2_lkup table +OVS_WAIT_FOR_OUTPUT([as gw1 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[1 ]]) -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=25 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[0 +OVS_WAIT_FOR_OUTPUT([as gw2 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[0 ]]) -# make sure ARP responder flows for outside router port reside on gw1 too -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=9 | \ -grep arp_tpa=192.168.0.101 | wc -l], [0], [[1 -]]) -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=9 | grep arp_tpa=192.168.0.101 | wc -l], [0], [[0 -]]) +# make sure ARP responder flows for outside router port reside on gw1 too through ls_in_arp_rsp table +OVS_WAIT_UNTIL([test `as gw1 ovs-ofctl dump-flows br-int table=27 | \ +grep arp_tpa=192.168.0.101 | wc -l` -ge 1]) # check that the chassis redirect port has been claimed by the gw1 chassis wait_row_count Port_Binding 1 logical_port=cr-outside chassis=$gw1_chassis @@ -13323,13 +13320,13 @@ wait_for_ports_up check ovn-nbctl --wait=hv sync # we make sure that the hypervisors noticed, and inverted the slave ports -OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv1_gw2_ofport,$hv1_gw1_ofport \ +OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv1_gw2_ofport,$hv1_gw1_ofport \ | wc -l], [0], [1 ]) -OVS_WAIT_UNTIL([as hv2 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv2_gw2_ofport,$hv2_gw1_ofport \ +OVS_WAIT_FOR_OUTPUT([as hv2 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv2_gw2_ofport,$hv2_gw1_ofport \ | wc -l], [0], [1 ]) @@ -13381,11 +13378,11 @@ AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-hv1-0],[0], ]]) # make sure that flows for handling the outside router port reside on gw2 now -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=25 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[1 +OVS_WAIT_FOR_OUTPUT([as gw2 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[1 ]]) -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=25 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[0 +OVS_WAIT_FOR_OUTPUT([as gw1 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[0 ]]) # disconnect GW2 from the network, GW1 should take over @@ -13395,12 +13392,12 @@ as main ovs-vsctl del-port n1 $port bfd_dump -# make sure that flows for handling the outside router port reside on gw2 now -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=25 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[1 +# make sure that flows for handling the outside router port reside on gw1 now +OVS_WAIT_FOR_OUTPUT([as gw1 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[1 ]]) -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=25 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[0 +OVS_WAIT_FOR_OUTPUT([as gw2 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[0 ]]) # check that the chassis redirect port has been reclaimed by the gw1 chassis @@ -13479,45 +13476,16 @@ ovn-nbctl set Logical_Router_Port outside ha_chassis_group=$hagrp1_uuid wait_row_count HA_Chassis_Group 1 wait_row_count HA_Chassis 2 -OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv1_gw1_ofport,$hv1_gw2_ofport \ -| wc -l], [0], [1 +OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv1_gw1_ofport,$hv1_gw2_ofport \ +| wc -l], [0], [0 ]) -OVS_WAIT_UNTIL([as hv2 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv2_gw1_ofport,$hv2_gw2_ofport \ -| wc -l], [0], [1 +OVS_WAIT_FOR_OUTPUT([as hv2 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv2_gw1_ofport,$hv2_gw2_ofport \ +| wc -l], [0], [0 ]) -# make sure that flows for handling the outside router port reside on gw1 -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=24 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[1 -]]) -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=24 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[0 -]]) - -# make sure ARP responder flows for outside router port reside on gw1 too -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=9 | \ -grep arp_tpa=192.168.0.101 | wc -l], [0], [[1 -]]) -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=9 | grep arp_tpa=192.168.0.101 | wc -l], [0], [[0 -]]) - -# check that the chassis redirect port has been claimed by the gw1 chassis -# -# XXX actually it doesn't happen, the test has always been wrong here -# because the following just checks that "wc -l" succeeds (and it always -# does): -# -# OVS_WAIT_UNTIL([ovn-sbctl --columns chassis --bare find Port_Binding \ -# logical_port=cr-outside | grep $gw1_chassis | wc -l], [0],[[1 -# ]]) -# -# If it were correct, then the following would be a good substitute: -# -# wait_row_count Port_Binding 1 logical_port=cr-outside chassis=$gw1_chassis - # Re add the ovs ports. for i in 1 2; do as hv$i @@ -13528,6 +13496,34 @@ for i in 1 2; do ofport-request=1 done +# Re-add gw2 +as gw2 ovn_attach n1 br-phys 192.168.0.1 + +OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv1_gw1_ofport,$hv1_gw2_ofport \ +| wc -l], [0], [1 +]) + +OVS_WAIT_FOR_OUTPUT([as hv2 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv2_gw1_ofport,$hv2_gw2_ofport \ +| wc -l], [0], [1 +]) + +# make sure that flows for handling the outside router port reside on gw1 +OVS_WAIT_FOR_OUTPUT([as gw1 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[1 +]]) +OVS_WAIT_FOR_OUTPUT([as gw2 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst:00:00:02:01:02:04" | wc -l], [0], [[0 +]]) + +# make sure ARP responder flows for outside router port reside on gw1 too +OVS_WAIT_UNTIL([test `as gw1 ovs-ofctl dump-flows br-int table=27 | \ +grep arp_tpa=192.168.0.101 | wc -l` -ge 1 ]) + +# check that the chassis redirect port has been claimed by the gw1 chassis +wait_row_count Port_Binding 1 logical_port=cr-outside chassis=$gw1_chassis + hv1_ch_uuid=$(fetch_column Chassis _uuid name=hv1) hv2_ch_uuid=$(fetch_column Chassis _uuid name=hv2) exp_ref_ch_list="$hv1_ch_uuid $hv2_ch_uuid" @@ -13536,29 +13532,18 @@ wait_column "$exp_ref_ch_list" HA_Chassis_Group ref_chassis # Increase the priority of gw2 ovn-nbctl --wait=sb ha-chassis-group-add-chassis hagrp1 gw2 40 -OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv1_gw2_ofport,$hv1_gw1_ofport \ +OVS_WAIT_FOR_OUTPUT([as hv1 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv1_gw2_ofport,$hv1_gw1_ofport \ | wc -l], [0], [1 ]) -OVS_WAIT_UNTIL([as hv2 ovs-ofctl dump-flows br-int table=37 | \ -grep active_backup | grep slaves:$hv2_gw2_ofport,$hv2_gw1_ofport \ +OVS_WAIT_FOR_OUTPUT([as hv2 ovs-ofctl dump-flows br-int table=37 | \ +grep active_backup | grep members:$hv2_gw2_ofport,$hv2_gw1_ofport \ | wc -l], [0], [1 ]) # check that the chassis redirect port has been reclaimed by the gw2 chassis -# -# XXX actually it doesn't happen, the test has always been wrong here -# because the following just checks that "wc -l" succeeds (and it always -# does): -# -# OVS_WAIT_UNTIL([ovn-sbctl --columns chassis --bare find Port_Binding \ -# logical_port=cr-outside | grep $gw2_chassis | wc -l], [0],[[1 -# ]]) -# -# If it were correct, then the following would be a good substitute: -# -# wait_row_count Port_Binding 1 logical_port=cr-outside chassis=$gw2_chassis +wait_row_count Port_Binding 1 logical_port=cr-outside chassis=$gw2_chassis # check BFD enablement on tunnel ports from gw1 ######### as gw1 @@ -13597,11 +13582,11 @@ AT_CHECK([ovs-vsctl --bare --columns bfd find Interface name=ovn-hv1-0],[0], ]]) # make sure that flows for handling the outside router port reside on gw2 now -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=24 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[1 +OVS_WAIT_FOR_OUTPUT([as gw2 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[1 ]]) -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=24 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[0 +OVS_WAIT_FOR_OUTPUT([as gw1 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[0 ]]) # disconnect GW2 from the network, GW1 should take over @@ -13612,11 +13597,11 @@ as main ovs-vsctl del-port n1 $port bfd_dump # make sure that flows for handling the outside router port reside on gw2 now -OVS_WAIT_UNTIL([as gw1 ovs-ofctl dump-flows br-int table=24 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[1 +OVS_WAIT_FOR_OUTPUT([as gw1 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[1 ]]) -OVS_WAIT_UNTIL([as gw2 ovs-ofctl dump-flows br-int table=24 | \ -grep 00:00:02:01:02:04 | wc -l], [0], [[0 +OVS_WAIT_FOR_OUTPUT([as gw2 ovs-ofctl dump-flows br-int table=33 | \ +grep "dl_dst=00:00:02:01:02:04" | wc -l], [0], [[0 ]]) # check that the chassis redirect port has been reclaimed by the gw1 chassis From patchwork Thu Apr 20 16:14:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xavier Simonart X-Patchwork-Id: 1771526 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=CFzBFVtr; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Q2N6N3s2pz23tD for ; Fri, 21 Apr 2023 02:15:08 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id BEAB26FF4F; Thu, 20 Apr 2023 16:15:06 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org BEAB26FF4F Authentication-Results: smtp3.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=CFzBFVtr X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fcdVHZmtb82O; Thu, 20 Apr 2023 16:15:05 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id 9EAE66FF48; Thu, 20 Apr 2023 16:15:04 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 9EAE66FF48 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7E810C0037; Thu, 20 Apr 2023 16:15:04 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7180AC0037 for ; Thu, 20 Apr 2023 16:15:02 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 424E04169E for ; Thu, 20 Apr 2023 16:15:02 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org 424E04169E Authentication-Results: smtp4.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=CFzBFVtr X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gERkE-C1w6Qq for ; Thu, 20 Apr 2023 16:15:01 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org E4FD840977 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp4.osuosl.org (Postfix) with ESMTPS id E4FD840977 for ; Thu, 20 Apr 2023 16:15:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682007299; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=htSCrQ8pZ40Xa2oPX30gI5DC6LmnNCh3dmDk88oTaug=; b=CFzBFVtrsFnq7WKPdMOJDcBh/4+oi521QBqf96ZgZFoyFqkoQ8/sjo1VDG6xWvMQ7MsD2D XphhsiriaBwBg0VUrcgdv7ts8pmVfJAVP3LVcalqtgzA6IIkh/eEhsLrOpTJBqlEBBRwOW Jv8ZhJfHWw+yj8kE3iGd1cNmh2Hfw1Y= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-441-fjBTVnvvMtiCx3ZqlG_Dcg-1; Thu, 20 Apr 2023 12:14:57 -0400 X-MC-Unique: fjBTVnvvMtiCx3ZqlG_Dcg-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 289873C10C72 for ; Thu, 20 Apr 2023 16:14:56 +0000 (UTC) Received: from wsfd-netdev90.ntdv.lab.eng.bos.redhat.com (wsfd-netdev90.ntdv.lab.eng.bos.redhat.com [10.19.188.196]) by smtp.corp.redhat.com (Postfix) with ESMTP id 11BC32026D16; Thu, 20 Apr 2023 16:14:56 +0000 (UTC) From: Xavier Simonart To: xsimonar@redhat.com, dev@openvswitch.org Date: Thu, 20 Apr 2023 18:14:54 +0200 Message-Id: <20230420161455.134493-2-xsimonar@redhat.com> In-Reply-To: <20230420161455.134493-1-xsimonar@redhat.com> References: <20230420161455.134493-1-xsimonar@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [ovs-dev] [PATCH ovn 2/3] tests: Fixed wrong usage of OVS_WAIT_UNTIL X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" Signed-off-by: Xavier Simonart Acked-by: Ales Musil --- tests/ovn-controller.at | 19 ++++++++++++------- tests/ovn.at | 24 ++++++++++++------------ 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/tests/ovn-controller.at b/tests/ovn-controller.at index 597aed00b..137724723 100644 --- a/tests/ovn-controller.at +++ b/tests/ovn-controller.at @@ -493,7 +493,8 @@ check ovn-nbctl --wait=hv sync # And check that it gets propagated to br-int external_ids. as hv1 -OVS_WAIT_UNTIL([ovs-vsctl get Bridge br-int external_ids:ovn-nb-cfg], [0], [1]) +OVS_WAIT_FOR_OUTPUT([ovs-vsctl get Bridge br-int external_ids:ovn-nb-cfg], [0], ["1" +]) nb_cfg_ts=$(fetch_column Chassis_Private nb_cfg_timestamp name=hv1) as hv1 @@ -672,22 +673,26 @@ check ovs-vsctl del-ssl start_daemon ovn-controller -p $key -c $cert -C $cacert # SSL should not connect because of key and cert mismatch -OVS_WAIT_UNTIL([ovn-appctl -t ovn-controller connection-status], [0], [not connected]) +OVS_WAIT_FOR_OUTPUT([ovn-appctl -t ovn-controller connection-status], [0], [not connected +]) # Modify the files with the correct key and cert, and reconnect should succeed cp $PKIDIR/$key $key cp $PKIDIR/$cert $cert -OVS_WAIT_UNTIL([ovn-appctl -t ovn-controller connection-status], [0], [connected]) +OVS_WAIT_FOR_OUTPUT([ovn-appctl -t ovn-controller connection-status], [0], [connected +]) # Remove the files and expect the connection to drop rm $key $cert -OVS_WAIT_UNTIL([ovn-appctl -t ovn-controller connection-status], [0], [not connected]) +OVS_WAIT_FOR_OUTPUT([ovn-appctl -t ovn-controller connection-status], [0], [not connected +]) # Restore the files again and expect the connection to recover cp $PKIDIR/$key $key cp $PKIDIR/$cert $cert -OVS_WAIT_UNTIL([ovn-appctl -t ovn-controller connection-status], [0], [connected]) +OVS_WAIT_FOR_OUTPUT([ovn-appctl -t ovn-controller connection-status], [0], [connected +]) cat hv1/ovn-controller.log @@ -2161,7 +2166,7 @@ AT_CHECK([ovs-ofctl dump-flows br-int | grep 10.1.2.3], [0], [ignore]) sleep 5 # Check after the wait -OVS_WAIT_UNTIL([ovs-ofctl dump-flows br-int | grep 10.1.2.4], [0], [ignore]) +OVS_WAIT_UNTIL([ovs-ofctl dump-flows br-int | grep 10.1.2.4]) lflow_run_2=$(ovn-appctl -t ovn-controller coverage/read-counter lflow_run) # Verify that the flow compute completed during the wait (after the wait it @@ -2172,7 +2177,7 @@ AT_CHECK_UNQUOTED([echo $lflow_run_1], [0], [$lflow_run_2 # Restart OVS this time, and wait until flows are reinstalled OVS_APP_EXIT_AND_WAIT([ovs-vswitchd]) start_daemon ovs-vswitchd --enable-dummy=system -vvconn -vofproto_dpif -vunixctl -OVS_WAIT_UNTIL([ovs-ofctl dump-flows br-int | grep 10.1.2.4], [0], [ignore]) +OVS_WAIT_UNTIL([ovs-ofctl dump-flows br-int | grep 10.1.2.4]) check ovn-nbctl --wait=hv lb-add lb3 2.2.2.2 10.1.2.5 \ -- ls-lb-add ls1 lb3 diff --git a/tests/ovn.at b/tests/ovn.at index aba3e92c6..23c5d29f3 100644 --- a/tests/ovn.at +++ b/tests/ovn.at @@ -21236,7 +21236,7 @@ check_virtual_offlows_not_present hv2 send_garp 1 1 $eth_src $eth_dst $spa $tpa OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding \ -logical_port=sw0-vir) = x$hv1_ch_uuid], [0], []) +logical_port=sw0-vir) = x$hv1_ch_uuid]) AT_CHECK([test x$(ovn-sbctl --bare --columns virtual_parent find port_binding \ logical_port=sw0-vir) = xsw0-p1]) @@ -21304,7 +21304,7 @@ tpa=$(ip_to_hex 10 0 0 10) send_garp 1 2 $eth_src $eth_dst $spa $tpa OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding \ -logical_port=sw0-vir) = x$hv1_ch_uuid], [0], []) +logical_port=sw0-vir) = x$hv1_ch_uuid]) OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns virtual_parent find port_binding \ logical_port=sw0-vir) = xsw0-p3]) @@ -21332,7 +21332,7 @@ tpa=$(ip_to_hex 10 0 0 10) send_garp 2 1 $eth_src $eth_dst $spa $tpa OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding \ -logical_port=sw0-vir) = x$hv2_ch_uuid], [0], []) +logical_port=sw0-vir) = x$hv2_ch_uuid]) AT_CHECK([test x$(ovn-sbctl --bare --columns virtual_parent find port_binding \ logical_port=sw0-vir) = xsw0-p2]) @@ -21359,7 +21359,7 @@ tpa=$(ip_to_hex 10 0 0 4) send_arp_reply 1 1 $eth_src $eth_dst $spa $tpa OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding \ -logical_port=sw0-vir) = x$hv1_ch_uuid], [0], []) +logical_port=sw0-vir) = x$hv1_ch_uuid]) sleep 1 AT_CHECK([test x$(ovn-sbctl --bare --columns virtual_parent find port_binding \ @@ -21382,7 +21382,7 @@ check_virtual_offlows_not_present hv2 as hv1 ovs-vsctl del-port hv1-vif1 OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding \ -logical_port=sw0-vir) = x], [0], []) +logical_port=sw0-vir) = x]) sleep 1 AT_CHECK([test x$(ovn-sbctl --bare --columns virtual_parent find port_binding \ @@ -21412,7 +21412,7 @@ send_arp_reply 2 1 $eth_src $eth_dst $spa $tpa sleep 1 OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding \ -logical_port=sw0-vir) = x$hv2_ch_uuid], [0], []) +logical_port=sw0-vir) = x$hv2_ch_uuid]) sleep 1 AT_CHECK([test x$(ovn-sbctl --bare --columns virtual_parent find port_binding \ logical_port=sw0-vir) = xsw0-p2]) @@ -21434,7 +21434,7 @@ check_virtual_offlows_not_present hv1 ovn-nbctl lsp-del sw0-p2 OVS_WAIT_UNTIL([test x$(ovn-sbctl --bare --columns chassis find port_binding \ -logical_port=sw0-vir) = x], [0], []) +logical_port=sw0-vir) = x]) AT_CHECK([test x$(ovn-sbctl --bare --columns virtual_parent find port_binding \ logical_port=sw0-vir) = x]) @@ -23836,7 +23836,7 @@ send_garp 1 1 $eth_src $eth_dst $spa $tpa wait_row_count MAC_Binding 1 -OVS_WAIT_UNTIL([ovn-sbctl --format=csv --bare --columns logical_port,ip,mac \ +OVS_WAIT_FOR_OUTPUT([ovn-sbctl --format=csv --bare --columns logical_port,ip,mac \ list mac_binding], [0], [lr0-sw0 10.0.0.30 50:54:00:00:00:03 @@ -23883,7 +23883,7 @@ grep table_id=10 | wc -l`]) check_row_count MAC_Binding 1 -OVS_WAIT_UNTIL([ovn-sbctl --format=csv --bare --columns logical_port,ip,mac \ +OVS_WAIT_FOR_OUTPUT([ovn-sbctl --format=csv --bare --columns logical_port,ip,mac \ list mac_binding], [0], [lr0-sw0 10.0.0.30 50:54:00:00:00:13 @@ -23912,7 +23912,7 @@ OVS_WAIT_UNTIL( | wc -l`] ) -OVS_WAIT_UNTIL([ovn-sbctl --format=csv --bare --columns logical_port,ip,mac \ +OVS_WAIT_FOR_OUTPUT([ovn-sbctl --format=csv --bare --columns logical_port,ip,mac \ find mac_binding ip=10.0.0.50], [0], [lr0-sw0 10.0.0.50 50:54:00:00:00:33 @@ -27263,7 +27263,7 @@ ovn_attach n1 br-phys 192.168.0.1 # Chassis hv1 should add flows for the ls1 datapath in table 8 (ls_in_port_sec_l2). dp_key=$(ovn-sbctl --bare --columns tunnel_key list Datapath_Binding ls1) -OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int | grep -E "table=8.*metadata=0x${dp_key}"], [0], [ignore]) +OVS_WAIT_UNTIL([as hv1 ovs-ofctl dump-flows br-int | grep -E "table=8.*metadata=0x${dp_key}"]) OVN_CLEANUP([hv1]) AT_CLEANUP @@ -27289,7 +27289,7 @@ ovs-vsctl add-br br-phys ovn_attach n1 br-phys 192.168.0.1 # Port_Binding should be released. -OVS_WAIT_UNTIL([test 0 = $(ovn-sbctl show | grep Port_Binding -c)], [0]) +OVS_WAIT_UNTIL([test 0 = $(ovn-sbctl show | grep Port_Binding -c)]) OVN_CLEANUP([hv1]) AT_CLEANUP From patchwork Thu Apr 20 16:14:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xavier Simonart X-Patchwork-Id: 1771525 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=2605:bc80:3010::136; helo=smtp3.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=TD7OkhNw; dkim-atps=neutral Received: from smtp3.osuosl.org (smtp3.osuosl.org [IPv6:2605:bc80:3010::136]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Q2N6K0jFpz1ybF for ; Fri, 21 Apr 2023 02:15:05 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 3F3626FE85; Thu, 20 Apr 2023 16:15:03 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 3F3626FE85 Authentication-Results: smtp3.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=TD7OkhNw X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id xDiAzy_R9Z1b; Thu, 20 Apr 2023 16:15:01 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp3.osuosl.org (Postfix) with ESMTPS id E722560FDB; Thu, 20 Apr 2023 16:15:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org E722560FDB Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id BAD15C0037; Thu, 20 Apr 2023 16:15:00 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id 36EFDC002A for ; Thu, 20 Apr 2023 16:15:00 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 051CC405CD for ; Thu, 20 Apr 2023 16:15:00 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 051CC405CD Authentication-Results: smtp2.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=TD7OkhNw X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id GUaAw1542rkv for ; Thu, 20 Apr 2023 16:14:59 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 5000B40158 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by smtp2.osuosl.org (Postfix) with ESMTPS id 5000B40158 for ; Thu, 20 Apr 2023 16:14:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1682007297; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4cCoXqKH3AH5rQIvw8HfMfkwx2/yZjPfNCsdHnxHYpU=; b=TD7OkhNw3fUGQjONdonbGu1LnDdXlosmhajs3y656Wcv3eU3OGFjzPtHa7Qqmjuzb27vrE Zg00pQ1YWWgVynjybohCHaJJxIoxVI9/4Nn3GItEPH/qMBBjkZjaA/jW/yxCNiWNLOa14H D4uEPOYbq7gEWwdwo0uAISPAosrNSNw= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-554-8zLdd74qPDWBVdOLVisz5g-1; Thu, 20 Apr 2023 12:14:56 -0400 X-MC-Unique: 8zLdd74qPDWBVdOLVisz5g-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4770687B2A2 for ; Thu, 20 Apr 2023 16:14:56 +0000 (UTC) Received: from wsfd-netdev90.ntdv.lab.eng.bos.redhat.com (wsfd-netdev90.ntdv.lab.eng.bos.redhat.com [10.19.188.196]) by smtp.corp.redhat.com (Postfix) with ESMTP id 304942026DFD; Thu, 20 Apr 2023 16:14:56 +0000 (UTC) From: Xavier Simonart To: xsimonar@redhat.com, dev@openvswitch.org Date: Thu, 20 Apr 2023 18:14:55 +0200 Message-Id: <20230420161455.134493-3-xsimonar@redhat.com> In-Reply-To: <20230420161455.134493-1-xsimonar@redhat.com> References: <20230420161455.134493-1-xsimonar@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [ovs-dev] [PATCH ovn 3/3] tests: check arguments count of OVS_WAIT_UNTIL X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" The macro has been used erroneously with the expectation to take the third parameter as the expected output. Fail if more than 2 arguments are used. Also fail if the second argument is an integer (second arg expected to be a command to execute in case of failure). Same checks are used in ovs. Signed-off-by: Xavier Simonart Acked-by: Ales Musil --- tests/ovs-macros.at | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/ovs-macros.at b/tests/ovs-macros.at index 36b58b5ae..cc5f6e3b1 100644 --- a/tests/ovs-macros.at +++ b/tests/ovs-macros.at @@ -256,6 +256,13 @@ ovs_wait () { ovs_wait_failed AT_FAIL_IF([:]) } + +check_ovs_wait_until_args() { + AT_FAIL_IF([test $1 -ge 3]) + dnl The second argument should not be a number (confused with AT_CHECK ?). + AT_FAIL_IF([test $1 -eq 2 && test "$2" -eq "$2" 2>/dev/null]) +} + OVS_END_SHELL_HELPERS m4_define([OVS_WAIT], [dnl ovs_wait_cond () { @@ -276,7 +283,8 @@ dnl zero code within reasonable time limit, then dnl the test fails. In that case, runs IF-FAILED dnl before aborting. m4_define([OVS_WAIT_UNTIL], - [OVS_WAIT([$1], [$2], [AT_LINE], [until $1])]) + [check_ovs_wait_until_args "$#" "$2" + OVS_WAIT([$1], [$2], [AT_LINE], [until $1])]) dnl OVS_WAIT_FOR_OUTPUT(COMMAND, EXIT-STATUS, STDOUT, STDERR) dnl OVS_WAIT_FOR_OUTPUT_UNQUOTED(COMMAND, EXIT-STATUS, STDOUT, STDERR)