1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
#!/bin/sh
# PCP QA Test No. 1485
# UUID extraction in Linux PMDA
#
# non-valgrind variant, see qa/1487 for the valgrind variant
#
# Copyright (c) 2024 Ken McDonell. All Rights Reserved.
#
if [ $# -eq 0 ]
then
seq=`basename $0`
echo "QA output created by $seq"
else
# use $seq from caller, unless not set
[ -n "$seq" ] || seq=`basename $0`
echo "QA output created by `basename $0` $*"
fi
# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check
do_valgrind=false
if [ "$1" = "--valgrind" ]
then
_check_valgrind
do_valgrind=true
elif which valgrind >/dev/null 2>&1
then
[ "$PCPQA_VALGRIND" = both ] || \
_notrun "valgrind variant qa/1487 will be run"
fi
_cleanup()
{
cd $here
$sudo rm -rf $tmp $tmp.*
}
status=0 # success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_filter()
{
sed \
-e "s@$tmp@TMP@g" \
# end
}
_doit()
{
if $do_valgrind
then
_run_valgrind pminfo -L $DEBUG -f filesys.mountdir filesys.uuid filesys.type \
| $PCP_AWK_PROG '
/^=== std err ===/ { inerr = 1; print >"'"$tmp.err"'"; next }
inerr == 1 && /^=== / { inerr = 0 }
inerr == 1 { print >"'"$tmp.err"'" }
inerr == 0 { print >"'"$tmp.out"'" }'
else
pminfo -L $DEBUG -f filesys.mountdir filesys.uuid filesys.type >$tmp.out 2>$tmp.err
fi
_filter <$tmp.err | LC_COLLATE=POSIX sort
_filter <$tmp.out
}
mkdir -p $tmp/root
LINUX_STATSPATH=$tmp/root; export LINUX_STATSPATH
# real QA test starts here
echo "+++ uuid-00 tarball +++"
cd $tmp/root
$sudo tar zxpf $here/linux/uuid-00-root.tgz
cd $here
echo "situation normal ..."
DEBUG=''
_doit
echo
echo "cull some mounts ..."
grep -v '/dev/sd[bd]' <$LINUX_STATSPATH/proc/self/mounts >$tmp.tmp
$sudo cp $tmp.tmp $LINUX_STATSPATH/proc/self/mounts
DEBUG=''
_doit
echo
echo "mismatches ..."
sed -e 's@/dev/sde1@/dev/vda2@' <$LINUX_STATSPATH/proc/self/mounts >$tmp.tmp
$sudo cp $tmp.tmp $LINUX_STATSPATH/proc/self/mounts
cd $LINUX_STATSPATH/dev/disk/by-uuid
$sudo rm f24a78ad-dbfa-4883-9ad5-dc7d8d418a00
$sudo ln -s ../../vda1 f24a78ad-dbfa-4883-9ad5-dc7d8d418a00
$sudo touch dead-beef-cafe-feed
cd $here
DEBUG='-Dappl8'
_doit
echo
echo "/dev/disk/by-uuid empty ..."
$sudo rm -f $LINUX_STATSPATH/dev/disk/by-uuid/*
DEBUG='-Dappl8'
_doit
echo
echo "/dev/disk/by-uuid missing ..."
$sudo rm -rf $LINUX_STATSPATH/dev/disk/by-uuid
DEBUG='-Dappl8'
_doit
echo
echo "+++ uuid-01 tarball +++"
cd $tmp/root
$sudo tar zxpf $here/linux/uuid-01-root.tgz
cd $here
echo "situation normal ..."
DEBUG=''
_doit
echo
echo "/dev/mapper empty ..."
$sudo rm -f $LINUX_STATSPATH/dev/mapper/*
DEBUG='-Dappl8'
_doit
echo
echo "/dev/mapper is bogus ..."
cd $LINUX_STATSPATH/dev/mapper
$sudo ln -s ../dm-13 fedora_vm22-root
$sudo touch fedora_vm22-swap
cd $here
DEBUG='-Dappl8'
_doit
echo
echo "/dev/mapper missing ..."
$sudo rm -rf $LINUX_STATSPATH/dev/mapper
DEBUG='-Dappl8'
_doit
# success, all done
exit
|