From patchwork Thu Jul 11 15:46:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasu Dasari X-Patchwork-Id: 1130854 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="h7q4/D3e"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45l0v864cdz9sNF for ; Fri, 12 Jul 2019 01:52:51 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 493015213; Thu, 11 Jul 2019 15:52:48 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id A3525520A for ; Thu, 11 Jul 2019 15:46:17 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-vs1-f67.google.com (mail-vs1-f67.google.com [209.85.217.67]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 2E7CF886 for ; Thu, 11 Jul 2019 15:46:17 +0000 (UTC) Received: by mail-vs1-f67.google.com with SMTP id v6so4555081vsq.4 for ; Thu, 11 Jul 2019 08:46:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=hfCGRo7RoXt+VfvGJRQDRB8qPUVF6mrUogIj2ARceoE=; b=h7q4/D3eXvIF4hHXEUjfTuaPHHrYUAnWq7mvgdmvpZ5dUzJMnyzRCADFYQzNuASha0 0vP61JGYbi4UBMEw2Dl6PgCK7Ab5xhgMnAqUZVtjTLBe9bs8CahjQ97/YcWsHTwMNTjj fH3iXXR64o1taXFtewf0Cj4hLdX7dn8pb+OUJn562D/RPkz5j5m9VDIfTzX8KPCh/cI2 cpfHOUdk0aNXetUokzOUwpVB2loRVr/JlgkypyM7QBN6aokUlrqsJt36XGNu7v0/dyG4 UI8foGVzjPxvknJlFZ3SWKAyK3xC8mZv6mRgWH3UgSEEpBNYQ/NYB6X8z3YQehRaj0EB sBDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=hfCGRo7RoXt+VfvGJRQDRB8qPUVF6mrUogIj2ARceoE=; b=V6RgI+wuxjiE2HQmJWGv8f13T/Z9zoUwlfult/tlpej1Ee7bIPh/WNDf7E2Ksp1jnF kkMm/mcApwQS1yg5mddP7z6cGySF2WY2Y/RK266KX3cs0aDUb+ORkoME3uiR1tt2FdHf 4mmohWbXIByPUuSDbwkPe1AHBSRbQGi1TTVBc7lOxg3qTGYmbKzUitckWbxnHcvMxIrB J+sTKlZf2DT6OlBvmGGzVMoEushk3La6yZ+QMWnOGiURxxSp+lYLps7dqvyeg4k/iF86 7+HrVpoP+smfBEb6mafPsISxIHQQNn2FDKk+0VZj7Db9LKO6p88258qvJACjhrKbm/Xt dddg== X-Gm-Message-State: APjAAAUcUPuORktSzSEKL5rNLfM3+bzJHr4TxMYlckaP14FeeZ2pht5v aoRRlimkknOVkBeSj2gnYpFehlcgNlo= X-Google-Smtp-Source: APXvYqxargi8JhjRWlJFo2prDRJmtMnRvuu3YDbp9Z7beirfgE/Wr4qPW/53+7VsGpFq1fHgWnvcDA== X-Received: by 2002:a67:f657:: with SMTP id u23mr5174063vso.154.1562859975746; Thu, 11 Jul 2019 08:46:15 -0700 (PDT) Received: from vdasari-mac.plexxi.com (50-207-21-254-static.hfc.comcastbusiness.net. [50.207.21.254]) by smtp.gmail.com with ESMTPSA id b30sm1506613vkk.22.2019.07.11.08.46.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 11 Jul 2019 08:46:14 -0700 (PDT) From: Vasu Dasari To: dev@openvswitch.org Date: Thu, 11 Jul 2019 11:46:04 -0400 Message-Id: <20190711154604.3781-1-vdasari@gmail.com> X-Mailer: git-send-email 2.17.2 (Apple Git-113) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH] ovs-macros: An option to suspend test execution on error X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org Origins for this patch are captured at https://mail.openvswitch.org/pipermail/ovs-discuss/2019-June/048923.html. Summarizing here, when a test fails, it would be good to pause test execution and let the developer poke around the system to see current status of system. As part of this patch, made a small tweaks to ovs-macros.at, so that when test suite fails, ovs_on_exit() function will be called. And in this function, a check is made to see if an environment variable to OVS_PAUSE_TEST is set. If it is set, then test suite is paused and will continue to wait for user input Ctrl-D. Meanwhile user can poke around the system to see why test case has failed. Once done with investigation, user can press ctrl-d to cleanup the test suite. For example, to re-run test case 139: export OVS_PAUSE_TEST=1 cd tests/system-userspace-testsuite.dir/139 sudo -E ./run When error occurs, above command would display something like this: ===================================================== Set environment variable to use various ovs utilities export OVS_RUNDIR=/opt/vdasari/Developer/ovs/_build-gcc/tests/system-userspace-testsuite.dir/139 Press ctrl-d to continue: ===================================================== And from another window, one can execute ovs-xxx commands like: export OVS_RUNDIR=/opt/vdasari/Developer/ovs/_build-gcc/tests/system-userspace-testsuite.dir/139 $ ovs-ofctl dump-ports br0 . . Signed-off-by: Vasu Dasari --- tests/ovs-macros.at | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/tests/ovs-macros.at b/tests/ovs-macros.at index 10593429d..57617a410 100644 --- a/tests/ovs-macros.at +++ b/tests/ovs-macros.at @@ -35,11 +35,36 @@ m4_divert_push([PREPARE_TESTS]) # directory. ovs_init() { ovs_base=`pwd` - trap '. "$ovs_base/cleanup"' 0 + trap ovs_on_exit 0 : > cleanup ovs_setenv } +# Catch testsuite error condition and cleanup test environment by tearing down +# all interfaces and processes spawned. +# User has an option to leave the test environment in error state so that system +# can be poked around to get more information. User can enable this option by setting +# environment variable OVS_PAUSE_TEST=1. User needs to press CTRL-D to resume the +# cleanup operation. +ovs_pause() { + echo "=====================================================" + echo "Set environment variable to use various ovs utilities" + echo "export OVS_RUNDIR=$ovs_base" + echo "Press ctrl-d to continue:" + while read -s -n 1 key; do + printf -v keycode "%d" "'$key" + [ $keycode -ne 4 ] || break + done +} + +ovs_on_exit () { + if [ ! -z "${OVS_PAUSE_TEST}" ]; then + trap '' INT + ovs_pause + fi + . "$ovs_base/cleanup" +} + # With no parameter or an empty parameter, sets the OVS_*DIR # environment variables to point to $ovs_base, the base directory in # which the test is running.