parent
56c599587d
commit
e8e3e81bc2
@ -1,7 +1,7 @@
|
|||||||
Summary: Enclosure LED Utilities
|
Summary: Enclosure LED Utilities
|
||||||
Name: ledmon
|
Name: ledmon
|
||||||
Version: 0.96
|
Version: 0.96
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: https://github.com/intel/ledmon
|
URL: https://github.com/intel/ledmon
|
||||||
Source0: https://github.com/intel/ledmon/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
Source0: https://github.com/intel/ledmon/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
|
||||||
@ -47,6 +47,9 @@ make
|
|||||||
%{_unitdir}/ledmon.service
|
%{_unitdir}/ledmon.service
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Jun 01 2022 Jan Macku <jamacku@redhat.com> - 0.96-3
|
||||||
|
- Add tests
|
||||||
|
|
||||||
* Wed Jun 01 2022 Jan Macku <jamacku@redhat.com> - 0.96-2
|
* Wed Jun 01 2022 Jan Macku <jamacku@redhat.com> - 0.96-2
|
||||||
- Rename gating.yml to gating.yaml
|
- Rename gating.yml to gating.yaml
|
||||||
|
|
||||||
|
61
tests/ledctl_test/Makefile
Normal file
61
tests/ledctl_test/Makefile
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted
|
||||||
|
# material is made available to anyone wishing to use, modify, copy, or
|
||||||
|
# redistribute it subject to the terms and conditions of the GNU General
|
||||||
|
# Public License v.2.
|
||||||
|
#
|
||||||
|
# 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, write to the Free Software Foundation, Inc., 51
|
||||||
|
# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
#
|
||||||
|
# Author: Xiaowei Li <xiaoli@redhat.com>
|
||||||
|
|
||||||
|
TOPLEVEL_NAMESPACE=kernel
|
||||||
|
|
||||||
|
PACKAGE_NAME=storage/block
|
||||||
|
|
||||||
|
RELATIVE_PATH=ledmon
|
||||||
|
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
|
||||||
|
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
FILES=$(METADATA) tc.sh main.sh Makefile PURPOSE runtest.sh
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
chmod a+x ./runtest.sh
|
||||||
|
chmod a+x ./main.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ *.rpm $(BUILT_FILES)
|
||||||
|
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@touch $(METADATA)
|
||||||
|
@echo "Owner: guazhang <guazhang@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "License: GPL" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Description: ledmon">> $(METADATA)
|
||||||
|
@echo "TestTime: 1h" >> $(METADATA)
|
||||||
|
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
|
||||||
|
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
||||||
|
|
||||||
|
PURPOSE:
|
||||||
|
echo >/dev/null
|
72
tests/ledctl_test/runtest.sh
Executable file
72
tests/ledctl_test/runtest.sh
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source tc.sh || exit 200
|
||||||
|
|
||||||
|
### return /dev/sda
|
||||||
|
function get_disk(){
|
||||||
|
local disk_lists=""
|
||||||
|
local first_disk=""
|
||||||
|
tlog "get disk from local"
|
||||||
|
for i in $(lsblk |grep disk |awk '{print $1}');do
|
||||||
|
disk_lists="$disk_lists $i"
|
||||||
|
done
|
||||||
|
tlog "disk list=$disk_lists"
|
||||||
|
RETURN_STR="$disk_lists"
|
||||||
|
}
|
||||||
|
|
||||||
|
uname -a
|
||||||
|
|
||||||
|
rpm -q ledmon
|
||||||
|
if [[ $? != 0 ]]; then
|
||||||
|
echo "ledmon is not installed" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
>/var/log/ledmon.log
|
||||||
|
>/var/log/ledctl.log
|
||||||
|
|
||||||
|
get_disk
|
||||||
|
disks=$RETURN_STR
|
||||||
|
tlog "disks=$disks"
|
||||||
|
tlog "get the first disk"
|
||||||
|
first_disk=$(echo $disks |awk '{print $1}')
|
||||||
|
if [ $first_disk == "" ];then
|
||||||
|
echo "can not get disk from get_disk function"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
first_disk="/dev/$first_disk"
|
||||||
|
|
||||||
|
tlog "we will force in $first_disk"
|
||||||
|
|
||||||
|
tok "ledctl locate=$first_disk"
|
||||||
|
tok "ledctl locate_off=$first_disk"
|
||||||
|
tok "ledctl locate=$first_disk"
|
||||||
|
tok "ledctl off={ $first_disk }"
|
||||||
|
|
||||||
|
tok "ledctl degraded=$first_disk"
|
||||||
|
tok "ledctl rebuild=$first_disk"
|
||||||
|
tok "ledctl hotspare=$first_disk"
|
||||||
|
tok "ledctl pfa=$first_disk"
|
||||||
|
tok "ledctl failure=$first_disk"
|
||||||
|
tok "ledctl off={ $first_disk }"
|
||||||
|
|
||||||
|
tlog "ledctl on ses "
|
||||||
|
for i in ses_rebuild ses_ifa ses_ica ses_cons_check ses_hotspare ses_rsvd_dev \
|
||||||
|
ses_ok ses_ident ses_rm ses_insert ses_missing ses_dnr ses_devoff ses_fault ses_active ;do
|
||||||
|
tok "ledctl $i=$first_disk --log=/var/log/ledctl.log"
|
||||||
|
# don't sleep after skipped tests
|
||||||
|
if [[ $? != 2 ]]; then
|
||||||
|
sleep 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
tok "ledctl off=$first_disk"
|
||||||
|
|
||||||
|
tlog "ledmon testing"
|
||||||
|
trun "ledmon --log=/var/log/ledmon.log"
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
trun "cat /var/log/ledmon.log"
|
||||||
|
trun "cat /var/log/ledctl.log"
|
||||||
|
|
||||||
|
tend
|
239
tests/ledctl_test/tc.sh
Normal file
239
tests/ledctl_test/tc.sh
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright (C) 2010 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This copyrighted material is made available to anyone wishing to use,
|
||||||
|
# modify, copy, or redistribute it subject to the terms and conditions
|
||||||
|
# of the GNU General Public License v.2.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software Foundation,
|
||||||
|
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
# filename: function
|
||||||
|
|
||||||
|
# USAGE
|
||||||
|
|
||||||
|
test x$LXT_TC = x || return
|
||||||
|
LXT_TC=1
|
||||||
|
|
||||||
|
#
|
||||||
|
# print the current date
|
||||||
|
# usage: d=$(tdate)
|
||||||
|
#
|
||||||
|
tdate ()
|
||||||
|
{
|
||||||
|
date '+%T' 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# print the log information
|
||||||
|
# usage: tlog "hello world" "WARNING"
|
||||||
|
#
|
||||||
|
tlog ()
|
||||||
|
{
|
||||||
|
local msg=$1
|
||||||
|
local log_level=${2:-INFO}
|
||||||
|
local cur_date=$(tdate)
|
||||||
|
|
||||||
|
echo "[$log_level][$cur_date]$msg"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# run the cmd and format the log. return the exitint status of cmd
|
||||||
|
# use the global variables: tSTDOUT and tSTDERR to return the stdout and stderr
|
||||||
|
# usage: trun "ls"
|
||||||
|
# trun "ls"; echo $?
|
||||||
|
# stdout=$tSTDOUT
|
||||||
|
# stderr=$tSTDERR
|
||||||
|
#
|
||||||
|
trun ()
|
||||||
|
{
|
||||||
|
local cmd="$*"
|
||||||
|
|
||||||
|
_trun_ "$cmd"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# verify the execution of command
|
||||||
|
# if the cmd return 0, mark this checkpoint passed and return 0
|
||||||
|
# if not, mark it failed and return 1
|
||||||
|
# usage: tok "ls /"
|
||||||
|
#
|
||||||
|
tok ()
|
||||||
|
{
|
||||||
|
local cmd="$*"
|
||||||
|
_trun_ "$cmd"
|
||||||
|
# skip unsupported devices
|
||||||
|
# see STATUS_NOT_SUPPORTED in ledmon-0.92/src/status.h
|
||||||
|
if test $? -eq 33; then
|
||||||
|
tskip_ "$cmd" ;
|
||||||
|
elif test $? -eq 0; then
|
||||||
|
tpass_ "$cmd" ;
|
||||||
|
else
|
||||||
|
tfail_ "$cmd" ;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# verify the execution of command
|
||||||
|
# if the cmd return 0, will continue to run the script
|
||||||
|
# if not, mark it failes and exit
|
||||||
|
# usage: terr "ls"
|
||||||
|
#
|
||||||
|
terr ()
|
||||||
|
{
|
||||||
|
local cmd="$*"
|
||||||
|
_trun_ "$cmd"
|
||||||
|
if test $? -ne 0; then
|
||||||
|
tfail_ "$cmd" ;
|
||||||
|
tend ;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# exit the program and print the log message
|
||||||
|
# usage: texit "error message" 100
|
||||||
|
# similar to the exception
|
||||||
|
#
|
||||||
|
texit ()
|
||||||
|
{
|
||||||
|
msg=$1
|
||||||
|
err=$2
|
||||||
|
is_null $err && err=1
|
||||||
|
test $err -lt 1 || err=1
|
||||||
|
|
||||||
|
tlog "$msg" "ERROR"
|
||||||
|
exit $2
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# print the test report, cleanup the testing bed and close the testing.
|
||||||
|
# usage: tend
|
||||||
|
#
|
||||||
|
tend ()
|
||||||
|
{
|
||||||
|
local pcount=$(wc -l $tPASS_FILE | awk '{print $1}')
|
||||||
|
local scount=$(wc -l $tSKIP_FILE | awk '{print $1}')
|
||||||
|
local fcount=$(wc -l $tFAIL_FILE | awk '{print $1}')
|
||||||
|
local total=$(( $pcount + $scount + $fcount ))
|
||||||
|
|
||||||
|
echo "#################################Test Report###############################"
|
||||||
|
echo "TOTAL : $total"
|
||||||
|
echo "PASSED : $pcount"
|
||||||
|
echo "SKIPPED : $scount"
|
||||||
|
echo "FAILED : $fcount"
|
||||||
|
cat $tPASS_FILE $tSKIP_FILE $tFAIL_FILE
|
||||||
|
echo "###########################End of running $0########################"
|
||||||
|
|
||||||
|
# cleanup
|
||||||
|
rm -f $tPASS_FILE $tSKIP_FILE $tFAIL_FILE $tRETURN_FILE $tSTDERR_FILE
|
||||||
|
if [[ $fcount > 0 ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# private function
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# print the error message and call stack. return 1
|
||||||
|
#
|
||||||
|
tfail_ ()
|
||||||
|
{
|
||||||
|
local msg=$*
|
||||||
|
tlog "$msg" "ERROR" >>$tFAIL_FILE
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# print the sucessful message. return 0
|
||||||
|
#
|
||||||
|
tpass_ ()
|
||||||
|
{
|
||||||
|
local msg=$*
|
||||||
|
tlog "$msg" "PASS" >> $tPASS_FILE
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
tskip_ ()
|
||||||
|
{
|
||||||
|
local msg=$*
|
||||||
|
tlog "$msg" "SKIP" >> $tSKIP_FILE
|
||||||
|
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
_trun_ ()
|
||||||
|
{
|
||||||
|
local cmd="$1"
|
||||||
|
local cur_date=$(tdate)
|
||||||
|
|
||||||
|
local stdout=$(eval "$cmd" 2>$tSTDERR_FILE; echo $? >$tRETURN_FILE 2>/dev/null)
|
||||||
|
#timeout -- how to set timeout?
|
||||||
|
local exit_status=$(< $tRETURN_FILE)
|
||||||
|
local stderr=$(< $tSTDERR_FILE)
|
||||||
|
local msg=PASS
|
||||||
|
|
||||||
|
[[ $exit_status == "1" ]] && msg=FAIL
|
||||||
|
[[ $exit_status == "33" ]] && msg=SKIP
|
||||||
|
|
||||||
|
tSTDOUT=$stdout
|
||||||
|
tSTDERR=$stderr
|
||||||
|
|
||||||
|
test $tIGNORE_STDOUT -eq 1 && stdout='redirect the stdout to /dev/null'
|
||||||
|
test $tIGNORE_STDERR -eq 1 && stderr='redirect the stderr to /dev/null'
|
||||||
|
|
||||||
|
echo "[$msg][$cur_date][$HOSTNAME]$cmd"
|
||||||
|
echo "STDOUT:"
|
||||||
|
test "x$stdout" = x || echo "$stdout"
|
||||||
|
echo "STDERR:$stderr"
|
||||||
|
echo "RETURN:$exit_status"
|
||||||
|
echo
|
||||||
|
|
||||||
|
return $exit_status
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# setup the testing environment
|
||||||
|
#
|
||||||
|
_tsetup_ ()
|
||||||
|
{
|
||||||
|
|
||||||
|
LXT_TMP_DIR="/mnt/testarea/lxt";
|
||||||
|
|
||||||
|
test -z "$HOSTNAME" && HOSTNAME=$(hostname)
|
||||||
|
test -d "$LXT_TMP_DIR" || mkdir -p "$LXT_TMP_DIR" >& /dev/null || exit 1
|
||||||
|
|
||||||
|
tSTDERR_FILE="$LXT_TMP_DIR/stderr.$$"
|
||||||
|
test -e "$tSTDERR_FILE" || > "$tSTDERR_FILE" || exit 1
|
||||||
|
tRETURN_FILE="$LXT_TMP_DIR/return.$$"
|
||||||
|
test -e "$tRETURN_FILE" || > "$tRETURN_FILE" || exit 1
|
||||||
|
tPASS_FILE="$LXT_TMP_DIR/tc.pass.$$"
|
||||||
|
test -e "$tPASS_FILE" || > "$tPASS_FILE" || exit 1
|
||||||
|
tSKIP_FILE="$LXT_TMP_DIR/tc.skip.$$"
|
||||||
|
test -e "$tSKIP_FILE" || > "$tSKIP_FILE" || exit 1
|
||||||
|
tFAIL_FILE="$LXT_TMP_DIR/tc.fail.$$"
|
||||||
|
test -e "$tFAIL_FILE" || > "$tFAIL_FILE" || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# main
|
||||||
|
#
|
||||||
|
|
||||||
|
# global variables
|
||||||
|
tIGNORE_STDOUT=0
|
||||||
|
tIGNORE_STDERR=0
|
||||||
|
tSTDOUT=
|
||||||
|
tSTDERR=
|
||||||
|
tPASS_FILE=
|
||||||
|
tSKIP_FILE=
|
||||||
|
tFAIL_FILE=
|
||||||
|
|
||||||
|
_tsetup_
|
14
tests/tests.yml
Normal file
14
tests/tests.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
# Tests suitable for classic environment
|
||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-basic
|
||||||
|
tags:
|
||||||
|
- classic
|
||||||
|
tests:
|
||||||
|
- ledctl_test
|
||||||
|
required_packages:
|
||||||
|
- make
|
||||||
|
- which
|
||||||
|
- kmod
|
||||||
|
- e2fsprogs
|
Loading…
Reference in New Issue
Block a user