From patchwork Thu Apr 5 14:01:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cyril Hrubis X-Patchwork-Id: 895399 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=213.254.12.146; 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 [213.254.12.146]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40H4Lf5k70z9ryk for ; Fri, 6 Apr 2018 00:03:54 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 2CDFF3E76FE for ; Thu, 5 Apr 2018 16:03:52 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-6.smtp.seeweb.it (in-6.smtp.seeweb.it [217.194.8.6]) by picard.linux.it (Postfix) with ESMTP id EEA1B3E730A for ; Thu, 5 Apr 2018 16:03:34 +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-6.smtp.seeweb.it (Postfix) with ESMTPS id 8E60F1401B95 for ; Thu, 5 Apr 2018 16:03:34 +0200 (CEST) Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 3D843AD45 for ; Thu, 5 Apr 2018 14:03:34 +0000 (UTC) From: Cyril Hrubis To: ltp@lists.linux.it Date: Thu, 5 Apr 2018 16:01:52 +0200 Message-Id: <20180405140154.6218-7-chrubis@suse.cz> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180405140154.6218-1-chrubis@suse.cz> References: <20180405140154.6218-1-chrubis@suse.cz> X-Virus-Scanned: clamav-milter 0.99.2 at in-6.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-6.smtp.seeweb.it Subject: [LTP] [RFC PATCH 6/8] syscalls/link08: 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" + Make use of .needs_rofs Signed-off-by: Cyril Hrubis --- testcases/kernel/syscalls/link/link08.c | 115 +++++++------------------------- 1 file changed, 25 insertions(+), 90 deletions(-) diff --git a/testcases/kernel/syscalls/link/link08.c b/testcases/kernel/syscalls/link/link08.c index 8cb72d1df..986d5552e 100644 --- a/testcases/kernel/syscalls/link/link08.c +++ b/testcases/kernel/syscalls/link/link08.c @@ -15,7 +15,6 @@ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * */ /* * Test Description: @@ -32,134 +31,70 @@ * 4. link() fails with -1 return value and sets errno to ELOOP * if too many symbolic links were encountered in resolving path. */ - -#include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include - -#include "test.h" -#include "safe_macros.h" +#include "tst_test.h" #define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \ S_IXGRP|S_IROTH|S_IXOTH) #define MNT_POINT "mntpoint" #define TEST_FILE "testfile" #define TEST_FILE1 "testfile1" -#define TEST_FILE2 "mntpoint/testfile3" +#define TEST_FILE2 "mntpoint/file" #define TEST_FILE3 "mntpoint/testfile4" static char test_file4[PATH_MAX] = "."; static void setup(void); -static void cleanup(void); - -static const char *device; -static int mount_flag; -static struct test_case_t { +static struct tcase { char *oldpath; char *newpath; int exp_errno; -} test_cases[] = { +} tcases[] = { {TEST_FILE1, TEST_FILE, EPERM}, {TEST_FILE2, TEST_FILE, EXDEV}, {TEST_FILE2, TEST_FILE3, EROFS}, {test_file4, TEST_FILE, ELOOP}, }; -static void link_verify(const struct test_case_t *); - -char *TCID = "link08"; -int TST_TOTAL = ARRAY_SIZE(test_cases); - -int main(int ac, char **av) +static void link_verify(unsigned int i) { - int i, lc; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); + struct tcase *tc = &tcases[i]; - for (lc = 0; TEST_LOOPING(lc); lc++) { - tst_count = 0; - for (i = 0; i < TST_TOTAL; i++) - link_verify(&test_cases[i]); - } - - cleanup(); - tst_exit(); - -} - -static void link_verify(const struct test_case_t *tc) -{ TEST(link(tc->oldpath, tc->newpath)); if (TEST_RETURN != -1) { - tst_resm(TFAIL, "link succeeded unexpectedly"); + tst_res(TFAIL, "link() succeeded unexpectedly (%li)", + TEST_RETURN); return; } if (TEST_ERRNO == tc->exp_errno) { - tst_resm(TPASS | TTERRNO, "link failed as expected"); - } else { - tst_resm(TFAIL | TTERRNO, - "link failed unexpectedly; expected: %d - %s", - tc->exp_errno, strerror(tc->exp_errno)); + tst_res(TPASS | TTERRNO, "link() failed as expected"); + return; } -} + tst_res(TFAIL | TTERRNO, + "link() failed unexpectedly; expected: %d - %s", + tc->exp_errno, tst_strerrno(tc->exp_errno)); +} static void setup(void) { int i; - const char *fs_type; - - tst_require_root(); - - tst_sig(NOFORK, DEF_HANDLER, cleanup); - - TEST_PAUSE; - - tst_tmpdir(); - - fs_type = tst_dev_fs_type(); - device = tst_acquire_device(cleanup); - - if (!device) - tst_brkm(TCONF, cleanup, "Failed to acquire device"); - SAFE_MKDIR(cleanup, TEST_FILE1, DIR_MODE); + SAFE_MKDIR(TEST_FILE1, DIR_MODE); - SAFE_MKDIR(cleanup, "test_eloop", DIR_MODE); - SAFE_SYMLINK(cleanup, "../test_eloop", "test_eloop/test_eloop"); + SAFE_MKDIR("test_eloop", DIR_MODE); + SAFE_SYMLINK("../test_eloop", "test_eloop/test_eloop"); for (i = 0; i < 43; i++) strcat(test_file4, "/test_eloop"); - - tst_mkfs(cleanup, device, fs_type, NULL, NULL); - SAFE_MKDIR(cleanup, MNT_POINT, DIR_MODE); - SAFE_MOUNT(cleanup, device, MNT_POINT, fs_type, 0, NULL); - mount_flag = 1; - - SAFE_TOUCH(cleanup, TEST_FILE2, 0644, NULL); - SAFE_MOUNT(cleanup, device, MNT_POINT, fs_type, - MS_REMOUNT | MS_RDONLY, NULL); } -static void cleanup(void) -{ - if (mount_flag && tst_umount(MNT_POINT) < 0) - tst_resm(TWARN | TERRNO, "umount device:%s failed", device); - - if (device) - tst_release_device(device); - - tst_rmdir(); -} +static struct tst_test test = { + .setup = setup, + .test = link_verify, + .tcnt = ARRAY_SIZE(tcases), + .needs_root = 1, + .needs_rofs = 1, + .mntpoint = MNT_POINT, +};