1271294Sngie# $FreeBSD: releng/10.2/contrib/pjdfstest/tests/misc.sh 271294 2014-09-09 02:50:09Z ngie $ 2271294Sngie 3271294Sngientest=1 4271294Sngie 5271294Sngiecase "${dir}" in 6271294Sngie/*) 7271294Sngie maindir="${dir}/../.." 8271294Sngie ;; 9271294Sngie*) 10271294Sngie maindir="`pwd`/${dir}/../.." 11271294Sngie ;; 12271294Sngieesac 13271294Sngiefstest="${maindir}/pjdfstest" 14271294Sngie. ${maindir}/tests/conf 15271294Sngie 16271294Sngieexpect() 17271294Sngie{ 18271294Sngie e="${1}" 19271294Sngie shift 20271294Sngie r=`${fstest} $* 2>/dev/null | tail -1` 21271294Sngie echo "${r}" | ${GREP} -Eq '^'${e}'$' 22271294Sngie if [ $? -eq 0 ]; then 23271294Sngie if [ -z "${todomsg}" ]; then 24271294Sngie echo "ok ${ntest}" 25271294Sngie else 26271294Sngie echo "ok ${ntest} # TODO ${todomsg}" 27271294Sngie fi 28271294Sngie else 29271294Sngie if [ -z "${todomsg}" ]; then 30271294Sngie echo "not ok ${ntest} - tried '$*', expected ${e}, got ${r}" 31271294Sngie else 32271294Sngie echo "not ok ${ntest} # TODO ${todomsg}" 33271294Sngie fi 34271294Sngie fi 35271294Sngie todomsg="" 36271294Sngie ntest=$((ntest+1)) 37271294Sngie} 38271294Sngie 39271294Sngiejexpect() 40271294Sngie{ 41271294Sngie s="${1}" 42271294Sngie d="${2}" 43271294Sngie e="${3}" 44271294Sngie shift 3 45271294Sngie r=`jail -s ${s} / pjdfstest 127.0.0.1 /bin/sh -c "cd ${d} && ${fstest} $* 2>/dev/null" | tail -1` 46271294Sngie echo "${r}" | ${GREP} -Eq '^'${e}'$' 47271294Sngie if [ $? -eq 0 ]; then 48271294Sngie if [ -z "${todomsg}" ]; then 49271294Sngie echo "ok ${ntest}" 50271294Sngie else 51271294Sngie echo "ok ${ntest} # TODO ${todomsg}" 52271294Sngie fi 53271294Sngie else 54271294Sngie if [ -z "${todomsg}" ]; then 55271294Sngie echo "not ok ${ntest} - tried '$*', expected ${e}, got ${r}" 56271294Sngie else 57271294Sngie echo "not ok ${ntest} # TODO ${todomsg}" 58271294Sngie fi 59271294Sngie fi 60271294Sngie todomsg="" 61271294Sngie ntest=$((ntest+1)) 62271294Sngie} 63271294Sngie 64271294Sngietest_check() 65271294Sngie{ 66271294Sngie if [ $* ]; then 67271294Sngie if [ -z "${todomsg}" ]; then 68271294Sngie echo "ok ${ntest}" 69271294Sngie else 70271294Sngie echo "ok ${ntest} # TODO ${todomsg}" 71271294Sngie fi 72271294Sngie else 73271294Sngie if [ -z "${todomsg}" ]; then 74271294Sngie echo "not ok ${ntest}" 75271294Sngie else 76271294Sngie echo "not ok ${ntest} # TODO ${todomsg}" 77271294Sngie fi 78271294Sngie fi 79271294Sngie todomsg="" 80271294Sngie ntest=$((ntest+1)) 81271294Sngie} 82271294Sngie 83271294Sngietodo() 84271294Sngie{ 85271294Sngie if [ "${os}" = "${1}" -o "${os}:${fs}" = "${1}" ]; then 86271294Sngie todomsg="${2}" 87271294Sngie fi 88271294Sngie} 89271294Sngie 90271294Sngienamegen() 91271294Sngie{ 92271294Sngie echo "pjdfstest_`dd if=/dev/urandom bs=1k count=1 2>/dev/null | openssl md5 | awk '{print $NF}'`" 93271294Sngie} 94271294Sngie 95271294Sngienamegen_len() 96271294Sngie{ 97271294Sngie len="${1}" 98271294Sngie 99271294Sngie name="" 100271294Sngie while :; do 101271294Sngie namepart="`dd if=/dev/urandom bs=64 count=1 2>/dev/null | openssl md5 | awk '{print $NF}'`" 102271294Sngie name="${name}${namepart}" 103271294Sngie curlen=`printf "%s" "${name}" | wc -c` 104271294Sngie [ ${curlen} -lt ${len} ] || break 105271294Sngie done 106271294Sngie name=`echo "${name}" | cut -b -${len}` 107271294Sngie printf "%s" "${name}" 108271294Sngie} 109271294Sngie 110271294Sngie# POSIX: 111271294Sngie# {NAME_MAX} 112271294Sngie# Maximum number of bytes in a filename (not including terminating null). 113271294Sngienamegen_max() 114271294Sngie{ 115271294Sngie name_max=`${fstest} pathconf . _PC_NAME_MAX` 116271294Sngie namegen_len ${name_max} 117271294Sngie} 118271294Sngie 119271294Sngie# POSIX: 120271294Sngie# {PATH_MAX} 121271294Sngie# Maximum number of bytes in a pathname, including the terminating null character. 122271294Sngiedirgen_max() 123271294Sngie{ 124271294Sngie name_max=`${fstest} pathconf . _PC_NAME_MAX` 125271294Sngie complen=$((name_max/2)) 126271294Sngie path_max=`${fstest} pathconf . _PC_PATH_MAX` 127271294Sngie # "...including the terminating null character." 128271294Sngie path_max=$((path_max-1)) 129271294Sngie 130271294Sngie name="" 131271294Sngie while :; do 132271294Sngie name="${name}`namegen_len ${complen}`/" 133271294Sngie curlen=`printf "%s" "${name}" | wc -c` 134271294Sngie [ ${curlen} -lt ${path_max} ] || break 135271294Sngie done 136271294Sngie name=`echo "${name}" | cut -b -${path_max}` 137271294Sngie name=`echo "${name}" | sed -E 's@/$@x@'` 138271294Sngie printf "%s" "${name}" 139271294Sngie} 140271294Sngie 141271294Sngiequick_exit() 142271294Sngie{ 143271294Sngie echo "1..1" 144271294Sngie echo "ok 1" 145271294Sngie exit 0 146271294Sngie} 147271294Sngie 148271294Sngiesupported() 149271294Sngie{ 150271294Sngie case "${1}" in 151271294Sngie lchmod) 152271294Sngie if [ "${os}" != "FreeBSD" ]; then 153271294Sngie return 1 154271294Sngie fi 155271294Sngie ;; 156271294Sngie chflags) 157271294Sngie if [ "${os}" != "FreeBSD" ]; then 158271294Sngie return 1 159271294Sngie fi 160271294Sngie ;; 161271294Sngie chflags_SF_SNAPSHOT) 162271294Sngie if [ "${os}" != "FreeBSD" -o "${fs}" != "UFS" ]; then 163271294Sngie return 1 164271294Sngie fi 165271294Sngie ;; 166271294Sngie esac 167271294Sngie return 0 168271294Sngie} 169271294Sngie 170271294Sngierequire() 171271294Sngie{ 172271294Sngie if supported ${1}; then 173271294Sngie return 174271294Sngie fi 175271294Sngie quick_exit 176271294Sngie} 177271294Sngie 178271294Sngie# usage: 179271294Sngie# create_file <type> <name> 180271294Sngie# create_file <type> <name> <mode> 181271294Sngie# create_file <type> <name> <uid> <gid> 182271294Sngie# create_file <type> <name> <mode> <uid> <gid> 183271294Sngiecreate_file() { 184271294Sngie type="${1}" 185271294Sngie name="${2}" 186271294Sngie 187271294Sngie case "${type}" in 188271294Sngie none) 189271294Sngie return 190271294Sngie ;; 191271294Sngie regular) 192271294Sngie expect 0 create ${name} 0644 193271294Sngie ;; 194271294Sngie dir) 195271294Sngie expect 0 mkdir ${name} 0755 196271294Sngie ;; 197271294Sngie fifo) 198271294Sngie expect 0 mkfifo ${name} 0644 199271294Sngie ;; 200271294Sngie block) 201271294Sngie expect 0 mknod ${name} b 0644 1 2 202271294Sngie ;; 203271294Sngie char) 204271294Sngie expect 0 mknod ${name} c 0644 1 2 205271294Sngie ;; 206271294Sngie socket) 207271294Sngie expect 0 bind ${name} 208271294Sngie ;; 209271294Sngie symlink) 210271294Sngie expect 0 symlink test ${name} 211271294Sngie ;; 212271294Sngie esac 213271294Sngie if [ -n "${3}" -a -n "${4}" -a -n "${5}" ]; then 214271294Sngie expect 0 lchmod ${name} ${3} 215271294Sngie expect 0 lchown ${name} ${4} ${5} 216271294Sngie elif [ -n "${3}" -a -n "${4}" ]; then 217271294Sngie expect 0 lchown ${name} ${3} ${4} 218271294Sngie elif [ -n "${3}" ]; then 219271294Sngie expect 0 lchmod ${name} ${3} 220271294Sngie fi 221271294Sngie} 222