Compare commits
No commits in common. "c8s" and "c8" have entirely different histories.
16
.gitignore
vendored
16
.gitignore
vendored
@ -1,15 +1 @@
|
|||||||
/ksc-0.9.23.tar.gz
|
SOURCES/ksc-1.9.tar.gz
|
||||||
/ksc-0.9.24.tar.gz
|
|
||||||
/ksc-1.0.tar.gz
|
|
||||||
/ksc-1.1.tar.gz
|
|
||||||
/ksc-1.2.tar.gz
|
|
||||||
/ksc-1.3.tar.gz
|
|
||||||
/ksc-1.4.tar.gz
|
|
||||||
/ksc-1.5.tar.gz
|
|
||||||
/ksc-1.6.tar.gz
|
|
||||||
/ksc-1.7.tar.gz
|
|
||||||
/ksc-1.8.tar.gz
|
|
||||||
/ksc-1.8-2.el8.tar.gz
|
|
||||||
/ksc-1.8-3.el8.tar.gz
|
|
||||||
/ksc-1.9-1.el8.tar.gz
|
|
||||||
/ksc-1.9.tar.gz
|
|
||||||
|
1
.ksc.metadata
Normal file
1
.ksc.metadata
Normal file
@ -0,0 +1 @@
|
|||||||
|
27f4308a73e4cfe85dbd122fb7e81b47395371e1 SOURCES/ksc-1.9.tar.gz
|
@ -1,7 +0,0 @@
|
|||||||
--- !Policy
|
|
||||||
product_versions:
|
|
||||||
- rhel-8
|
|
||||||
decision_context: osci_compose_gate
|
|
||||||
rules:
|
|
||||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
|
||||||
|
|
1
sources
1
sources
@ -1 +0,0 @@
|
|||||||
SHA512 (ksc-1.9.tar.gz) = 8e155c89c3fa52975cd8bfa0fb47d1b1e8cdd0560e5b0eb41f71af40912772dc85b33a025c5c9e8b92f84e00dec98581eae6fd28170e7101e7e13949f3c164ce
|
|
@ -1,78 +0,0 @@
|
|||||||
# README
|
|
||||||
|
|
||||||
The following test cases will be considered as a part of `ksc` gating.
|
|
||||||
|
|
||||||
## Installation issues
|
|
||||||
|
|
||||||
1. Check whether Module.symvers has been installed
|
|
||||||
1. Check whether kabi-whitelists package has been installed
|
|
||||||
1. Python Bugzilla interface has been installed
|
|
||||||
1. Expect error when nm is not found in $PATH.
|
|
||||||
|
|
||||||
## Valid uses of `ksc`
|
|
||||||
|
|
||||||
List of tests:
|
|
||||||
|
|
||||||
1. No external symbol required
|
|
||||||
1. Whitelisted symbol use only
|
|
||||||
1. Non-whitelisted symbol use only
|
|
||||||
1. Mixed whitelisted and non-whitelisted symbol use
|
|
||||||
1. Mixed whitelisted and non-whitelisted symbol use with multiple -k arguments
|
|
||||||
1. `ksc` called on 8139, crc32_generic, xor
|
|
||||||
|
|
||||||
Testing will be done as follows:
|
|
||||||
|
|
||||||
1. If applicable, try and build a kernel module usecase.
|
|
||||||
1. Pass kernel module(s) to ksc, record output.
|
|
||||||
1. Using the kabi-tools ksc parser [1], parse ksc output.
|
|
||||||
1. Using the nm tool, uname -i and kabi-whitelist, indepedently compose
|
|
||||||
the dictionary that ksc parser produces on ksc output.
|
|
||||||
1. Check for match.
|
|
||||||
|
|
||||||
Note that this series of tests checks both ksc valid functionality as well as
|
|
||||||
syntax requirements (indeed, should syntax of a ksc report be significantly
|
|
||||||
changed, ksc parser would produce different results).
|
|
||||||
|
|
||||||
[1] http://git.engineering.redhat.com/git/users/ckalina/kabi-greylists-devel.git/tree/src/greylists/ksc.py
|
|
||||||
|
|
||||||
## Submission tests
|
|
||||||
|
|
||||||
Partner RHBZ is used for this purpose.
|
|
||||||
|
|
||||||
1. All of the 'Valid uses of `ksc`' test cases (called w/ -k) will be re-tested
|
|
||||||
here as well to test immediate submission after generating.
|
|
||||||
1. Use any ksc-reports.txt to test submission onto partner RHBZ; in particular
|
|
||||||
test:
|
|
||||||
- failure on invalid product
|
|
||||||
- failure on invalid RHBZ credentials (username, password)
|
|
||||||
- failure on invalid RHBZ API key
|
|
||||||
- correct submission (using the gating-embedded bugzilla-cli tool to
|
|
||||||
download and check details of bug and attachments).
|
|
||||||
|
|
||||||
## Further tests include:
|
|
||||||
|
|
||||||
1. Check whether justification carry-over works within the same ko file.
|
|
||||||
1. Check whether justification carry-over does not happen when different ko
|
|
||||||
file is used.
|
|
||||||
|
|
||||||
## Invalid uses of `ksc`
|
|
||||||
|
|
||||||
1. Expect error when argument arity is not expected (e.g., $ ksc -k, w/o a ko
|
|
||||||
file provided)
|
|
||||||
1. Expect error when passing non-kernel module as a kernel module (-k)
|
|
||||||
1. Expect error when passing a file w/o read permissions (e.g., kernel module,
|
|
||||||
Module.symvers, ...)
|
|
||||||
1. Expect error when passing a non-existent file (e.g., kernel module, ...)
|
|
||||||
1. Expect error when passing a malformed kernel module.
|
|
||||||
1. Expect error when passing a malformed Module.symvers.
|
|
||||||
1. Expect error when passing a ksc-report.txt as a source of justifications.
|
|
||||||
|
|
||||||
## Compatibility Tests
|
|
||||||
|
|
||||||
1. Verify that no options were removed from -h/--help.
|
|
||||||
1. Verify that no options were removed from manpage.
|
|
||||||
|
|
||||||
## Test known bugs
|
|
||||||
|
|
||||||
1. EOFError when piping through ksc
|
|
||||||
|
|
@ -1,89 +0,0 @@
|
|||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Makefile of ksc/sanity
|
|
||||||
# Description: ksc test
|
|
||||||
#
|
|
||||||
# 2019-04-01
|
|
||||||
# Author: Čestmír Kalina <ckalina@redhat.com>
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
#
|
|
||||||
# Copyright (c) 2019 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# 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 version 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.
|
|
||||||
#
|
|
||||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
TENV=_env
|
|
||||||
ifeq ($(PKG_TOP_DIR),)
|
|
||||||
export PKG_TOP_DIR := $(shell p=$$PWD; while :; do \
|
|
||||||
[ -e $$p/env.mk -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
|
|
||||||
export _TOP_DIR := $(shell p=$$PWD; while :; do \
|
|
||||||
[ -d $$p/.git -o -z "$$p" ] && { echo $$p; break; }; p=$${p%/*}; done)
|
|
||||||
-include $(PKG_TOP_DIR)/env.mk
|
|
||||||
endif
|
|
||||||
include $(TENV)
|
|
||||||
ifeq ($(_TOP_DIR),)
|
|
||||||
_TOP_DIR=/mnt/tests/$(TOPLEVEL_NAMESPACE)
|
|
||||||
endif
|
|
||||||
|
|
||||||
export TESTVERSION=1.0
|
|
||||||
|
|
||||||
BUILT_FILES=
|
|
||||||
|
|
||||||
FILES=$(TENV) $(METADATA) Makefile common-symbols.sh common-tests.sh runtest.sh test-ksc-elf.sh test-ksc-exec.sh test-ksc-help.sh test-ksc-invalid-file.sh test-ksc-man.sh
|
|
||||||
|
|
||||||
.PHONY: all install download clean
|
|
||||||
|
|
||||||
run: $(FILES) build
|
|
||||||
( set +o posix; . /usr/bin/rhts_environment.sh; \
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh; \
|
|
||||||
. runtest.sh )
|
|
||||||
|
|
||||||
build: $(BUILT_FILES)
|
|
||||||
test -x runtest.sh || chmod a+x runtest.sh
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -fr *~ $(BUILT_FILES)
|
|
||||||
|
|
||||||
include /usr/share/rhts/lib/rhts-make.include
|
|
||||||
|
|
||||||
$(METADATA): Makefile
|
|
||||||
@echo "Owner: Čestmír Kalina <ckalina@redhat.com>" > $(METADATA)
|
|
||||||
@echo "Name: $(TEST)" >> $(METADATA)
|
|
||||||
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
|
||||||
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
|
||||||
@echo "Description: ksc tests">> $(METADATA)
|
|
||||||
@echo "Type: Regression" >> $(METADATA)
|
|
||||||
@echo "TestTime: 1h" >> $(METADATA)
|
|
||||||
@echo "RunFor: ksc" >> $(METADATA)
|
|
||||||
@echo "Requires: bash" >> $(METADATA)
|
|
||||||
@echo "Requires: coreutils" >> $(METADATA)
|
|
||||||
@echo "Requires: kernel" >> $(METADATA)
|
|
||||||
@echo "Requires: kmod" >> $(METADATA)
|
|
||||||
@echo "Requires: kernel-devel" >> $(METADATA)
|
|
||||||
@echo "Requires: kernel-modules" >> $(METADATA)
|
|
||||||
@echo "Requires: kernel-abi-whitelists" >> $(METADATA)
|
|
||||||
@echo "Requires: xz" >> $(METADATA)
|
|
||||||
@echo "Requires: bzip2" >> $(METADATA)
|
|
||||||
@echo "Requires: gzip" >> $(METADATA)
|
|
||||||
@echo "Requires: $(PACKAGE_NAME) rpm wget" >> $(METADATA)
|
|
||||||
@echo "Priority: Normal" >> $(METADATA)
|
|
||||||
@echo "License: GPLv2" >> $(METADATA)
|
|
||||||
@echo "Confidential: no" >> $(METADATA)
|
|
||||||
@echo "Destructive: no" >> $(METADATA)
|
|
||||||
rhts-lint $(METADATA)
|
|
||||||
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
|||||||
# README
|
|
||||||
|
|
||||||
The following test cases will be considered as a part of `ksc` gating.
|
|
||||||
|
|
||||||
## Installation issues
|
|
||||||
|
|
||||||
1. Check whether Module.symvers has been installed
|
|
||||||
1. Check whether kabi-whitelists package has been installed
|
|
||||||
1. Python Bugzilla interface has been installed
|
|
||||||
1. Expect error when nm is not found in $PATH.
|
|
||||||
|
|
||||||
## Valid uses of `ksc`
|
|
||||||
|
|
||||||
List of tests:
|
|
||||||
|
|
||||||
1. No external symbol required
|
|
||||||
1. Whitelisted symbol use only
|
|
||||||
1. Non-whitelisted symbol use only
|
|
||||||
1. Mixed whitelisted and non-whitelisted symbol use
|
|
||||||
1. Mixed whitelisted and non-whitelisted symbol use with multiple -k arguments
|
|
||||||
1. `ksc` called on 8139, crc32_generic, xor
|
|
||||||
|
|
||||||
Testing will be done as follows:
|
|
||||||
|
|
||||||
1. If applicable, try and build a kernel module usecase.
|
|
||||||
1. Pass kernel module(s) to ksc, record output.
|
|
||||||
1. Using the kabi-tools ksc parser [1], parse ksc output.
|
|
||||||
1. Using the nm tool, uname -i and kabi-whitelist, indepedently compose
|
|
||||||
the dictionary that ksc parser produces on ksc output.
|
|
||||||
1. Check for match.
|
|
||||||
|
|
||||||
Note that this series of tests checks both ksc valid functionality as well as
|
|
||||||
syntax requirements (indeed, should syntax of a ksc report be significantly
|
|
||||||
changed, ksc parser would produce different results).
|
|
||||||
|
|
||||||
[1] http://git.engineering.redhat.com/git/users/ckalina/kabi-greylists-devel.git/tree/src/greylists/ksc.py
|
|
||||||
|
|
||||||
## Submission tests
|
|
||||||
|
|
||||||
Partner RHBZ is used for this purpose.
|
|
||||||
|
|
||||||
1. All of the 'Valid uses of `ksc`' test cases (called w/ -k) will be re-tested
|
|
||||||
here as well to test immediate submission after generating.
|
|
||||||
1. Use any ksc-reports.txt to test submission onto partner RHBZ; in particular
|
|
||||||
test:
|
|
||||||
- failure on invalid product
|
|
||||||
- failure on invalid RHBZ credentials (username, password)
|
|
||||||
- failure on invalid RHBZ API key
|
|
||||||
- correct submission (using the gating-embedded bugzilla-cli tool to
|
|
||||||
download and check details of bug and attachments).
|
|
||||||
|
|
||||||
## Further tests include:
|
|
||||||
|
|
||||||
1. Check whether justification carry-over works within the same ko file.
|
|
||||||
1. Check whether justification carry-over does not happen when different ko
|
|
||||||
file is used.
|
|
||||||
|
|
||||||
## Invalid uses of `ksc`
|
|
||||||
|
|
||||||
1. Expect error when argument arity is not expected (e.g., $ ksc -k, w/o a ko
|
|
||||||
file provided)
|
|
||||||
1. Expect error when passing non-kernel module as a kernel module (-k)
|
|
||||||
1. Expect error when passing a file w/o read permissions (e.g., kernel module,
|
|
||||||
Module.symvers, ...)
|
|
||||||
1. Expect error when passing a non-existent file (e.g., kernel module, ...)
|
|
||||||
1. Expect error when passing a malformed kernel module.
|
|
||||||
1. Expect error when passing a malformed Module.symvers.
|
|
||||||
1. Expect error when passing a ksc-report.txt as a source of justifications.
|
|
||||||
|
|
||||||
## Compatibility Tests
|
|
||||||
|
|
||||||
1. Verify that no options were removed from -h/--help.
|
|
||||||
1. Verify that no options were removed from manpage.
|
|
||||||
|
|
||||||
## Test known bugs
|
|
||||||
|
|
||||||
1. EOFError when piping through ksc
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
|||||||
#This file was generated automatically,do not manually change it.
|
|
||||||
export TOPLEVEL_NAMESPACE=kernel
|
|
||||||
export PKG_NAMESPACE=kernel/general
|
|
||||||
export RELATIVE_PATH=ksc/sanity
|
|
||||||
export PACKAGE=general
|
|
||||||
export PACKAGE_NAME=general
|
|
||||||
export PKG_LIST=
|
|
||||||
export TEST=/kernel/general/ksc/sanity
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Get all symbols from ksc result's nonwhitelisted sections
|
|
||||||
function ksc_report_symbols_nonwhitelisted() {
|
|
||||||
sed -n 's/^.*(\([^)]*\))$/\1/p' ~/ksc-result.txt \
|
|
||||||
| sort \
|
|
||||||
| uniq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get all symbols from ksc result's whitelisted sections
|
|
||||||
function ksc_report_symbols_whitelisted() {
|
|
||||||
sed -n '/^\[WHITELISTUSAGE\]$/,/^\[NONWHITELISTUSAGE\]$/p' \
|
|
||||||
~/ksc-result.txt \
|
|
||||||
| grep -v '^\[' \
|
|
||||||
| sort \
|
|
||||||
| uniq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get all symbols from ksc result
|
|
||||||
function ksc_report_symbols_all() {
|
|
||||||
{
|
|
||||||
ksc_report_symbols_whitelisted
|
|
||||||
ksc_report_symbols_nonwhitelisted
|
|
||||||
} | sort | uniq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get undefined symbols in all argument-provided ko files
|
|
||||||
function ko_get_undefined() {
|
|
||||||
echo -e ${@/%/\\n} \
|
|
||||||
| xargs -I KO nm -u KO \
|
|
||||||
| awk '{print $(NF);}' \
|
|
||||||
| sort \
|
|
||||||
| uniq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get defined symbols in all argument-provided ko files
|
|
||||||
function ko_get_defined() {
|
|
||||||
echo -e ${@/%/\\n} \
|
|
||||||
| xargs -I KO nm --defined-only KO \
|
|
||||||
| awk '{print $(NF);}' \
|
|
||||||
| sort \
|
|
||||||
| uniq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get all undefined symbols for the group; i.e., symbols defined in one
|
|
||||||
# ko and undefined in another will be ignored; this captures ksc behaviour
|
|
||||||
# when used w/ multiple -k options.
|
|
||||||
function ko_get_group_undefined() {
|
|
||||||
comm -23 <(ko_get_undefined "$@") <(ko_get_defined "$@")
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get all symbols present in kABI whitelist
|
|
||||||
function kabi_whitelists_symbols() {
|
|
||||||
grep -h '^[[:space:]]' /lib/modules/kabi-current/* \
|
|
||||||
| tr -d '\t' \
|
|
||||||
| sort \
|
|
||||||
| uniq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get all symbols present in Module.symvers
|
|
||||||
function get_module_symvers_symbols() {
|
|
||||||
awk '{print $2;}' /usr/src/kernels/$(uname -r)/Module.symvers \
|
|
||||||
| sort \
|
|
||||||
| uniq
|
|
||||||
}
|
|
@ -1,148 +0,0 @@
|
|||||||
if test -z "$MANUAL"
|
|
||||||
then
|
|
||||||
export COLOR_NC=
|
|
||||||
export COLOR_WHITE=
|
|
||||||
export COLOR_BLACK=
|
|
||||||
export COLOR_BLUE=
|
|
||||||
export COLOR_LIGHT_BLUE=
|
|
||||||
export COLOR_GREEN=
|
|
||||||
export COLOR_LIGHT_GREEN=
|
|
||||||
export COLOR_CYAN=
|
|
||||||
export COLOR_LIGHT_CYAN=
|
|
||||||
export COLOR_RED=
|
|
||||||
export COLOR_LIGHT_RED=
|
|
||||||
export COLOR_PURPLE=
|
|
||||||
export COLOR_LIGHT_PURPLE=
|
|
||||||
export COLOR_BROWN=
|
|
||||||
export COLOR_YELLOW=
|
|
||||||
export COLOR_GRAY=
|
|
||||||
export COLOR_LIGHT_GRAY=
|
|
||||||
else
|
|
||||||
export COLOR_NC='\e[0m'
|
|
||||||
export COLOR_WHITE='\e[1;37m'
|
|
||||||
export COLOR_BLACK='\e[0;30m'
|
|
||||||
export COLOR_BLUE='\e[0;34m'
|
|
||||||
export COLOR_LIGHT_BLUE='\e[1;34m'
|
|
||||||
export COLOR_GREEN='\e[0;32m'
|
|
||||||
export COLOR_LIGHT_GREEN='\e[1;32m'
|
|
||||||
export COLOR_CYAN='\e[0;36m'
|
|
||||||
export COLOR_LIGHT_CYAN='\e[1;36m'
|
|
||||||
export COLOR_RED='\e[0;31m'
|
|
||||||
export COLOR_LIGHT_RED='\e[1;31m'
|
|
||||||
export COLOR_PURPLE='\e[0;35m'
|
|
||||||
export COLOR_LIGHT_PURPLE='\e[1;35m'
|
|
||||||
export COLOR_BROWN='\e[0;33m'
|
|
||||||
export COLOR_YELLOW='\e[1;33m'
|
|
||||||
export COLOR_GRAY='\e[0;30m'
|
|
||||||
export COLOR_LIGHT_GRAY='\e[0;37m'
|
|
||||||
fi
|
|
||||||
|
|
||||||
function pass()
|
|
||||||
{
|
|
||||||
if ! test -z "$MANUAL"
|
|
||||||
then
|
|
||||||
echo -en " $COLOR_GRAY$(printf "%0.s-" {1..35})"
|
|
||||||
echo -en "[ ${COLOR_GREEN}PASS ]"
|
|
||||||
echo -e "$COLOR_GRAY$(printf "%0.s-" {1..36})$COLOR_NC"
|
|
||||||
else
|
|
||||||
rlPass
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function fail()
|
|
||||||
{
|
|
||||||
if ! test -z "$MANUAL"
|
|
||||||
then
|
|
||||||
echo -en " $COLOR_GRAY$(printf "%0.s-" {1..35})"
|
|
||||||
echo -en "[ ${COLOR_RED}FAIL ]"
|
|
||||||
echo -e "$COLOR_GRAY$(printf "%0.s-" {1..36})$COLOR_NC"
|
|
||||||
else
|
|
||||||
rlFail
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function print_test_case()
|
|
||||||
{
|
|
||||||
if test -z "$MANUAL"
|
|
||||||
then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
local msg=" $COLOR_GRAY[${COLOR_BLUE}TEST $1$COLOR_GRAY]"
|
|
||||||
eval msg="\$msg\$(printf "%0.s-" {1..$[80-${#msg}+${#COLOR_BLUE}+2*${#COLOR_GRAY}]})"
|
|
||||||
echo -e "$msg$COLOR_NC"
|
|
||||||
}
|
|
||||||
|
|
||||||
function print_description()
|
|
||||||
{
|
|
||||||
desc=()
|
|
||||||
eval desc=\(\"\${DESCRIPTION_$1[@]}\"\)
|
|
||||||
for desc_line in "${desc[@]}"
|
|
||||||
do
|
|
||||||
echo " $desc_line"
|
|
||||||
done
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Perform a test
|
|
||||||
#
|
|
||||||
# $1 test function
|
|
||||||
#
|
|
||||||
function run_test()
|
|
||||||
{
|
|
||||||
rlPhaseStartTest "$1"
|
|
||||||
|
|
||||||
if test $# -eq 0 -o -z $1
|
|
||||||
then
|
|
||||||
rlFail "ERROR: Expected test name to be passed to run_test" \
|
|
||||||
"function." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local stdout_log="$2"
|
|
||||||
local stderr_log="$3"
|
|
||||||
|
|
||||||
if test -z $stdout_log -o ! -e $stdout_log
|
|
||||||
then
|
|
||||||
rlFail "ERROR: Test inconsistency, STDOUT log file missing or" \
|
|
||||||
"non-existent." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z $stderr_log -o ! -e $stderr_log
|
|
||||||
then
|
|
||||||
rlFail "ERROR: Test inconsistency, STDERR log file missing or" \
|
|
||||||
"non-existent." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo > $stdout_log
|
|
||||||
echo > $stderr_log
|
|
||||||
|
|
||||||
print_test_case "$1"
|
|
||||||
|
|
||||||
$1 "$stdout_log" "$stderr_log"
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
print_description "$1"
|
|
||||||
|
|
||||||
if test $ret -eq 0
|
|
||||||
then
|
|
||||||
pass
|
|
||||||
else
|
|
||||||
fail
|
|
||||||
|
|
||||||
echo "STDOUT {"
|
|
||||||
cat $stdout_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
echo "STDERR {"
|
|
||||||
cat $stderr_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
rlPhaseEnd
|
|
||||||
}
|
|
@ -1,179 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
function cleanup()
|
|
||||||
{
|
|
||||||
rlPhaseStartCleanup
|
|
||||||
rm -rf "${TEMPFILES[@]}"
|
|
||||||
rlPhaseEnd
|
|
||||||
}
|
|
||||||
trap cleanup 0 1 9 15
|
|
||||||
|
|
||||||
# --- Globals -----------------------------------------------------------------
|
|
||||||
|
|
||||||
SCRIPT_ROOT="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
|
|
||||||
|
|
||||||
# A list of temporary files; used by cleanup to delete on signals 0 1 9 15.
|
|
||||||
TEMPFILES=()
|
|
||||||
|
|
||||||
# A list of dependencies to include.
|
|
||||||
INCLUDES=()
|
|
||||||
|
|
||||||
# A list of files containing test definitions.
|
|
||||||
# These are auto-discovered using test-*.sh pattern.
|
|
||||||
TESTS_FILES=()
|
|
||||||
|
|
||||||
# A list of tests to run.
|
|
||||||
# These are automatically added by test files.
|
|
||||||
TESTS=()
|
|
||||||
|
|
||||||
# The following can be overriden to force a particular setting.
|
|
||||||
|
|
||||||
# RPM_BIN_DIR is not defined
|
|
||||||
# RPM_DATA_DIR is not defined
|
|
||||||
# KSC_BIN is not defined
|
|
||||||
# MOD_PATH is not defined
|
|
||||||
# MANUAL is not defined
|
|
||||||
|
|
||||||
# --- Initialization ----------------------------------------------------------
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo " :: ksc Gating for RHEL"
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Requires: restraint-rhts
|
|
||||||
. /usr/bin/rhts-environment.sh || exit 1
|
|
||||||
# Requires: beakerlib
|
|
||||||
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
|
||||||
|
|
||||||
INCLUDES+=("$SCRIPT_ROOT/common-tests.sh")
|
|
||||||
INCLUDES+=("$SCRIPT_ROOT/common-symbols.sh")
|
|
||||||
|
|
||||||
TESTS_FILES+=("$SCRIPT_ROOT/test-"*".sh")
|
|
||||||
|
|
||||||
# --- bkr journal -------------------------------------------------------------
|
|
||||||
|
|
||||||
rlJournalStart
|
|
||||||
|
|
||||||
rlPhaseStartSetup
|
|
||||||
|
|
||||||
# --- Load dependencies -------------------------------------------------------
|
|
||||||
|
|
||||||
for path in ${INCLUDES[@]} ${TESTS_FILES[@]}
|
|
||||||
do
|
|
||||||
if ! test -r $path
|
|
||||||
then
|
|
||||||
rlFail "Path \`$path' does not exist or is not readable"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
source $path && {
|
|
||||||
rlPass "File \`$(basename "$path")' loaded."
|
|
||||||
} || {
|
|
||||||
rlFail "Unable to load \`$path'."
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
done
|
|
||||||
|
|
||||||
# --- Temporary files ---------------------------------------------------------
|
|
||||||
|
|
||||||
echo ":: Initialization: Temporary files."
|
|
||||||
|
|
||||||
__stdout_log=$(mktemp -p /tmp ksc-test-stdout.XXXXX)
|
|
||||||
TEMPFILES+=("$__stdout_log")
|
|
||||||
|
|
||||||
__stderr_log=$(mktemp -p /tmp ksc-test-stderr.XXXXX)
|
|
||||||
TEMPFILES+=("$__stderr_log")
|
|
||||||
|
|
||||||
# --- Evaluate RPM-specific macros --------------------------------------------
|
|
||||||
# This is required not to hardcode ksc install location should %{_bindir} and
|
|
||||||
# %{_datadir} be changed.
|
|
||||||
|
|
||||||
echo ":: Initialization: Evaluating RPM macros."
|
|
||||||
|
|
||||||
if test -z "$RPM_BIN_DIR"
|
|
||||||
then
|
|
||||||
RPM_BIN_DIR="$(rpm --eval '%{_bindir}')"
|
|
||||||
echo " * RPM %{_bindir} determined as: $RPM_BIN_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$RPM_DATA_DIR"
|
|
||||||
then
|
|
||||||
RPM_DATA_DIR="$(rpm --eval '%{_datadir}')"
|
|
||||||
echo " * RPM %{_datadir} determined as: $RPM_DATA_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --- Determine ksc location --------------------------------------------------
|
|
||||||
|
|
||||||
if test -z "$KSC_BIN"
|
|
||||||
then
|
|
||||||
KSC_BIN="$RPM_BIN_DIR/ksc"
|
|
||||||
echo ":: ksc path determined as: $KSC_BIN"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$MOD_PATH"
|
|
||||||
then
|
|
||||||
if [[ -L /lib && -d /lib ]]; then
|
|
||||||
MOD_PATH=/usr/lib/modules/$(uname -r)/
|
|
||||||
else
|
|
||||||
MOD_PATH=/lib/modules/$(uname -r)/
|
|
||||||
fi
|
|
||||||
echo ":: Module path determined as: $MOD_PATH"
|
|
||||||
fi
|
|
||||||
|
|
||||||
rlPass "Initialization passed."
|
|
||||||
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
# --- Run tests ---------------------------------------------------------------
|
|
||||||
|
|
||||||
overall_status=0
|
|
||||||
for test in ${TESTS[@]}
|
|
||||||
do
|
|
||||||
run_test $test "$__stdout_log" "$__stderr_log"
|
|
||||||
if test $? -gt 0
|
|
||||||
then
|
|
||||||
overall_status=1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
rlPhaseStartTest
|
|
||||||
|
|
||||||
if test $overall_status -gt 0
|
|
||||||
then
|
|
||||||
rlFail "Some tests failed."
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
rlPass "All tests passed."
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
|
|
||||||
rlPhaseEnd
|
|
||||||
|
|
||||||
rlJournalPrintText
|
|
||||||
|
|
||||||
rlJournalEnd
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
# -- Future tests: pylint/flake8 on the python source itself
|
|
||||||
|
|
||||||
# First, we need to detect whether or not $KSC_BIN is a shell launcher or
|
|
||||||
# the python script itself. As of this moment, $KSC_BIN is a shell launcher,
|
|
||||||
# however, currently there is no real reason for that and might be changed
|
|
||||||
# in the future. To prepare for this alternative, and to be backwards compat
|
|
||||||
# if the change occurs, detect whether $KSC_BIN is the python executable script
|
|
||||||
# or a shell launcher and obtain path to the python script in the latter case.
|
|
||||||
|
|
||||||
KSC_PY=""
|
|
||||||
case $(file "$KSC_BIN" | awk -F'[,:] ' '{print $2;}') in
|
|
||||||
"POSIX shell script")
|
|
||||||
# We're dealing with a launcher, get the python script itself
|
|
||||||
KSC_PY="$(grep -o "[^ ]*ksc.py" "$KSC_BIN")"
|
|
||||||
;;
|
|
||||||
"Python script")
|
|
||||||
# We're dealing with a python script
|
|
||||||
KSC_PY="$KSC_BIN"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# TODO: Call flake8/pylint here
|
|
||||||
|
|
@ -1,176 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# ksc gating
|
|
||||||
#
|
|
||||||
# verify that ksc launcher is marked executable
|
|
||||||
#
|
|
||||||
|
|
||||||
SYMBOL_CHECKS=()
|
|
||||||
|
|
||||||
SYMBOL_CHECKS+=(symbol_check_1)
|
|
||||||
DESCRIPTION_symbol_check_1=(
|
|
||||||
"Verify that all symbols in whitelisted and nonwhitelisted sections"
|
|
||||||
"of the just produced ksc-report.txt are marked as undefined by nm,"
|
|
||||||
"discounting symbols defined within the set of modules used."
|
|
||||||
)
|
|
||||||
function symbol_check_1() {
|
|
||||||
test -z "$(comm -13 <(ksc_report_symbols_all) \
|
|
||||||
<(ko_get_group_undefined))"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
SYMBOL_CHECKS+=(symbol_check_2)
|
|
||||||
DESCRIPTION_symbol_check_2=(
|
|
||||||
"Verify that all symbols in whitelisted and nonwhitelisted sections"
|
|
||||||
"of the just produced ksc-report.txt come from Module.symvers only."
|
|
||||||
)
|
|
||||||
function symbol_check_2() {
|
|
||||||
test -z "$(comm -23 <(ksc_report_symbols_all) \
|
|
||||||
<(get_module_symvers_symbols))"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
SYMBOL_CHECKS+=(symbol_check_3)
|
|
||||||
DESCRIPTION_symbol_check_3=(
|
|
||||||
"Verify that all whitelisted symbols are present on kabi whitelist."
|
|
||||||
)
|
|
||||||
function symbol_check_3() {
|
|
||||||
test -z "$(comm -13 <(kabi_whitelists_symbols) \
|
|
||||||
<(ksc_report_symbols_whitelisted))"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
function find_ko()
|
|
||||||
{
|
|
||||||
if test -z $1
|
|
||||||
then
|
|
||||||
# TODO ERRROR
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local count=$1
|
|
||||||
local matches=()
|
|
||||||
|
|
||||||
if test $count -gt 0
|
|
||||||
then
|
|
||||||
matches+=($(
|
|
||||||
find "$MOD_PATH" -type f -iname "*.ko.*" \
|
|
||||||
| head -n $count \
|
|
||||||
| xargs -I MATCH bash -c '
|
|
||||||
case $(echo MATCH | grep -Eo "[^.]+$") in
|
|
||||||
xz) unxz MATCH;;
|
|
||||||
bz2) bzip2 -d MATCH;;
|
|
||||||
gz) gunzip MATCH;;
|
|
||||||
*) echo MATCH; exit 0;;
|
|
||||||
esac;
|
|
||||||
echo MATCH | sed "s/\.[^.]*$//g";'
|
|
||||||
))
|
|
||||||
fi
|
|
||||||
|
|
||||||
# make sure some matches were found
|
|
||||||
if test ${#matches[@]} -eq 0
|
|
||||||
then
|
|
||||||
# TODO ERROR
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# and that they are in fact readable
|
|
||||||
for match in ${matches[@]}
|
|
||||||
do
|
|
||||||
if test -z $match -o ! -r $match
|
|
||||||
then
|
|
||||||
# TODO ERRROR
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ${matches[@]}
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function common_ksc_elf_ko()
|
|
||||||
{
|
|
||||||
local test_name="$1"
|
|
||||||
local stdout_log="$2"
|
|
||||||
local stderr_log="$3"
|
|
||||||
local count="$4"
|
|
||||||
shift 4
|
|
||||||
|
|
||||||
local ko=($(find_ko $count))
|
|
||||||
|
|
||||||
eval DESCRIPTION_$test_name+=\(\"\"\)
|
|
||||||
eval DESCRIPTION_$test_name+=\(\"Test used the following modules:\"\)
|
|
||||||
for mod in ${ko[@]}
|
|
||||||
do
|
|
||||||
mod_rel="$(realpath --relative-to="$MOD_PATH" $ko)"
|
|
||||||
eval DESCRIPTION_$test_name+=\(\"\${mod_rel/\#/ - }\"\)
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -f ~/ksc-result.txt
|
|
||||||
"$KSC_BIN" ${ko[@]/#/-k } >> $stdout_log 2>> $stderr_log
|
|
||||||
|
|
||||||
if test $? -gt 0
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: $KSC_BIN returned w/ non-zero return code when" \
|
|
||||||
"presented w/ valid kernel module."
|
|
||||||
|
|
||||||
echo "STDOUT {"
|
|
||||||
cat $stdout_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
echo "STDERR {"
|
|
||||||
cat $stderr_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -s ~/ksc-result.txt
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: ~/ksc-result.txt was not created or is empty."
|
|
||||||
|
|
||||||
echo "STDOUT {"
|
|
||||||
cat $stdout_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
echo "STDERR {"
|
|
||||||
cat $stderr_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
TESTS+=(test_ksc_elf_ko_single ${SYMBOL_CHECKS[@]})
|
|
||||||
|
|
||||||
DESCRIPTION_test_ksc_elf_ko_single=(
|
|
||||||
"Verify that ksc processes valid ELF kernel module. This amounts to"
|
|
||||||
"checking that ~/ksc-result.txt is created and that ksc terminates"
|
|
||||||
"w/ non-zero error code."
|
|
||||||
)
|
|
||||||
|
|
||||||
function test_ksc_elf_ko_single()
|
|
||||||
{
|
|
||||||
common_ksc_elf_ko test_ksc_elf_ko_single $@ 1
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
TESTS+=(test_ksc_elf_ko_mul)
|
|
||||||
|
|
||||||
DESCRIPTION_test_ksc_elf_ko_mul=(
|
|
||||||
"Verify that ksc processes multiple valid ELF kernel modules. This"
|
|
||||||
"amounts to checking that ~/ksc-result.txt is created and that ksc"
|
|
||||||
"terminates w/ non-zero error code."
|
|
||||||
)
|
|
||||||
|
|
||||||
function test_ksc_elf_ko_mul()
|
|
||||||
{
|
|
||||||
common_ksc_elf_ko test_ksc_elf_ko_mul $@ 2
|
|
||||||
return $?
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
#
|
|
||||||
# ksc gating
|
|
||||||
#
|
|
||||||
# verify that ksc is executable
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
TESTS+=(test_ksc_executable)
|
|
||||||
|
|
||||||
DESCRIPTION_test_ksc_executable=(
|
|
||||||
"Verify that ksc is executable."
|
|
||||||
)
|
|
||||||
|
|
||||||
function test_ksc_executable()
|
|
||||||
{
|
|
||||||
local stdout_log="$1"
|
|
||||||
local stderr_log="$2"
|
|
||||||
shift 2
|
|
||||||
|
|
||||||
if ! test -x "$KSC_BIN"
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: $KSC_BIN either does not exist or is not" \
|
|
||||||
"executable!" >&2
|
|
||||||
ls -l "$KSC_BIN" >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
@ -1,56 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
#
|
|
||||||
# ksc gating
|
|
||||||
#
|
|
||||||
# verify that ksc -h (--help) provides usage and terminated w/ non-zero error
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
TESTS+=(test_ksc_help)
|
|
||||||
|
|
||||||
DESCRIPTION_test_ksc_help=(
|
|
||||||
"Verify that ksc -h (--help) provides usage and terminated w/"
|
|
||||||
"non-zero error."
|
|
||||||
)
|
|
||||||
|
|
||||||
function test_ksc_help()
|
|
||||||
{
|
|
||||||
local stdout_log="$1"
|
|
||||||
local stderr_log="$2"
|
|
||||||
shift 2
|
|
||||||
|
|
||||||
for arg in -h --help
|
|
||||||
do
|
|
||||||
echo > $stdout_log
|
|
||||||
echo > $stderr_log
|
|
||||||
|
|
||||||
echo "# Calling $KSC_BIN $arg" >> $stdout_log
|
|
||||||
"$KSC_BIN" $arg >> $stdout_log 2>> $stderr_log
|
|
||||||
|
|
||||||
if test $? -gt 0
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: $KSC_BIN $arg failed with non-zero" \
|
|
||||||
"return code. Expected zero."
|
|
||||||
|
|
||||||
echo "STDOUT {"
|
|
||||||
cat $stdout_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
echo "STDERR {"
|
|
||||||
cat $stderr_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -s "$stdout_log" -a ! -s "$stderr_log"
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: $KSC_BIN $arg produced no data." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
|
||||||
return 0
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
#
|
|
||||||
# ksc gating
|
|
||||||
#
|
|
||||||
# verify that ksc fails when presented w/ non-existent path
|
|
||||||
#
|
|
||||||
|
|
||||||
TESTS+=(test_ksc_invalid_file)
|
|
||||||
|
|
||||||
DESCRIPTION_test_ksc_invalid_file=(
|
|
||||||
"Verify that ksc fails when presented w/ non-existent path."
|
|
||||||
)
|
|
||||||
|
|
||||||
function test_ksc_invalid_file()
|
|
||||||
{
|
|
||||||
local stdout_log="$1"
|
|
||||||
local stderr_log="$2"
|
|
||||||
shift 2
|
|
||||||
|
|
||||||
local non_exist_file="/tmp/$RANDOM"
|
|
||||||
while test -e $non_exist_file
|
|
||||||
do
|
|
||||||
non_exist_file=$non_exist_file$RANDOM
|
|
||||||
done
|
|
||||||
|
|
||||||
"$KSC_BIN" -k "$non_exist_file" >> $stdout_log 2>> $stderr_log
|
|
||||||
|
|
||||||
if test $? -eq 0 -a ! -e "$non_exist_file"
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: $KSC_BIN returned w/ zero return code when" \
|
|
||||||
"presented w/ non-existent file."
|
|
||||||
|
|
||||||
echo "STDOUT {"
|
|
||||||
cat $stdout_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
echo "STDERR {"
|
|
||||||
cat $stderr_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
#
|
|
||||||
# ksc gating
|
|
||||||
#
|
|
||||||
# verify that ksc manpage exists and is nonempty
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
TESTS+=(test_ksc_manpage)
|
|
||||||
|
|
||||||
DESCRIPTION_test_ksc_manpage=(
|
|
||||||
"Verify that ksc manpage exists and is nonempty."
|
|
||||||
)
|
|
||||||
|
|
||||||
function test_ksc_manpage()
|
|
||||||
{
|
|
||||||
local stdout_log="$1"
|
|
||||||
local stderr_log="$2"
|
|
||||||
shift 2
|
|
||||||
|
|
||||||
LC_ALL=en_US.UTF-8 man -P cat ksc > $stdout_log 2> $stderr_log
|
|
||||||
|
|
||||||
if test $? -gt 0
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "$? ERROR: man ksc failed with non-zero" \
|
|
||||||
"return code. Expected zero."
|
|
||||||
|
|
||||||
echo "STDOUT {"
|
|
||||||
cat $stdout_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
echo "STDERR {"
|
|
||||||
cat $stderr_log
|
|
||||||
echo "}"
|
|
||||||
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test ! -s "$stdout_log"
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: man ksc produced no data on stdout." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -s "$stderr_log"
|
|
||||||
then
|
|
||||||
echo
|
|
||||||
echo "ERROR: man ksc produced data on stderr." >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
- hosts: localhost
|
|
||||||
tags:
|
|
||||||
- classic
|
|
||||||
roles:
|
|
||||||
- role: standard-test-beakerlib
|
|
||||||
tests:
|
|
||||||
- sanity
|
|
||||||
required_packages:
|
|
||||||
- bash
|
|
||||||
- coreutils
|
|
||||||
- kernel
|
|
||||||
- kernel-devel
|
|
||||||
- kernel-modules
|
|
||||||
- kernel-abi-whitelists
|
|
||||||
- xz
|
|
||||||
- bzip2
|
|
||||||
- gzip
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user