SCSI device blacklisting seems to be a tricky subject, with lots of potential for messing up the selection algorithm. This adds a test for catching regressions here. Signed-off-by: Hannes Reinecke <hare@xxxxxxxx> --- tests/scsi/001 | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/scsi/001.out | 10 ++++++++ 2 files changed, 79 insertions(+) create mode 100644 tests/scsi/001 create mode 100644 tests/scsi/001.out diff --git a/tests/scsi/001 b/tests/scsi/001 new file mode 100644 index 0000000..374a458 --- /dev/null +++ b/tests/scsi/001 @@ -0,0 +1,69 @@ +#!/bin/bash +# +# Regression test for scsi device blacklisting +# +# Copyright (C) 2017 Hannes Reinecke, SUSE Linux GmbH +# +# This program 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, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +DESCRIPTION="SCSI device blacklisting" + +QUICK=1 + +CHECK_DMESG=0 + +requires() { + if modinfo scsi_debug | grep -q inq_vendor ; then + return 0 + fi + return 1 +} + +test() { + local inq vendor model host dev blacklist + + echo "Running ${TEST_NAME}" + + for inq in \ + " " \ + "AAAAAAAABBBBBBBBBBBBBBBB" \ + "HITACHI OPEN-V " \ + " Scanner " \ + "Inateck " \ + "Promise STEX " \ + "HITA OPEN-V " \ + "ABCD Scanner " ; do + vendor=${inq:0:8} + model=${inq:8:16} + modprobe scsi_debug inq_vendor="$vendor" inq_product="$model" + host=$(lsscsi -H | sed -n 's/.\([0-9]*\).*scsi_debug/\1/p') + if [ -z "$host" ] ; then + echo "Test failed, scsi_debug could not be loaded" + return 1 + fi + dev=$(lsscsi | grep $host | sed -n 's/.*\/dev\/\(sd[a-z]*\).*/\1/p') + if [ -z "$dev" ] ; then + echo "Test failed, SCSI device not found" + rmmod scsi_debug + return 1 + fi + vendor=$(cat /sys/block/$dev/device/vendor) + model=$(cat /sys/block/$dev/device/model) + blacklist=$(cat /sys/block/$dev/device/blacklist) + echo "$vendor $model $blacklist" + rmmod scsi_debug + done + echo "Test complete" + return 0 +} diff --git a/tests/scsi/001.out b/tests/scsi/001.out new file mode 100644 index 0000000..64db97c --- /dev/null +++ b/tests/scsi/001.out @@ -0,0 +1,10 @@ +Running scsi/001 + 0x0 +AAAAAAAA BBBBBBBBBBBBBBBB 0x0 +HITACHI OPEN-V 0x20000 + Scanner 0x1 +Inateck 0x0 +Promise STEX 0x40 +HITA OPEN-V 0x0 +ABCD Scanner 0x0 +Test complete -- 1.8.5.6