]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: add partx regression tests
authorOndrej Oprala <ooprala@redhat.com>
Wed, 10 Apr 2013 13:27:59 +0000 (15:27 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 26 Apr 2013 08:03:37 +0000 (10:03 +0200)
Signed-off-by: Ondrej Oprala <ooprala@redhat.com>
tests/commands.sh
tests/expected/partx/partx-add-all [new file with mode: 0644]
tests/expected/partx/partx-add-existing [new file with mode: 0644]
tests/expected/partx/partx-addpart [new file with mode: 0644]
tests/expected/partx/partx-change-by-range [new file with mode: 0644]
tests/expected/partx/partx-delete-all [new file with mode: 0644]
tests/expected/partx/partx-delete-non-existent [new file with mode: 0644]
tests/expected/partx/partx-delete-one [new file with mode: 0644]
tests/expected/partx/partx-delpart [new file with mode: 0644]
tests/expected/partx/partx-detect-parts [new file with mode: 0644]
tests/ts/partx/partx

index a2948c911d85fe123cb67dd9ffc313d91e8182ec..02ca6c3dba217fd07e072fcaf0214113b6dbc03f 100644 (file)
@@ -22,6 +22,8 @@ TS_HELPER_STRUTILS="$top_builddir/test_strutils"
 TS_HELPER_SYSINFO="$top_builddir/test_sysinfo"
 
 # paths to commands
+TS_CMD_ADDPART=${TS_CMD_ADDPART:-"$top_builddir/addpart"}
+TS_CMD_DELPART=${TS_CMD_DELPART:-"$top_builddir/delpart"}
 TS_CMD_BLKID=${TS_CMD_BLKID-"$top_builddir/blkid"}
 TS_CMD_CAL=${TS_CMD_CAL-"$top_builddir/cal"}
 TS_CMD_COLRM=${TS_CMD_COLRM:-"$top_builddir/colrm"}
diff --git a/tests/expected/partx/partx-add-all b/tests/expected/partx/partx-add-all
new file mode 100644 (file)
index 0000000..ce38946
--- /dev/null
@@ -0,0 +1 @@
+partitions added
diff --git a/tests/expected/partx/partx-add-existing b/tests/expected/partx/partx-add-existing
new file mode 100644 (file)
index 0000000..1c281de
--- /dev/null
@@ -0,0 +1 @@
+partx: OK
diff --git a/tests/expected/partx/partx-addpart b/tests/expected/partx/partx-addpart
new file mode 100644 (file)
index 0000000..d86bac9
--- /dev/null
@@ -0,0 +1 @@
+OK
diff --git a/tests/expected/partx/partx-change-by-range b/tests/expected/partx/partx-change-by-range
new file mode 100644 (file)
index 0000000..ba9de05
--- /dev/null
@@ -0,0 +1,2 @@
+partitions deleted
+partitions added
diff --git a/tests/expected/partx/partx-delete-all b/tests/expected/partx/partx-delete-all
new file mode 100644 (file)
index 0000000..ee6da6e
--- /dev/null
@@ -0,0 +1 @@
+partitions deleted
diff --git a/tests/expected/partx/partx-delete-non-existent b/tests/expected/partx/partx-delete-non-existent
new file mode 100644 (file)
index 0000000..1c281de
--- /dev/null
@@ -0,0 +1 @@
+partx: OK
diff --git a/tests/expected/partx/partx-delete-one b/tests/expected/partx/partx-delete-one
new file mode 100644 (file)
index 0000000..da85ea1
--- /dev/null
@@ -0,0 +1 @@
+last partition removed
diff --git a/tests/expected/partx/partx-delpart b/tests/expected/partx/partx-delpart
new file mode 100644 (file)
index 0000000..d86bac9
--- /dev/null
@@ -0,0 +1 @@
+OK
diff --git a/tests/expected/partx/partx-detect-parts b/tests/expected/partx/partx-detect-parts
new file mode 100644 (file)
index 0000000..b24ee94
--- /dev/null
@@ -0,0 +1,3 @@
+ 1    32  33791   33760 16.5M
+ 2 33792  67583   33792 16.5M
+ 3 67584 102399   34816   17M
index f09d96b86c287bea2d7aa8a3510f3cc960669a02..3567cf87b5f1baef52a324ae1d13c83542423a9f 100755 (executable)
 TS_TOPDIR="$(dirname $0)/../.."
 TS_DESC="partitions probing"
 TS_IMGDIR="$TS_TOPDIR/ts/blkid/images-pt"
+PARTS=3
 
 . $TS_TOPDIR/functions.sh
 
 ts_init "$*"
+ts_skip_nonroot
 
 if [ ! -x "$TS_CMD_PARTX" ]; then
        ts_skip "partx disabled"
@@ -42,4 +44,94 @@ for img in $(ls $TS_IMGDIR/*.img.bz2 | sort); do
        ts_finalize_subtest
 done
 
+modprobe --dry-run --quiet scsi_debug
+[ "$?" == 0 ] || ts_skip "missing scsi_debug module"
+
+rmmod scsi_debug &> /dev/null
+modprobe scsi_debug dev_size_mb=50
+[ "$?" == 0 ] || ts_die "Cannot init device"
+
+sleep 3
+
+DEVNAME=$(grep scsi_debug /sys/block/*/device/model | awk -F '/' '{print $4}')
+[ "x${DEVNAME}" == "x" ] && ts_die "Cannot find device"
+
+DEVICE="/dev/${DEVNAME}"
+
+ts_init_subtest "addpart"
+$TS_CMD_ADDPART ${DEVICE} 1 0 1
+[ "$?" == 0 ] && echo OK &>$TS_OUTPUT || ts_die "Unable to add partition"a &>$TS_OUTPUT
+ts_finalize_subtest
+
+sleep 1
+
+ts_init_subtest "delpart"
+$TS_CMD_DELPART ${DEVICE} 1
+[ "$?" == 0 ] && echo OK >> $TS_OUTPUT 2>&1 || ts_die "Unable to remove partition" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
+
+rmmod scsi_debug &> /dev/null
+modprobe scsi_debug dev_size_mb=50 num_parts=$PARTS
+[ "$?" == 0 ] || ts_die "Cannot init device"
+
+sleep 3
+
+DEVNAME=$(grep scsi_debug /sys/block/*/device/model | awk -F '/' '{print $4}')
+[ "x${DEVNAME}" == "x" ] && ts_die "Cannot find device"
+
+DEVICE="/dev/${DEVNAME}"
+
+ts_init_subtest "detect-parts"
+#detect PARTS partitions
+$TS_CMD_PARTX --show --noheadings $DEVICE &> $TS_OUTPUT
+ts_finalize_subtest
+
+ts_init_subtest "delete-all"
+#delete partinfo
+$TS_CMD_PARTX --delete $DEVICE &> $TS_OUTPUT
+[ $? -eq 0 ] && echo "partitions deleted" &> $TS_OUTPUT ||
+    echo "Unable to delete partitions on $DEVICE" &> $TS_OUTPUT
+ls -d "/sys/block/${DEVNAME}/${DEVNAME}*" 2>/dev/null && ts_die
+ts_finalize_subtest
+
+ts_init_subtest "add-all"
+#read DEVICE and restore the partinfo
+$TS_CMD_PARTX --add $DEVICE &> $TS_OUTPUT
+[ $(ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null | wc -l) -eq $PARTS ] &&
+   echo "partitions added" >> $TS_OUTPUT 2>&1  ||
+   echo "Unable to add partitions for $DEVICE" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
+
+sleep 1
+
+ts_init_subtest "delete-one"
+#remove last partition only
+$TS_CMD_PARTX -d --nr -1 $DEVICE >> $TS_OUTPUT 2>&1
+[ $(ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null |
+wc -l) -eq $((PARTS-1)) ] &&
+    echo "last partition removed" >> $TS_OUTPUT 2>&1 ||
+    echo "Unable to remove a partition on $DEVICE" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
+
+ts_init_subtest "delete-non-existent"
+#attempt to remove it again
+$TS_CMD_PARTX -d $PARTS $DEVICE && echo "partx failed: removed non-existing partition" &>$TS_OUTPUT || echo "partx: OK" &>$TS_OUTPUT
+ts_finalize_subtest
+
+ts_init_subtest "add-existing"
+#try adding an existing partition
+$TS_CMD_PARTX -a --nr 1 $DEVICE &>/dev/null && echo "partx failed: re-added an existing partition" &> $TS_OUTPUT || echo "partx: OK" &> $TS_OUTPUT
+ts_finalize_subtest
+
+ts_init_subtest "change-by-range"
+# {-a|-d} --nr 0 should handle all partitions
+$TS_CMD_PARTX -d --nr 0 $DEVICE
+ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null && echo "Unable to delete partitions on $DEVICE" >> $TS_OUTPUT 2>&1 || echo "partitions deleted" >> $TS_OUTPUT 2>&1
+$TS_CMD_PARTX -a --nr 0 $DEVICE
+[ $(ls -d /sys/block/${DEVNAME}/${DEVNAME}* 2>/dev/null | wc -l) -eq $PARTS ] && echo "partitions added" >> $TS_OUTPUT 2>&1 || echo "Failed to add $DEVICE partitions" >> $TS_OUTPUT 2>&1
+ts_finalize_subtest
+
+sleep 3
+rmmod scsi_debug
+
 ts_finalize