From patchwork Thu Apr 5 14:50:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cyril Hrubis X-Patchwork-Id: 895421 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=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.cz Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40H5QS1CDnz9s0y for ; Fri, 6 Apr 2018 00:52:15 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id ADA153E7844 for ; Thu, 5 Apr 2018 16:52:12 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-2.smtp.seeweb.it (in-2.smtp.seeweb.it [217.194.8.2]) by picard.linux.it (Postfix) with ESMTP id 24DAC3E76AE for ; Thu, 5 Apr 2018 16:51:53 +0200 (CEST) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-2.smtp.seeweb.it (Postfix) with ESMTPS id BDFB26021B2 for ; Thu, 5 Apr 2018 16:51:52 +0200 (CEST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 6D4CBAF63 for ; Thu, 5 Apr 2018 14:51:52 +0000 (UTC) From: Cyril Hrubis To: ltp@lists.linux.it Date: Thu, 5 Apr 2018 16:50:15 +0200 Message-Id: <20180405145015.7633-7-chrubis@suse.cz> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180405145015.7633-1-chrubis@suse.cz> References: <20180405145015.7633-1-chrubis@suse.cz> X-Virus-Scanned: clamav-milter 0.99.2 at in-2.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.2 required=7.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, SPF_PASS,T_RP_MATCHES_RCVD autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-2.smtp.seeweb.it Subject: [LTP] [RFC PATCH 6/6] syscalls/wait401: Rewrite to the new library X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" + Get rid of the sleep(1) in the process Signed-off-by: Cyril Hrubis --- testcases/kernel/syscalls/wait4/wait401.c | 122 +++++++++++------------------- 1 file changed, 45 insertions(+), 77 deletions(-) diff --git a/testcases/kernel/syscalls/wait4/wait401.c b/testcases/kernel/syscalls/wait4/wait401.c index 26a5c7002..eb5f41f42 100644 --- a/testcases/kernel/syscalls/wait4/wait401.c +++ b/testcases/kernel/syscalls/wait4/wait401.c @@ -1,106 +1,74 @@ /* + * Copyright (c) International Business Machines Corp., 2001 + * Copyright (c) 2012-2018 Cyril Hrubis * - * Copyright (c) International Business Machines Corp., 2001 - * Copyright (c) 2012 Cyril Hrubis + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* - * wait401 - check that a call to wait4() correctly waits for a child - * process to exit + * wait401 - check that a call to wait4() correctly waits for a child + * process to exit */ -#include "test.h" - +#include #include #define _USE_BSD #include #include #include +#include "tst_test.h" -char *TCID = "wait401"; -int TST_TOTAL = 1; - -static void cleanup(void); -static void setup(void); - -int main(int ac, char **av) +static void run(void) { - int lc; pid_t pid; int status = 1; struct rusage rusage; - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - tst_count = 0; - - pid = FORK_OR_VFORK(); - - switch (pid) { - case -1: - tst_brkm(TBROK, cleanup, "fork() failed"); - break; - case 0: - sleep(1); - exit(0); - break; - default: - TEST(wait4(pid, &status, 0, &rusage)); - break; - } + pid = SAFE_FORK(); + if (!pid) + exit(0); - if (TEST_RETURN == -1) { - tst_brkm(TFAIL, cleanup, "%s call failed - errno = %d " - ": %s", TCID, TEST_ERRNO, - strerror(TEST_ERRNO)); - } - - if (WIFEXITED(status) == 0) { - tst_brkm(TFAIL, cleanup, - "%s call succeeded but " - "WIFEXITED() did not return expected value " - "- %d", TCID, WIFEXITED(status)); - } else if (TEST_RETURN != pid) { - tst_resm(TFAIL, "%s did not return the " - "expected value (%d), actual: %ld", - TCID, pid, TEST_RETURN); - } else { + TEST(wait4(pid, &status, 0, &rusage)); + if (TEST_RETURN == -1) { + tst_res(TFAIL | TERRNO, "wait4() failed"); + return; + } - tst_resm(TPASS, - "Received child pid as expected."); - } + if (TEST_RETURN != pid) { + tst_res(TFAIL, "waitpid() returned wrong pid %li, expected %i", + TEST_RETURN, pid); + } else { + tst_res(TPASS, "waitpid() returned correct pid %i", pid); + } - tst_resm(TPASS, "%s call succeeded", TCID); + if (!WIFEXITED(status)) { + tst_res(TFAIL, "WIFEXITED() not set in status (%s)", + tst_strstatus(status)); + return; } - cleanup(); - tst_exit(); -} + tst_res(TPASS, "WIFEXITED() is set in status"); -static void setup(void) -{ - tst_sig(FORK, DEF_HANDLER, cleanup); + if (WEXITSTATUS(status)) + tst_res(TFAIL, "WEXITSTATUS() != 0 but %i", WEXITSTATUS(status)); + else + tst_res(TPASS, "WEXITSTATUS() == 0"); - TEST_PAUSE; } -static void cleanup(void) -{ -} +static struct tst_test test = { + .forks_child = 1, + .test_all = run, +};