From patchwork Thu Jul 26 05:32:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jinhui Huang X-Patchwork-Id: 949486 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=cn.fujitsu.com 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 41bgjm4B4kz9s21 for ; Thu, 26 Jul 2018 15:33:16 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 20C5C3E6120 for ; Thu, 26 Jul 2018 07:33:07 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) by picard.linux.it (Postfix) with ESMTP id 105233E60E2 for ; Thu, 26 Jul 2018 07:33:03 +0200 (CEST) Received: from heian.cn.fujitsu.com (mail.cn.fujitsu.com [183.91.158.132]) by in-7.smtp.seeweb.it (Postfix) with ESMTP id EEB0A200E0E for ; Thu, 26 Jul 2018 07:32:59 +0200 (CEST) X-IronPort-AV: E=Sophos;i="5.43,368,1503331200"; d="scan'208";a="42674165" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 26 Jul 2018 13:32:57 +0800 Received: from G08CNEXCHPEKD02.g08.fujitsu.local (unknown [10.167.33.83]) by cn.fujitsu.com (Postfix) with ESMTP id 5D5CE4B66C2B; Thu, 26 Jul 2018 13:32:59 +0800 (CST) Received: from localhost.localdomain.localdomain (10.167.220.196) by G08CNEXCHPEKD02.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.399.0; Thu, 26 Jul 2018 13:32:57 +0800 From: Jinhui huang To: Date: Thu, 26 Jul 2018 13:32:46 +0800 Message-ID: <1532583167-8455-1-git-send-email-huangjh.jy@cn.fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <20180725134828.GB23890@rei> References: <20180725134828.GB23890@rei> MIME-Version: 1.0 X-Originating-IP: [10.167.220.196] X-yoursite-MailScanner-ID: 5D5CE4B66C2B.A24BB X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: huangjh.jy@cn.fujitsu.com X-Spam-Status: No, score=0.0 required=7.0 tests=none autolearn=disabled version=3.4.0 X-Virus-Scanned: clamav-milter 0.99.2 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-7.smtp.seeweb.it Cc: ltp@lists.linux.it Subject: [LTP] [PATCH v2 1/2] syscalls/alarm02: Rewrite to 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: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Jinhui huang --- testcases/kernel/syscalls/alarm/alarm02.c | 216 ++++++++---------------------- 1 file changed, 58 insertions(+), 158 deletions(-) diff --git a/testcases/kernel/syscalls/alarm/alarm02.c b/testcases/kernel/syscalls/alarm/alarm02.c index d745e98..d1b15a9 100644 --- a/testcases/kernel/syscalls/alarm/alarm02.c +++ b/testcases/kernel/syscalls/alarm/alarm02.c @@ -1,180 +1,80 @@ -/* - * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Further, this software is distributed without any warranty that it is - * free of the rightful claim of any third person regarding infringement - * or the like. Any license provided herein, whether implied or - * otherwise, applies only to this software file. Patent licenses, if - * any, provided herein do not apply to combinations of this program with - * other software, or any other product whatsoever. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, - * Mountain View, CA 94043, or: - * - * http://www.sgi.com - * - * For further information regarding this notice, see: - * - * http://oss.sgi.com/projects/GenInfo/NoticeExplan/ - */ -/* $Id: alarm02.c,v 1.4 2009/08/28 10:57:29 vapier Exp $ */ -/********************************************************** - * - * OS Test - Silicon Graphics, Inc. - * - * TEST IDENTIFIER : alarm02 - * - * TEST TITLE : Boundary Value Test for alarm(2) - * - * PARENT DOCUMENT : almtds02 - * - * TEST CASE TOTAL : 3 - * - * WALL CLOCK TIME : 1 - * - * CPU TYPES : ALL - * - * AUTHOR : Billy Jean Horne - * - * CO-PILOT : Kathy Olmsted - * - * DATE STARTED : 06/01/92 - * - * INITIAL RELEASE : UNICOS 7.0 - * - * TEST CASES - * Test Case One - A call to alarm() shall not return an error if - * seconds is a -1. - * Test FAILS if a non-zero value is returned. - * Test Case Two - A call to alarm() shall not return an error if - * seconds is the maximum unsigned integer (2**63). - * Test FAILS if a non-zero value is returned. - * Test Case Three - A call to alarm() shall not return an error if - * seconds is the maximum unsigned integer plus 1 ((2**63)+1). - * Test FAILS if a non-zero value is returned. - * - * ENVIRONMENTAL NEEDS - * The libcuts.a and libsys.a libraries must be included in - * the compilation of this test. - * - * DETAILED DESCRIPTION - * - * Setup: - * Define a cleanup function. - * - * Test: - * Loop for each test case. - * Execute alarm (0) system call to clear previous alarm. - * Check return code, if system call failed (return=-1) - * Issue a FAIL message and exit the test. - * Call alarm() with boundary values for seconds. - * Verify that returned value is as expected. - * Report results. - * - * Cleanup: - * +// SPDX-License-Identifier: GPL-2.0-or-later +/* Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. + * Author: Billy Jean Horne + * + * Test Description: + * 1) alarm() return UINT_MAX if seconds is -1. + * 2) alarm() return UINT_MAX if seconds is UINT_MAX. + * 3) alarm() return 0 if seconds is UINT_MAX + 1. */ + #include +#include #include #include #include -#include "test.h" -void setup(void); -void cleanup(void); -void alarm_received(int sig); +#include "tst_test.h" +#include "tst_safe_macros.h" -char *TCID = "alarm02"; -int TST_TOTAL = 3; +static volatile int alarms_received; -int received_alarm = 0; /* Indicates a SIGALRM was received */ +static struct tcase { + char *buf; + unsigned int sec; +} tcases[] = { + {"-1", -1}, + {"UINT_MAX", UINT_MAX}, + {"UINT_MAX + 1", UINT_MAX + 1}, +}; -int main(int ac, char **av) +static void verify_alarm(unsigned int n) { + alarms_received = 0; + struct tcase *tc = &tcases[n]; + unsigned int ret; + + ret = alarm(tc->sec); + if (ret != 0) { + tst_res(TFAIL, + "alarm(%u) returned %ld, when 0 was ", + tc->sec, TEST_RETURN); + } - /* Parameters for usc code */ - int lc; - - /* Parameters for alarm test */ - char *buf[] = { "-1", "ULONG_MAX", "ULONG_MAX+1" }; - unsigned long int sec[] = { -1, ULONG_MAX, ULONG_MAX + 1 }; - int exp[] = { 0, 0, 0 }; - int i; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - - tst_count = 0; - - for (i = 0; i < TST_TOTAL; i++) { - - received_alarm = 0; - signal(SIGALRM, alarm_received); - - TEST(alarm(sec[i])); - alarm(0); - if (TEST_RETURN != 0) { - tst_resm(TFAIL, - "alarm(%lu) returned %ld, when %u was " - "expected for value %s", - sec[i], TEST_RETURN, exp[i], buf[i]); - } else { - if (received_alarm == 1) { - tst_resm(TFAIL, - "alarm(%lu) returned %ldu but an " - "alarm signal was received for " - "value %s", - sec[i], TEST_RETURN, buf[i]); - } else { - tst_resm(TPASS, - "alarm(%lu) returned %ld as " - "expected for value %s", - sec[i], TEST_RETURN, buf[i]); - } - - } - } - /* - * Reset alarm before cleanup. - */ - - alarm(0); + TEST(alarm(0)); + if (alarms_received == 1) { + tst_res(TFAIL, + "alarm(%u) signal was received for value %s", + tc->sec, tc->buf); + return; + } + if (TEST_RETURN != tc->sec) { + tst_res(TFAIL, + "alarm(%u) returned %ld as unexpected", + tc->sec, TEST_RETURN); + return; } - cleanup(); - tst_exit(); + tst_res(TPASS, + "alarm(%u) returned %ld as expected " + "for value %s", + tc->sec, TEST_RETURN, tc->buf); } -void setup(void) +static void sighandler(int sig) { - - tst_sig(NOFORK, DEF_HANDLER, cleanup); - - TEST_PAUSE; - + if (sig == SIGALRM) + alarms_received++; } -void cleanup(void) +static void setup(void) { + SAFE_SIGNAL(SIGALRM, sighandler); } -void alarm_received(int sig) -{ - received_alarm = 1; -} +static struct tst_test test = { + .tcnt = ARRAY_SIZE(tcases), + .test = verify_alarm, + .setup = setup, +};