X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fqa%2Frun_xfstests-obsolete.sh;fp=src%2Fceph%2Fqa%2Frun_xfstests-obsolete.sh;h=0000000000000000000000000000000000000000;hb=7da45d65be36d36b880cc55c5036e96c24b53f00;hp=9845d08d5d907feda0eca04dea87bf4244f57900;hpb=691462d09d0987b47e112d6ee8740375df3c51b2;p=stor4nfv.git diff --git a/src/ceph/qa/run_xfstests-obsolete.sh b/src/ceph/qa/run_xfstests-obsolete.sh deleted file mode 100644 index 9845d08..0000000 --- a/src/ceph/qa/run_xfstests-obsolete.sh +++ /dev/null @@ -1,458 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2012 Dreamhost, LLC -# -# This is free software; see the source for copying conditions. -# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. -# -# This is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as -# published by the Free Software Foundation version 2. - -# Usage: -# run_xfs_tests -t /dev/ -s /dev/ -f -# - test device and scratch device will both get trashed -# - fstypes can be xfs, ext4, or btrfs (xfs default) -# - tests can be listed individually or in ranges: 1 3-5 8 -# tests can also be specified by group: -g quick -# -# Exit status: -# 0: success -# 1: usage error -# 2: other runtime error -# 99: argument count error (programming error) -# 100: getopt error (internal error) - -# Alex Elder -# April 13, 2012 - -set -e - -PROGNAME=$(basename $0) - -# xfstests is downloaded from this git repository and then built. -# XFSTESTS_REPO="git://oss.sgi.com/xfs/cmds/xfstests.git" -XFSTESTS_REPO="git://git.ceph.com/xfstests.git" - -# Default command line option values -COUNT="1" -FS_TYPE="xfs" -SCRATCH_DEV="" # MUST BE SPECIFIED -TEST_DEV="" # MUST BE SPECIFIED -TESTS="-g auto" # The "auto" group is supposed to be "known good" - -# rbd presents geometry information that causes mkfs.xfs to -# issue a warning. This option avoids this class of problems. -XFS_MKFS_OPTIONS="-l su=32k" - -# Override the default test list with a list of tests known to pass -# until we can work through getting them all passing reliably. -TESTS="1-7 9 11-15 17 19-21 26-29 31-34 41 46-48 50-54 56 61 63-67 69-70 74-76" -TESTS="${TESTS} 78 79 84-89 91-92 100 103 105 108 110 116-121 124 126" -TESTS="${TESTS} 129-135 137-141 164-167 182 184 187-190 192 194" -TESTS="${TESTS} 196 199 201 203 214-216 220-227 234 236-238 241 243-249" -TESTS="${TESTS} 253 257-259 261 262 269 273 275 277 278 280 285 286" -# 275 was the highest available test as of 4/10/12. -# 289 was the highest available test as of 11/15/12. - -###### -# Some explanation of why tests have been excluded above: -# -# Test 008 was pulled because it contained a race condition leading to -# spurious failures. -# -# Test 049 was pulled because it caused a kernel fault. -# http://tracker.newdream.net/issues/2260 -# Test 232 was pulled because it caused an XFS error -# http://tracker.newdream.net/issues/2302 -# -# This test passes but takes a LONG time (1+ hours): 127 -# -# These were not run for one (anticipated) reason or another: -# 010 016 030 035 040 044 057 058-060 072 077 090 093-095 097-099 104 -# 112 113 122 123 125 128 142 147-163 168 175-178 180 185 191 193 -# 195 197 198 207-213 217 228 230-233 235 239 240 252 254 255 264-266 -# 270-272 276 278-279 281-284 288 289 -# -# These tests all failed (produced output different from golden): -# 042 073 083 096 109 169 170 200 202 204-206 218 229 240 242 250 -# 263 276 277 279 287 -# -# The rest were not part of the "auto" group: -# 018 022 023 024 025 036 037 038 039 043 055 071 080 081 082 101 -# 102 106 107 111 114 115 136 171 172 173 251 267 268 -###### - -# print an error message and quit with non-zero status -function err() { - if [ $# -gt 0 ]; then - echo "" >&2 - echo "${PROGNAME}: ${FUNCNAME[1]}: $@" >&2 - fi - exit 2 -} - -# routine used to validate argument counts to all shell functions -function arg_count() { - local func - local want - local got - - if [ $# -eq 2 ]; then - func="${FUNCNAME[1]}" # calling function - want=$1 - got=$2 - else - func="${FUNCNAME[0]}" # i.e., arg_count - want=2 - got=$# - fi - [ "${want}" -eq "${got}" ] && return 0 - echo "${PROGNAME}: ${func}: arg count bad (want ${want} got ${got})" >&2 - exit 99 -} - -# validation function for repeat count argument -function count_valid() { - arg_count 1 $# - - test "$1" -gt 0 # 0 is pointless; negative is wrong -} - -# validation function for filesystem type argument -function fs_type_valid() { - arg_count 1 $# - - case "$1" in - xfs|ext4|btrfs) return 0 ;; - *) return 1 ;; - esac -} - -# validation function for device arguments -function device_valid() { - arg_count 1 $# - - # Very simple testing--really should try to be more careful... - test -b "$1" -} - -# print a usage message and quit -# -# if a message is supplied, print that first, and then exit -# with non-zero status -function usage() { - if [ $# -gt 0 ]; then - echo "" >&2 - echo "$@" >&2 - fi - - echo "" >&2 - echo "Usage: ${PROGNAME} " >&2 - echo "" >&2 - echo " options:" >&2 - echo " -h or --help" >&2 - echo " show this message" >&2 - echo " -c or --count" >&2 - echo " iteration count (1 or more)" >&2 - echo " -f or --fs-type" >&2 - echo " one of: xfs, ext4, btrfs" >&2 - echo " (default fs-type: xfs)" >&2 - echo " -s or --scratch-dev (REQUIRED)" >&2 - echo " name of device used for scratch filesystem" >&2 - echo " -t or --test-dev (REQUIRED)" >&2 - echo " name of device used for test filesystem" >&2 - echo " tests:" >&2 - echo " list of test numbers or ranges, e.g.:" >&2 - echo " 1-9 11-15 17 19-21 26-28 31-34 41" >&2 - echo " or possibly an xfstests test group, e.g.:" >&2 - echo " -g quick" >&2 - echo " (default tests: -g auto)" >&2 - echo "" >&2 - - [ $# -gt 0 ] && exit 1 - - exit 0 # This is used for a --help -} - -# parse command line arguments -function parseargs() { - # Short option flags - SHORT_OPTS="" - SHORT_OPTS="${SHORT_OPTS},h" - SHORT_OPTS="${SHORT_OPTS},c:" - SHORT_OPTS="${SHORT_OPTS},f:" - SHORT_OPTS="${SHORT_OPTS},s:" - SHORT_OPTS="${SHORT_OPTS},t:" - - # Short option flags - LONG_OPTS="" - LONG_OPTS="${LONG_OPTS},help" - LONG_OPTS="${LONG_OPTS},count:" - LONG_OPTS="${LONG_OPTS},fs-type:" - LONG_OPTS="${LONG_OPTS},scratch-dev:" - LONG_OPTS="${LONG_OPTS},test-dev:" - - TEMP=$(getopt --name "${PROGNAME}" \ - --options "${SHORT_OPTS}" \ - --longoptions "${LONG_OPTS}" \ - -- "$@") - eval set -- "$TEMP" - - while [ "$1" != "--" ]; do - case "$1" in - -h|--help) - usage - ;; - -c|--count) - count_valid "$2" || - usage "invalid count '$2'" - COUNT="$2" - shift - ;; - -f|--fs-type) - fs_type_valid "$2" || - usage "invalid fs_type '$2'" - FS_TYPE="$2" - shift - ;; - -s|--scratch-dev) - device_valid "$2" || - usage "invalid scratch-dev '$2'" - SCRATCH_DEV="$2" - shift - ;; - -t|--test-dev) - device_valid "$2" || - usage "invalid test-dev '$2'" - TEST_DEV="$2" - shift - ;; - *) - exit 100 # Internal error - ;; - esac - shift - done - shift - - [ -n "${TEST_DEV}" ] || usage "test-dev must be supplied" - [ -n "${SCRATCH_DEV}" ] || usage "scratch-dev must be supplied" - - [ $# -eq 0 ] || TESTS="$@" -} - -################################################################ - -[ -z "$TESTDIR" ] && export TESTDIR="/tmp/cephtest" - -# Set up some environment for normal teuthology test setup. -# This really should not be necessary but I found it was. -export CEPH_ARGS="--conf ${TESTDIR}/ceph.conf" -export CEPH_ARGS="${CEPH_ARGS} --keyring ${TESTDIR}/data/client.0.keyring" -export CEPH_ARGS="${CEPH_ARGS} --name client.0" - -export LD_LIBRARY_PATH="${TESTDIR}/binary/usr/local/lib:${LD_LIBRARY_PATH}" -export PATH="${TESTDIR}/binary/usr/local/bin:${PATH}" -export PATH="${TESTDIR}/binary/usr/local/sbin:${PATH}" - -################################################################ - -# Filesystem-specific mkfs options--set if not supplied -export XFS_MKFS_OPTIONS="${XFS_MKFS_OPTIONS:--f -l su=65536}" -export EXT4_MKFS_OPTIONS="${EXT4_MKFS_OPTIONS:--F}" -export BTRFS_MKFS_OPTION # No defaults - -XFSTESTS_DIR="/var/lib/xfstests" # Where the tests live - -# download, build, and install xfstests -function install_xfstests() { - arg_count 0 $# - - local multiple="" - local ncpu - - pushd "${TESTDIR}" - - git clone "${XFSTESTS_REPO}" - - cd xfstests - - # FIXME: use an older version before the tests were rearranged! - git reset --hard e5f1a13792f20cfac097fef98007610b422f2cac - - ncpu=$(getconf _NPROCESSORS_ONLN 2>&1) - [ -n "${ncpu}" -a "${ncpu}" -gt 1 ] && multiple="-j ${ncpu}" - - make realclean - make ${multiple} - make -k install - - popd -} - -# remove previously-installed xfstests files -function remove_xfstests() { - arg_count 0 $# - - rm -rf "${TESTDIR}/xfstests" - rm -rf "${XFSTESTS_DIR}" -} - -# create a host options file that uses the specified devices -function setup_host_options() { - arg_count 0 $# - - # Create mount points for the test and scratch filesystems - local test_dir="$(mktemp -d ${TESTDIR}/test_dir.XXXXXXXXXX)" - local scratch_dir="$(mktemp -d ${TESTDIR}/scratch_mnt.XXXXXXXXXX)" - - # Write a host options file that uses these devices. - # xfstests uses the file defined by HOST_OPTIONS as the - # place to get configuration variables for its run, and - # all (or most) of the variables set here are required. - export HOST_OPTIONS="$(mktemp ${TESTDIR}/host_options.XXXXXXXXXX)" - cat > "${HOST_OPTIONS}" <<-! - # Created by ${PROGNAME} on $(date) - # HOST_OPTIONS="${HOST_OPTIONS}" - TEST_DEV="${TEST_DEV}" - SCRATCH_DEV="${SCRATCH_DEV}" - TEST_DIR="${test_dir}" - SCRATCH_MNT="${scratch_dir}" - FSTYP="${FS_TYPE}" - export TEST_DEV SCRATCH_DEV TEST_DIR SCRATCH_MNT FSTYP - # - export XFS_MKFS_OPTIONS="${XFS_MKFS_OPTIONS}" - ! - - # Now ensure we are using the same values - . "${HOST_OPTIONS}" -} - -# remove the host options file, plus the directories it refers to -function cleanup_host_options() { - arg_count 0 $# - - rm -rf "${TEST_DIR}" "${SCRATCH_MNT}" - rm -f "${HOST_OPTIONS}" -} - -# run mkfs on the given device using the specified filesystem type -function do_mkfs() { - arg_count 1 $# - - local dev="${1}" - local options - - case "${FSTYP}" in - xfs) options="${XFS_MKFS_OPTIONS}" ;; - ext4) options="${EXT4_MKFS_OPTIONS}" ;; - btrfs) options="${BTRFS_MKFS_OPTIONS}" ;; - esac - - "mkfs.${FSTYP}" ${options} "${dev}" || - err "unable to make ${FSTYP} file system on device \"${dev}\"" -} - -# mount the given device on the given mount point -function do_mount() { - arg_count 2 $# - - local dev="${1}" - local dir="${2}" - - mount "${dev}" "${dir}" || - err "unable to mount file system \"${dev}\" on \"${dir}\"" -} - -# unmount a previously-mounted device -function do_umount() { - arg_count 1 $# - - local dev="${1}" - - if mount | grep "${dev}" > /dev/null; then - if ! umount "${dev}"; then - err "unable to unmount device \"${dev}\"" - fi - else - # Report it but don't error out - echo "device \"${dev}\" was not mounted" >&2 - fi -} - -# do basic xfstests setup--make and mount the test and scratch filesystems -function setup_xfstests() { - arg_count 0 $# - - # TEST_DEV can persist across test runs, but for now we - # don't bother. I believe xfstests prefers its devices to - # have been already been formatted for the desired - # filesystem type--it uses blkid to identify things or - # something. So we mkfs both here for a fresh start. - do_mkfs "${TEST_DEV}" - do_mkfs "${SCRATCH_DEV}" - - # I believe the test device is expected to be mounted; the - # scratch doesn't need to be (but it doesn't hurt). - do_mount "${TEST_DEV}" "${TEST_DIR}" - do_mount "${SCRATCH_DEV}" "${SCRATCH_MNT}" -} - -# clean up changes made by setup_xfstests -function cleanup_xfstests() { - arg_count 0 $# - - # Unmount these in case a test left them mounted (plus - # the corresponding setup function mounted them...) - do_umount "${TEST_DEV}" - do_umount "${SCRATCH_DEV}" -} - -# top-level setup routine -function setup() { - arg_count 0 $# - - setup_host_options - install_xfstests - setup_xfstests -} - -# top-level (final) cleanup routine -function cleanup() { - arg_count 0 $# - - cd / - cleanup_xfstests - remove_xfstests - cleanup_host_options -} -trap cleanup EXIT ERR HUP INT QUIT - -# ################################################################ - -start_date="$(date)" - -parseargs "$@" - -setup - -pushd "${XFSTESTS_DIR}" -for (( i = 1 ; i <= "${COUNT}" ; i++ )); do - [ "${COUNT}" -gt 1 ] && echo "=== Iteration "$i" starting at: $(date)" - - ./check ${TESTS} # Here we actually run the tests - status=$? - - [ "${COUNT}" -gt 1 ] && echo "=== Iteration "$i" complete at: $(date)" -done -popd - -# cleanup is called via the trap call, above - -echo "This xfstests run started at: ${start_date}" -echo "xfstests run completed at: $(date)" -[ "${COUNT}" -gt 1 ] && echo "xfstests run consisted of ${COUNT} iterations" - -exit "${status}"