Re: [PATCH 2/3] common: Improve _link_output_file to be more versatile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Nov 24, 2015 at 11:39:57AM +0100, Jan Kara wrote:
> From: Jan Kara <jack@xxxxxxxx>
> 
> Currently _link_output_file() selects output file suffix based on the
> current operating system. Make it more versatile by allowing selection
> of output file suffix based on any feature string. The idea is that
> in config file ($seq.cfg) there are several lines like:
> 
> feat1,feat2: suffix
> 
> The function is passed a feature string (or uses os_name,MOUNT_OPTIONS
> if no argument is passed) and selects output file with a suffix for
> which all features are present in the feature string. If there is no
> matching line, output with 'default' suffix is selected.
> 
> Update all tests using _link_out_file to the new calling convention.
> 
> Signed-off-by: Jan Kara <jack@xxxxxxxx>

I made a slight change so that if $seqfull.cfg doesn't exist, we use
./common/default.cfg instead.  This avoids the need to create a large
number of identical files:

>  tests/generic/088.cfg       |   2 +
>  tests/xfs/018.cfg           |   2 +
>  tests/xfs/022.cfg           |   2 +
>  tests/xfs/023.cfg           |   2 +
>  tests/xfs/030.cfg           |   2 +
>  tests/xfs/031.cfg           |   2 +
>  tests/xfs/035.cfg           |   2 +
>  tests/xfs/036.cfg           |   2 +
>  tests/xfs/039.cfg           |   2 +
>  tests/xfs/043.cfg           |   2 +
>  tests/xfs/082.cfg           |   2 +
>  tests/xfs/146.cfg           |   2 +

What do you think?

						- Ted

commit 37c2d44b6cc6772f0daa10761fb532b5662dc6fc
Author: Jan Kara <jack@xxxxxxxx>
Date:   Tue Nov 24 11:39:57 2015 +0100

    common: Improve _link_output_file to be more versatile
    
    Currently _link_output_file() selects output file suffix based on the
    current operating system. Make it more versatile by allowing selection
    of output file suffix based on any feature string. The idea is that
    in config file ($seq.cfg) there are several lines like:
    
    feat1,feat2: suffix
    
    The function is passed a feature string (or uses os_name,MOUNT_OPTIONS
    if no argument is passed) and selects output file with a suffix for
    which all features are present in the feature string. If there is no
    matching line, output with 'default' suffix is selected.
    
    Update all tests using _link_out_file to the new calling convention.
    
    Signed-off-by: Jan Kara <jack@xxxxxxxx>
    Signed-off-by: Theodore Ts'o <tytso@xxxxxxx>

diff --git a/common/default.cfg b/common/default.cfg
new file mode 100644
index 0000000..7ffdfc0
--- /dev/null
+++ b/common/default.cfg
@@ -0,0 +1,2 @@
+irix: irix
+linux: linux
diff --git a/common/rc b/common/rc
index 62216f4..3b4cbe0 100644
--- a/common/rc
+++ b/common/rc
@@ -2205,15 +2205,60 @@ _get_os_name()
 	fi
 }
 
+_link_out_file_named()
+{
+	local cfg_file
+	export FEATURES=$2
+
+	if test -f $seqfull.cfg; then
+		cfg_file=$seqfull.cfg
+	else
+		cfg_file=./common/default.cfg
+	fi
+
+	SUFFIX=$(perl -e '
+		my %feathash;
+		my $feature, $result, $suffix, $opts;
+
+		foreach $feature (split(/,/, $ENV{"FEATURES"})) {
+			$feathash{$feature} = 1;
+		}
+		$result = "default";
+		while (<>) {
+			my $found = 1;
+
+			chomp;
+			($opts, $suffix) = split(/ *: */);
+			foreach my $opt (split(/,/, $opts)) {
+				if (!exists($feathash{$opt})) {
+					$found = 0;
+					last;
+				}
+			}
+			if ($found == 1) {
+				$result = $suffix;
+				last;
+			}
+		}
+		print $result
+		' <$cfg_file)
+	rm -f $1
+	SRC=$(basename $1)
+	ln -fs $SRC.$SUFFIX $1
+}
+
 _link_out_file()
 {
-	if [ -z "$1" -o -z "$2" ]; then
-		echo Error must pass src and dst.
-		exit
+	if [ $# -eq 0 ]; then
+		FEATURES="$(_get_os_name)"
+		if [ -n "$MOUNT_OPTIONS" ]; then
+			FEATURES=$FEATURES,${MOUNT_OPTIONS##"-o "}
+		fi
+	else
+		FEATURES=$1
 	fi
-	rm -f $2
-	SUFFIX=$(_get_os_name())
-	ln -s $1.$SUFFIX $2
+
+	_link_out_file_named $seqfull.out "$FEATURES"
 }
 
 _die()
diff --git a/tests/generic/088 b/tests/generic/088
index 983de98..46ce6ae 100755
--- a/tests/generic/088
+++ b/tests/generic/088
@@ -43,7 +43,7 @@ _filter()
 }
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs generic
diff --git a/tests/xfs/018 b/tests/xfs/018
index f097b28..848981f 100755
--- a/tests/xfs/018
+++ b/tests/xfs/018
@@ -54,7 +54,7 @@ _require_scratch
 _require_v2log
 
 # link correct .out file
-_link_out_file $seq.op $seqfull.op
+_link_out_file_named $seqfull.op $(_get_os_name)
 
 echo "*** init FS"
 umount $SCRATCH_DEV >/dev/null 2>&1
diff --git a/tests/xfs/022 b/tests/xfs/022
index cd9b9ec..b2b6142 100755
--- a/tests/xfs/022
+++ b/tests/xfs/022
@@ -39,7 +39,7 @@ trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
 . ./common/dump
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs xfs
diff --git a/tests/xfs/023 b/tests/xfs/023
index 120be64..9a899a8 100755
--- a/tests/xfs/023
+++ b/tests/xfs/023
@@ -38,7 +38,7 @@ trap "rm -rf $tmp.*; exit \$status" 0 1 2 3 15
 . ./common/dump
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs xfs
diff --git a/tests/xfs/030 b/tests/xfs/030
index a43455f..d2f5ed1 100755
--- a/tests/xfs/030
+++ b/tests/xfs/030
@@ -46,7 +46,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 . ./common/repair
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # nuke the superblock, AGI, AGF, AGFL; then try repair the damage
 #
diff --git a/tests/xfs/031 b/tests/xfs/031
index 48a97e1..59d68c3 100755
--- a/tests/xfs/031
+++ b/tests/xfs/031
@@ -39,7 +39,7 @@ rm -f $seqres.full
 . ./common/filter
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 _check_repair()
 {
diff --git a/tests/xfs/033 b/tests/xfs/033
index 576d437..dab111a 100755
--- a/tests/xfs/033
+++ b/tests/xfs/033
@@ -84,11 +84,11 @@ _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs
 	_scratch_mkfs_xfs -isize=512 | _filter_mkfs >/dev/null 2>&1
 
 # link correct .out file
+FEATURES=$(_get_os_name)
 if [ $_fs_has_crcs -eq 1 ]; then
-	_link_out_file $seq.crc.out $seqfull.out
-else
-	_link_out_file $seq.out $seqfull.out
+	FEATURES=$FEATURES,crc
 fi
+_link_out_file_named $seqfull.out "$FEATURES"
 
 `xfs_db -r -c sb -c p $SCRATCH_DEV | grep 'ino = ' | \
 	sed -e 's/ //g' -e 's/^/export /'`
diff --git a/tests/xfs/033.cfg b/tests/xfs/033.cfg
new file mode 100644
index 0000000..88e90e5
--- /dev/null
+++ b/tests/xfs/033.cfg
@@ -0,0 +1,3 @@
+irix: irix
+linux,crc: crc.linux
+linux: linux
diff --git a/tests/xfs/033.crc.out.linux b/tests/xfs/033.out.crc.linux
similarity index 100%
rename from tests/xfs/033.crc.out.linux
rename to tests/xfs/033.out.crc.linux
diff --git a/tests/xfs/035 b/tests/xfs/035
index 70eac93..25f2f69 100755
--- a/tests/xfs/035
+++ b/tests/xfs/035
@@ -37,7 +37,7 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
 . ./common/dump
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs xfs
diff --git a/tests/xfs/036 b/tests/xfs/036
index 32b8c87..280d036 100755
--- a/tests/xfs/036
+++ b/tests/xfs/036
@@ -37,7 +37,7 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
 . ./common/dump
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs xfs
diff --git a/tests/xfs/039 b/tests/xfs/039
index 9747923..2f765b8 100755
--- a/tests/xfs/039
+++ b/tests/xfs/039
@@ -37,7 +37,7 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
 . ./common/dump
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs xfs
diff --git a/tests/xfs/043 b/tests/xfs/043
index 55a5225..59eeff6 100755
--- a/tests/xfs/043
+++ b/tests/xfs/043
@@ -39,7 +39,7 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
 . ./common/dump
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs xfs
diff --git a/tests/xfs/055 b/tests/xfs/055
index cc747d3..920ba28 100755
--- a/tests/xfs/055
+++ b/tests/xfs/055
@@ -37,7 +37,7 @@ trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
 . ./common/dump
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 # real QA test starts here
 _supported_fs xfs
diff --git a/tests/xfs/082 b/tests/xfs/082
index fff1d6b..f1178fd 100755
--- a/tests/xfs/082
+++ b/tests/xfs/082
@@ -55,7 +55,7 @@ _require_scratch
 _require_v2log 
 
 # link correct .out file
-_link_out_file $seq.op $seqfull.op
+_link_out_file_named $seqfull.op $(_get_os_name)
 
 echo "*** init FS"
 umount $SCRATCH_DEV >/dev/null 2>&1
diff --git a/tests/xfs/146 b/tests/xfs/146
index c6343f8..f6cd3f3 100755
--- a/tests/xfs/146
+++ b/tests/xfs/146
@@ -48,7 +48,7 @@ _supported_fs xfs
 _supported_os Linux IRIX
 
 # link correct .out file
-_link_out_file $seq.out $seqfull.out
+_link_out_file
 
 _require_scratch
 _scratch_mkfs_xfs >/dev/null 2>&1
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux