From patchwork Wed Jan 23 13:16:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Lyon X-Patchwork-Id: 156379 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp709821jaa; Wed, 23 Jan 2019 05:16:55 -0800 (PST) X-Google-Smtp-Source: ALg8bN4gDNKDj835WzMbNKa3V36Z4p+s2heGHJGQ2veftOn2aJSe8TUogsYKwx9lyqhz0WRMDIHE X-Received: by 2002:a17:902:f091:: with SMTP id go17mr2213123plb.235.1548249415747; Wed, 23 Jan 2019 05:16:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548249415; cv=none; d=google.com; s=arc-20160816; b=MmPDl2vdJEM9ECzWdV8dOlP8vWWMMkavEA5Eu4/ijDgjCTK31fwmLq4ZZOSqVqevTN xF9LspI/FOlJ4pkz7YbtQ2Cgaka0hg+09Qz/t0bTiY6Ey9Qrka+QJlkCuehYyvyVEWy8 dncLgsmHI+QlDwE9+q4lRw3pkVdOYo52wq6hzMUi0vhGeRaG3qnha2uY5vyWzFKdQnKX 8BivH0zO3zzpuiMd655Lgk06WhV3CveFJWCif0jNDVSWuirDOzdul0lX0qy2O16oiuQE TsMcf5ghFrKuwNh30cci4UOdrr8AFCjdqHCIXCjTcrMBllIcKgOUAv/eeVblm887gm/6 M3SA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=to:subject:message-id:date:from:mime-version:dkim-signature :delivered-to:sender:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature; bh=Ho7WLDcONTitaeCYe1v/F+RZobNiRPveL3qLGr8qyII=; b=emy9fWpLl6/xlniS2i0KmLqNp5Ko0T3dCzQHDOMLGzs5sFOQWF3jQtZPGu6++dV33W UYGGTNH6C9JH+OU1wcjhSQ1yMlubibzYow5M8cvwHANH++IxohWTlQ6R4qUG/ihOaG3F 31CXJZuQ/GleGOqqXh2JpJXwboKo9H7xGV2KllMLCmPqyymdaf158iVBUF8jLAmWvB5W mzEnZRxDJf4rteGB8xFJ6BC66dLa4XLdFrkLblvzVcVwN7f7tjFuzOcilB60eNlv+sAC OrZiWT46CzA9JFE8cwTF+IubYg1lf+SlhiHXvnBckRCScYEX3UfKlCHUn18FTzaDsv3/ oYuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=W17+5uv2; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="iu9Ets/z"; spf=pass (google.com: domain of gcc-patches-return-494594-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="gcc-patches-return-494594-patch=linaro.org@gcc.gnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id 65si20294148pgf.521.2019.01.23.05.16.55 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 23 Jan 2019 05:16:55 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-494594-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=W17+5uv2; dkim=neutral (body hash did not verify) header.i=@linaro.org header.s=google header.b="iu9Ets/z"; spf=pass (google.com: domain of gcc-patches-return-494594-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="gcc-patches-return-494594-patch=linaro.org@gcc.gnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; q= dns; s=default; b=lG5FvftOM7Hatv1nYhhnwqR++jRxNddi612itEYvzQYlLn n5igVS6snythi4jtbRYQvpFRfsIJEBFJ9uwFrwhhvXMscxGlgsk9KMj8kXfFujiQ 1AjJTWJeqPiCeXZZWxkKjl6whMs7u1KLMFcAqHVoCQBynFXRioh9QND/38qto= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :mime-version:from:date:message-id:subject:to:content-type; s= default; bh=0H7PrkfPU9FLOvo7RqiiSAEP+DA=; b=W17+5uv23gpI/sOA3kMx G0nnA1c9gqLe24YFsgmV0pnivF6czJeU7ZcHkUBOnU1ZNw4nZPIsbxDyl/P80voA qXAMxGPJNDBYRwHq7pAVJnOEPgWJsFefakmd9WV6nszaH/1eTBlvd1aUZhTKYqtM hTew1PbbCbcmOZqvuC/e1LQ= Received: (qmail 120619 invoked by alias); 23 Jan 2019 13:16:43 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 113383 invoked by uid 89); 23 Jan 2019 13:16:41 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=Prepare, adoption, delay X-HELO: mail-ua1-f42.google.com Received: from mail-ua1-f42.google.com (HELO mail-ua1-f42.google.com) (209.85.222.42) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 23 Jan 2019 13:16:37 +0000 Received: by mail-ua1-f42.google.com with SMTP id d2so695586ual.2 for ; Wed, 23 Jan 2019 05:16:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:from:date:message-id:subject:to; bh=aAbhAY7GYrV6+VCNV2+a1umdexfklRcGBY6wmweMRFo=; b=iu9Ets/zE73KiF2QsnnM6iZIScqFomhAxYuNHiTztaD4v68bog3JEQ9C1Tzt9QpCnM FUSElUAM/Ss5lyTnXoAVa6ePOR4BOrdxMnZhC9+npXjtT/dUj9XKAxccxvOpHWvWSIvm GJA5SJWJZKawfs3FgIlcjJc6IQP7zK2OWnlSg= MIME-Version: 1.0 From: Christophe Lyon Date: Wed, 23 Jan 2019 14:16:24 +0100 Message-ID: Subject: [PATCH] Handle timeout warnings in dg-extract-results To: gcc Patches X-IsSubscribed: yes Hi, dg-extract-results currently moves lines like WARNING: program timed out at the end of each .exp section when it generates .sum files. This is because it sorts its output based on the 2nd field, which is normally the testname as in: FAIL: gcc.c-torture/execute/20020129-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test As you can notice 'program' comes after gcc.c-torture/execute/20020129-1.c alphabetically, and generally after most (all?) GCC testnames. This is a bit of a pain when trying to handle transient test failures because you can no longer match such a WARNING line to its FAIL counterpart. The attached patch changes this behavior by replacing the line WARNING: program timed out with WARNING: gcc.c-torture/execute/20020129-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test program timed out The effect is that this line will now appear immediately above the FAIL: gcc.c-torture/execute/20020129-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test so that it's easier to match them. I'm not sure how much people depend on the .sum format, I also considered emitting WARNING: program timed out gcc.c-torture/execute/20020129-1.c -O2 -flto -fno-use-linker-plugin -flto-partition=none execution test I also restricted the patch to handling only 'program timed out' cases, to avoid breaking other things. I considered fixing this in Dejagnu, but it seemed more complicated, and would delay adoption in GCC anyway. What do people think about this? Thanks, Christophe 2019-01-23 Christophe Lyon contrib/ * dg-extract-results.py: Keep timeout warnings next to their matching test. * dg-extract-results.sh: Likewise. diff --git a/contrib/dg-extract-results.py b/contrib/dg-extract-results.py index 4b02a5b..ed62f73 100644 --- a/contrib/dg-extract-results.py +++ b/contrib/dg-extract-results.py @@ -239,6 +239,7 @@ class Prog: harness = None segment = None final_using = 0 + has_warning = 0 # If this is the first run for this variation, add any text before # the first harness to the header. @@ -292,8 +293,20 @@ class Prog: # Ugly hack to get the right order for gfortran. if name.startswith ('gfortran.dg/g77/'): name = 'h' + name - key = (name, len (harness.results)) - harness.results.append ((key, line)) + # If we have a time out warning, make sure it appears + # before the following testcase diagnostic: we insert + # the testname before 'program' so that sort faces a + # list of testhanes. + if line.startswith ('WARNING: program timed out'): + has_warning = 1 + else: + if has_warning == 1: + key = (name, len (harness.results)) + myline = 'WARNING: %s program timed out.\n' % name + harness.results.append ((key, myline)) + has_warning = 0 + key = (name, len (harness.results)) + harness.results.append ((key, line)) if not first_key and sort_logs: first_key = key if line.startswith ('ERROR: (DejaGnu)'): diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh index 6ee3d26..e9833c1 100755 --- a/contrib/dg-extract-results.sh +++ b/contrib/dg-extract-results.sh @@ -298,6 +298,8 @@ BEGIN { cnt=0 print_using=0 need_close=0 + has_timeout=0 + timeout_cnt=0 } /^EXPFILE: / { expfiles[expfileno] = \$2 @@ -329,16 +331,36 @@ BEGIN { # Ugly hack for gfortran.dg/dg.exp if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//) testname="h"testname + if (\$1 == "WARNING:" && \$2 == "program" && \$3 == "timed" && (\$4 == "out" || \$4 == "out.")) { + has_timeout=1 + timeout_cnt=cnt + } else { + # Prepare timeout replacement message in case it's needed + timeout_msg=\$0 + sub(\$1, "WARNING:", timeout_msg) + } } /^$/ { if ("$MODE" == "sum") next } { if (variant == curvar && curfile) { if ("$MODE" == "sum") { - printf "%s %08d|", testname, cnt >> curfile - cnt = cnt + 1 + # Do not print anything if the current line is a timeout + if (has_timeout == 0) { + # If the previous line was a timeout, + # insert the full current message without keyword + if (timeout_cnt != 0) { + printf "%s %08d|%s program timed out.\n", testname, timeout_cnt, timeout_msg >> curfile + timeout_cnt = 0 + } + printf "%s %08d|", testname, cnt >> curfile + cnt = cnt + 1 + filewritten[curfile]=1 + need_close=1 + if (timeout_cnt == 0) + print >> curfile + } + + has_timeout=0 } - filewritten[curfile]=1 - need_close=1 - print >> curfile } else next }