From 1d5d24be03050b90084f833c5946495dc65ba16e Mon Sep 17 00:00:00 2001 From: Chase Qi Date: Wed, 19 Oct 2016 16:28:54 +0800 Subject: v2: linux: add disk partitioning test * migrate common/disk-partitioning-test.sh to v2 * added support for test skipping Change-Id: I3e8ed7fd5e62f4e511c01f9e91770cd17c927603 Signed-off-by: Chase Qi --- automated/linux/disk/disk-partitioning.sh | 89 +++++++++++++++++++++++++++++ automated/linux/disk/disk-partitioning.yaml | 34 +++++++++++ 2 files changed, 123 insertions(+) create mode 100755 automated/linux/disk/disk-partitioning.sh create mode 100755 automated/linux/disk/disk-partitioning.yaml (limited to 'automated') diff --git a/automated/linux/disk/disk-partitioning.sh b/automated/linux/disk/disk-partitioning.sh new file mode 100755 index 0000000..6f5d204 --- /dev/null +++ b/automated/linux/disk/disk-partitioning.sh @@ -0,0 +1,89 @@ +#!/bin/sh + +. ../../lib/sh-test-lib +OUTPUT="$(pwd)/output" +RESULT_FILE="${OUTPUT}/result.txt" +DISKLABEL="gpt" +FILESYSTEM="ext4" + +usage() { + echo "Usage: $0 [-d ] [-l ] [-f ] [-s ]" 1>&2 + exit 1 +} + +while getopts "d:l:f:r:s:" o; do + case "$o" in + # The existing disk label on the device will be destroyed, + # and all data on this disk will be lost. + d) DEVICE="${OPTARG}" ;; + l) DISKLABEL="${OPTARG}" ;; + f) FILESYSTEM="${OPTARG}" ;; + s) SKIP_INSTALL="${OPTARG}" ;; + *) usage ;; + esac +done + +create_disklabel() { + echo + echo "Creating ${DEVICE} disklabel: ${DISKLABEL}" + umount "${DEVICE}*" > /dev/null 2>&1 + # If mklabel fails, skip the following tests. + skip_list="create-partition format-partition mount-partition umount-partition" + parted -s "${DEVICE}" mklabel "${DISKLABEL}" + exit_on_fail "create-disklabel" "${skip_list}" + + sync + sleep 10 +} + +create_partition() { + echo + echo "Creating partition: ${DEVICE}1" + skip_list="format-partition mount-partition umount-partition" + parted -s "${DEVICE}" mkpart primary 0% 100% + exit_on_fail "create-partition" "${skip_list}" + + sync + sleep 10 +} + +format_partition() { + echo + echo "Formatting ${DEVICE}1 to ${FILESYSTEM}" + skip_list="mount-partition umount-partition" + if [ "${FILESYSTEM}" = "fat32" ]; then + echo "y" | mkfs -t vfat -F 32 "${DEVICE}1" + else + echo "y" | mkfs -t "${FILESYSTEM}" "${DEVICE}1" + fi + exit_on_fail "format-partition" "${skip_list}" + + sync + sleep 10 +} + +disk_mount() { + echo + echo "Running mount/umount tests..." + umount /mnt > /dev/null 2>&1 + skip_list="umount-partition" + mount "${DEVICE}1" /mnt + exit_on_fail "mount-partition" "${skip_list}" + + umount "${DEVICE}1" + check_return "umount-partition" +} + +# Test run. +[ -b "${DEVICE}" ] && error_msg "Please specify a block device with '-d'" +! check_root && error_msg "You need to be root to run this script." +[ -d "${OUTPUT}" ] && mv "${OUTPUT}" "${OUTPUT}_$(date +%Y%m%d%H%M%S)" +mkdir -p "${OUTPUT}" + +pkgs="parted e2fsprogs dosfstools" +install_deps "${pkgs}" "${SKIP_INSTALL}" + +create_disklabel +create_partition +format_partition +disk_mount diff --git a/automated/linux/disk/disk-partitioning.yaml b/automated/linux/disk/disk-partitioning.yaml new file mode 100755 index 0000000..c48b52a --- /dev/null +++ b/automated/linux/disk/disk-partitioning.yaml @@ -0,0 +1,34 @@ +metadata: + name: disk-partitioning-test + format: "Lava-Test-Shell Test Definition 1.0" + description: "Disk partitioning test." + maintainer: + - chase.qi@linaro.org + os: + - debian + - ubuntu + - fedora + - centos + devices: + - mustang + - hi6220-hikey + - apq8016-sbc + scope: + - functional + environment: + - lava-test-shell + +params: + # The existing disk label on the device will be destroyed, + # and all data on this disk will be lost. + DEVICE: "" + # Supported labels: msdos and gpt + DISKLABEL: "gpt" + FILESYSTEM: "ext4" + SKIP_INSTALL: "False" + +run: + steps: + - cd ./automated/linux/disk/ + - ./disk-partitioning.sh -d "${DEVICE}" -l "${DISKLABEL}" -f "${FILESYSTEM}" -s "${SKIP_INSTALL}" + - ../../utils/send-to-lava.sh ./output/result.txt -- cgit v1.2.3