From patchwork Mon Jun 14 20:59:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12319985 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0BD47C2B9F4 for ; Mon, 14 Jun 2021 20:59:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E96CC6120E for ; Mon, 14 Jun 2021 20:59:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235026AbhFNVBl (ORCPT ); Mon, 14 Jun 2021 17:01:41 -0400 Received: from mail.kernel.org ([198.145.29.99]:49196 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234397AbhFNVBl (ORCPT ); Mon, 14 Jun 2021 17:01:41 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 10F31601FC; Mon, 14 Jun 2021 20:59:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1623704378; bh=/hk1vZhEcYzpt6+VNaagvP9UGwyjYuuDLt//Rlwb1lA=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=pkQEc7t3By3hiYX0GA6EfREzMfoBWMhaTqoA8VtNwQ6Z3fdBoI6BjaiQRjQX2xXVZ IbznKjhBdx4aOMM3yJN8C7n8P1rOEFT+uHPJ3tFtY0hqxyETxr3aMVW2CyrUAyZcwt AUslTVpc+PPkDiuE5pZoHkdhRPDg7fHdDzZ7NknCUGhIBJ6RP8fPBdeFOxxJj8vi27 DCNfcvaK1HPcyosdDvlgr2u7x1Ac/Fi9MLL0PlesuECkfq4t4q26KF2/4GE+zg6gxF kOQc18Mne7hw9/nGwI93hB+j/MJdTZwaeQMDIY4H412tnng6YwIHiG4F8E1Uxzc8mJ 3vtJDjXLANy5w== Subject: [PATCH 07/13] fstests: automatically generate group files From: "Darrick J. Wong" To: djwong@kernel.org, guaneryu@gmail.com Cc: Chandan Babu R , Allison Henderson , linux-xfs@vger.kernel.org, fstests@vger.kernel.org, guan@eryu.me, amir73il@gmail.com, ebiggers@kernel.org Date: Mon, 14 Jun 2021 13:59:37 -0700 Message-ID: <162370437774.3800603.15907676407985880109.stgit@locust> In-Reply-To: <162370433910.3800603.9623820748404628250.stgit@locust> References: <162370433910.3800603.9623820748404628250.stgit@locust> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: fstests@vger.kernel.org From: Darrick J. Wong Now that we've moved the group membership details into the test case files themselves, automatically generate the group files during build. The autogenerated files are named "group.list" instead of "group" to avoid conflicts between generated and (stale) SCM files as everyone rebases. Signed-off-by: Darrick J. Wong Reviewed-by: Chandan Babu R Reviewed-by: Allison Henderson --- .gitignore | 3 +++ common/preamble | 8 ++++++++ include/buildgrouplist | 8 ++++++++ tests/Makefile | 4 ++++ tests/btrfs/Makefile | 6 +++++- tests/ceph/Makefile | 6 +++++- tests/cifs/Makefile | 6 +++++- tests/ext4/Makefile | 6 +++++- tests/f2fs/Makefile | 6 +++++- tests/generic/Makefile | 6 +++++- tests/nfs/Makefile | 6 +++++- tests/ocfs2/Makefile | 6 +++++- tests/overlay/Makefile | 6 +++++- tests/perf/Makefile | 6 +++++- tests/shared/Makefile | 6 +++++- tests/udf/Makefile | 6 +++++- tests/xfs/Makefile | 6 +++++- tools/mkgroupfile | 42 ++++++++++++++++++++++++++++++++++++++++++ 18 files changed, 130 insertions(+), 13 deletions(-) create mode 100644 include/buildgrouplist create mode 100755 tools/mkgroupfile diff --git a/.gitignore b/.gitignore index d3194e76..2d72b064 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,9 @@ tags /local.config /results +# autogenerated group files +/tests/*/group.list + # autoconf generated files /aclocal.m4 /autom4te.cache diff --git a/common/preamble b/common/preamble index eafce487..3a4a6eb0 100644 --- a/common/preamble +++ b/common/preamble @@ -32,6 +32,14 @@ _begin_fstest() fi seq=`basename $0` + + # If we're only running the test to generate a group.list file, + # spit out the group data and exit. + if [ -n "$GENERATE_GROUPS" ]; then + echo "$seq $@" + exit 0 + fi + seqres=$RESULT_DIR/$seq echo "QA output created by $seq" diff --git a/include/buildgrouplist b/include/buildgrouplist new file mode 100644 index 00000000..d898efa3 --- /dev/null +++ b/include/buildgrouplist @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2021 Oracle, Inc. All Rights Reserved. +# +.PHONY: group.list + +group.list: + @echo " [GROUP] $$PWD/$@" + $(Q)$(TOPDIR)/tools/mkgroupfile $@ diff --git a/tests/Makefile b/tests/Makefile index 8ce8f209..5c8f0b10 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -7,6 +7,10 @@ include $(TOPDIR)/include/builddefs TESTS_SUBDIRS = $(sort $(dir $(wildcard $(CURDIR)/[[:lower:]]*/))) +SUBDIRS = $(wildcard [[:lower:]]*) + +default: $(SUBDIRS) + include $(BUILDRULES) install: $(addsuffix -install,$(TESTS_SUBDIRS)) diff --git a/tests/btrfs/Makefile b/tests/btrfs/Makefile index 2d936421..1b72a1a1 100644 --- a/tests/btrfs/Makefile +++ b/tests/btrfs/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist BTRFS_DIR = btrfs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(BTRFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/ceph/Makefile b/tests/ceph/Makefile index 55e35d77..2761e1e9 100644 --- a/tests/ceph/Makefile +++ b/tests/ceph/Makefile @@ -2,16 +2,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist CEPH_DIR = ceph TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(CEPH_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/cifs/Makefile b/tests/cifs/Makefile index 0c5cf3be..62c48935 100644 --- a/tests/cifs/Makefile +++ b/tests/cifs/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist CIFS_DIR = cifs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(CIFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/ext4/Makefile b/tests/ext4/Makefile index beb1541f..a2a0d561 100644 --- a/tests/ext4/Makefile +++ b/tests/ext4/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist EXT4_DIR = ext4 TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(EXT4_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/f2fs/Makefile b/tests/f2fs/Makefile index d13bca3f..9d1ed3c6 100644 --- a/tests/f2fs/Makefile +++ b/tests/f2fs/Makefile @@ -5,16 +5,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist F2FS_DIR = f2fs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(F2FS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/generic/Makefile b/tests/generic/Makefile index 3878d05c..b464b22b 100644 --- a/tests/generic/Makefile +++ b/tests/generic/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist GENERIC_DIR = generic TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(GENERIC_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/nfs/Makefile b/tests/nfs/Makefile index 754f2b25..128d2a3a 100644 --- a/tests/nfs/Makefile +++ b/tests/nfs/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist NFS_DIR = nfs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(NFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/ocfs2/Makefile b/tests/ocfs2/Makefile index e1337908..260ad31b 100644 --- a/tests/ocfs2/Makefile +++ b/tests/ocfs2/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist OCFS2_DIR = ocfs2 TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(OCFS2_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/overlay/Makefile b/tests/overlay/Makefile index b07f8925..de3203c2 100644 --- a/tests/overlay/Makefile +++ b/tests/overlay/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist TEST_DIR = overlay TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(TEST_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/perf/Makefile b/tests/perf/Makefile index 620f1dbf..0c74ba39 100644 --- a/tests/perf/Makefile +++ b/tests/perf/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist PERF_DIR = perf TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(PERF_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/shared/Makefile b/tests/shared/Makefile index 8a832782..f3128714 100644 --- a/tests/shared/Makefile +++ b/tests/shared/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist SHARED_DIR = shared TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(SHARED_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/udf/Makefile b/tests/udf/Makefile index c9c9f1bd..ed4434f0 100644 --- a/tests/udf/Makefile +++ b/tests/udf/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist UDF_DIR = udf TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(UDF_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tests/xfs/Makefile b/tests/xfs/Makefile index d64800ea..5f413e67 100644 --- a/tests/xfs/Makefile +++ b/tests/xfs/Makefile @@ -4,16 +4,20 @@ TOPDIR = ../.. include $(TOPDIR)/include/builddefs +include $(TOPDIR)/include/buildgrouplist XFS_DIR = xfs TARGET_DIR = $(PKG_LIB_DIR)/$(TESTS_DIR)/$(XFS_DIR) +DIRT = group.list + +default: $(DIRT) include $(BUILDRULES) install: $(INSTALL) -m 755 -d $(TARGET_DIR) $(INSTALL) -m 755 $(TESTS) $(TARGET_DIR) - $(INSTALL) -m 644 group $(TARGET_DIR) + $(INSTALL) -m 644 group.list $(TARGET_DIR) $(INSTALL) -m 644 $(OUTFILES) $(TARGET_DIR) # Nothing. diff --git a/tools/mkgroupfile b/tools/mkgroupfile new file mode 100755 index 00000000..0681e5d2 --- /dev/null +++ b/tools/mkgroupfile @@ -0,0 +1,42 @@ +#!/bin/bash + +# Generate a group file from the _begin_fstest call in each test. + +if [ "$1" = "--help" ]; then + echo "Usage: (cd tests/XXX/ ; ../../tools/mkgroupfile [output])" + exit 1 +fi + +test_dir="$PWD" +groupfile="$1" + +if [ ! -x ../../check ]; then + echo "$0: Run this from tests/XXX/." + exit 1 +fi + +generate_groupfile() { + cat << ENDL +# QA groups control file, automatically generated. +# See _begin_fstest in each test for details. + +ENDL + cd ../../ + export GENERATE_GROUPS=yes + grep -R -l "^_begin_fstest" "$test_dir/" 2>/dev/null | while read testfile; do + test -x "$testfile" && "$testfile" + done | sort -g + cd "$test_dir" +} + +if [ -z "$groupfile" ] || [ "$groupfile" = "-" ]; then + # Dump the group file to stdout and exit + generate_groupfile + exit 0 +fi + +# Otherwise, write the group file to disk somewhere. +ngroupfile="${groupfile}.new" +rm -f "$ngroupfile" +generate_groupfile >> "$ngroupfile" +mv "$ngroupfile" "$groupfile"