Add CI tests using the standard test interface
This commit is contained in:
parent
5d5ebcb425
commit
651216ed6a
76
tests/functions_test/Makefile
Normal file
76
tests/functions_test/Makefile
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
# 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: Jakub Krysl <jkrysl@redhat.com>
|
||||||
|
|
||||||
|
# The toplevel namespace within which the test lives.
|
||||||
|
TOPLEVEL_NAMESPACE=kernel
|
||||||
|
|
||||||
|
# The name of the package under test:
|
||||||
|
PACKAGE_NAME=storage
|
||||||
|
|
||||||
|
# The path of the test below the package:
|
||||||
|
RELATIVE_PATH=lvm/device-mapper-persistent-data/thin
|
||||||
|
|
||||||
|
# Version of the Test. Used with make tag.
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
# The combined namespace of the test.
|
||||||
|
export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
|
||||||
|
|
||||||
|
|
||||||
|
# A phony target is one that is not really the name of a file.
|
||||||
|
# It is just a name for some commands to be executed when you
|
||||||
|
# make an explicit request. There are two reasons to use a
|
||||||
|
# phony target: to avoid a conflict with a file of the same
|
||||||
|
# name, and to improve performance.
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
# executables to be built should be added here, they will be generated on the system under test.
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
# data files, .c files, scripts anything needed to either compile the test and/or run it.
|
||||||
|
FILES=$(METADATA) runtest.sh PURPOSE
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
chmod a+x ./runtest.sh
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ *.rpm $(BUILT_FILES)
|
||||||
|
|
||||||
|
# You may need to add other targets e.g. to build executables from source code
|
||||||
|
# Add them here:
|
||||||
|
|
||||||
|
|
||||||
|
# Include Common Makefile
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
# Generate the testinfo.desc here:
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@touch $(METADATA)
|
||||||
|
# Change to the test owner's name
|
||||||
|
@echo "Owner: Jakub Krysl <jkrysl@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "License: GPL" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Description: Testing thin tools provided by device-mapper-persistent-data">> $(METADATA)
|
||||||
|
@echo "TestTime: 1h" >> $(METADATA)
|
||||||
|
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
|
||||||
|
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
|
||||||
|
@echo "RhtsRequires: kernel-kernel-storage-misc-env_setup" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
30
tests/functions_test/PURPOSE
Normal file
30
tests/functions_test/PURPOSE
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#===========================================================================
|
||||||
|
#
|
||||||
|
# PURPOSE file for:
|
||||||
|
# /kernel/storage/lvm/device-mapper-persistent-data/thin
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
# Testing thin tools provided by device-mapper-persistent-data
|
||||||
|
#
|
||||||
|
# Bugs related:
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Author(s):
|
||||||
|
# Jakub Krysl
|
||||||
|
# <jkrysl@redhat.com>
|
||||||
|
#
|
||||||
|
#===========================================================================
|
||||||
|
# Note:
|
||||||
|
# As with some of Storage tests, at the end of the test it will check
|
||||||
|
# for errors on the logs.
|
||||||
|
# This check if implemented on /kernel/storage/include/python_modules
|
||||||
|
# LogChecker.py module
|
||||||
|
#
|
||||||
|
# To avoid Storage tests reporting error that were caused before the test
|
||||||
|
# started to run is recommended to run /kernel/storage/misc/log_checker
|
||||||
|
# just before running this test
|
||||||
|
#===========================================================================
|
||||||
|
# This task takes optional parameters:
|
||||||
|
#
|
||||||
|
#===========================================================================
|
||||||
|
# EndFile
|
1234
tests/functions_test/dmpd_functions.py
Executable file
1234
tests/functions_test/dmpd_functions.py
Executable file
File diff suppressed because it is too large
Load Diff
2368
tests/functions_test/dmpd_library.py
Executable file
2368
tests/functions_test/dmpd_library.py
Executable file
File diff suppressed because it is too large
Load Diff
18
tests/functions_test/runtest.sh
Executable file
18
tests/functions_test/runtest.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright (c) 2017 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: Jakub Krysl <jkrysl@redhat.com>
|
||||||
|
rhts-run-simple-test functions_test ./dmpd_functions.py
|
26
tests/tests.yml
Normal file
26
tests/tests.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
# Tests suitable to run in classic environment
|
||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-beakerlib
|
||||||
|
tags:
|
||||||
|
- classic
|
||||||
|
tests:
|
||||||
|
- tools_not_linked_usr
|
||||||
|
- functions_test
|
||||||
|
required_packages:
|
||||||
|
- findutils # beakerlib needs find command
|
||||||
|
- which # tools_not_linked_usr needs which command
|
||||||
|
|
||||||
|
# Tests suitable to run in container and atomic environments
|
||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-beakerlib
|
||||||
|
tags:
|
||||||
|
- container
|
||||||
|
- atomic
|
||||||
|
tests:
|
||||||
|
- tools_not_linked_usr
|
||||||
|
required_packages:
|
||||||
|
- findutils # beakerlib needs find command
|
||||||
|
- which # tools_not_linked_usr needs which command
|
75
tests/tools_not_linked_usr/Makefile
Normal file
75
tests/tools_not_linked_usr/Makefile
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# 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, see http://www.gnu.org/licenses/.
|
||||||
|
#
|
||||||
|
# Author: Bruno Goncalves <bgoncalv@redhat.com>
|
||||||
|
|
||||||
|
# The toplevel namespace within which the test lives.
|
||||||
|
TOPLEVEL_NAMESPACE=kernel
|
||||||
|
|
||||||
|
# The name of the package under test:
|
||||||
|
PACKAGE_NAME=storage
|
||||||
|
|
||||||
|
# The path of the test below the package:
|
||||||
|
RELATIVE_PATH=lvm/device-mapper-persistent-data/tools_not_linked_usr
|
||||||
|
|
||||||
|
# Version of the Test. Used with make tag.
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
# The combined namespace of the test.
|
||||||
|
export TEST=/$(TOPLEVEL_NAMESPACE)/$(PACKAGE_NAME)/$(RELATIVE_PATH)
|
||||||
|
|
||||||
|
|
||||||
|
# A phony target is one that is not really the name of a file.
|
||||||
|
# It is just a name for some commands to be executed when you
|
||||||
|
# make an explicit request. There are two reasons to use a
|
||||||
|
# phony target: to avoid a conflict with a file of the same
|
||||||
|
# name, and to improve performance.
|
||||||
|
.PHONY: all install download clean
|
||||||
|
|
||||||
|
# executables to be built should be added here, they will be generated on the system under test.
|
||||||
|
BUILT_FILES=
|
||||||
|
|
||||||
|
# data files, .c files, scripts anything needed to either compile the test and/or run it.
|
||||||
|
FILES=$(METADATA) runtest.sh PURPOSE tools_not_linked_usr.py
|
||||||
|
|
||||||
|
run: $(FILES) build
|
||||||
|
./runtest.sh
|
||||||
|
|
||||||
|
build: $(BUILT_FILES)
|
||||||
|
chmod a+x ./runtest.sh
|
||||||
|
chmod a+x ./tools_not_linked_usr.py
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ *.rpm $(BUILT_FILES)
|
||||||
|
|
||||||
|
# You may need to add other targets e.g. to build executables from source code
|
||||||
|
# Add them here:
|
||||||
|
|
||||||
|
|
||||||
|
# Include Common Makefile
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
|
||||||
|
# Generate the testinfo.desc here:
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@touch $(METADATA)
|
||||||
|
# Change to the test owner's name
|
||||||
|
@echo "Owner: Bruno Goncalves <bgoncalv@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "License: GPL" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Description: Make sure tools are not linked to lib under /usr.">> $(METADATA)
|
||||||
|
@echo "TestTime: 1h" >> $(METADATA)
|
||||||
|
@echo "RunFor: $(PACKAGE_NAME)" >> $(METADATA)
|
||||||
|
@echo "Requires: $(PACKAGE_NAME)" >> $(METADATA)
|
||||||
|
|
||||||
|
rhts-lint $(METADATA)
|
13
tests/tools_not_linked_usr/PURPOSE
Normal file
13
tests/tools_not_linked_usr/PURPOSE
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#===========================================================================
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
# Make sure tools are not using any library that is linked to /usr
|
||||||
|
#
|
||||||
|
# Bugs related:
|
||||||
|
#
|
||||||
|
# Author(s):
|
||||||
|
# Bruno Goncalves
|
||||||
|
# <bgoncalv@redhat.com>
|
||||||
|
#
|
||||||
|
#===========================================================================
|
||||||
|
# EndFile
|
18
tests/tools_not_linked_usr/runtest.sh
Executable file
18
tests/tools_not_linked_usr/runtest.sh
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# 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: Bruno Goncalves <bgoncalv@redhat.com>
|
||||||
|
rhts-run-simple-test tools_not_linked_usr ./tools_not_linked_usr.py
|
93
tests/tools_not_linked_usr/tools_not_linked_usr.py
Executable file
93
tests/tools_not_linked_usr/tools_not_linked_usr.py
Executable file
@ -0,0 +1,93 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# 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, see http://www.gnu.org/licenses/.
|
||||||
|
#
|
||||||
|
# Author: Bruno Goncalves <bgoncalv@redhat.com>
|
||||||
|
|
||||||
|
from os import walk
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
|
||||||
|
def run(cmd):
|
||||||
|
print "INFO: Running '%s'..." % cmd
|
||||||
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
|
||||||
|
stdout, stderr = p.communicate()
|
||||||
|
|
||||||
|
retcode = p.returncode
|
||||||
|
output = stdout + stderr
|
||||||
|
print output
|
||||||
|
return retcode, output
|
||||||
|
|
||||||
|
def start_test():
|
||||||
|
|
||||||
|
#if uses any library linked to /usr this my affect the tools during boot
|
||||||
|
print ("INFO: Making sure tools provided by device-mapper-persistent-data "
|
||||||
|
"are not linked to /usr")
|
||||||
|
|
||||||
|
#Paths where we should have no libraries linked from
|
||||||
|
lib_paths = ["/usr/"]
|
||||||
|
|
||||||
|
package = "device-mapper-persistent-data"
|
||||||
|
run("yum install -y %s" % package)
|
||||||
|
#Get all tools that we need to check
|
||||||
|
ret, output = run("rpm -ql %s | grep \"sbin/\"" % package)
|
||||||
|
if ret != 0:
|
||||||
|
print("FAIL: Could not get the tools shipped from %s" % package)
|
||||||
|
return False
|
||||||
|
tools = output.split("\n")
|
||||||
|
|
||||||
|
error = False
|
||||||
|
for tool in tools:
|
||||||
|
if not tool:
|
||||||
|
#skip any blank line
|
||||||
|
continue
|
||||||
|
tool_error = 0
|
||||||
|
for lib_path in lib_paths:
|
||||||
|
print "INFO: Checking if %s is not linked to libraries at %s" % (tool, lib_path)
|
||||||
|
ret, linked_lib = run("ldd %s" % tool)
|
||||||
|
if ret != 0:
|
||||||
|
print("FAIL: Could not list dynamically libraries for %s" % (tool))
|
||||||
|
tool_error += 1
|
||||||
|
else:
|
||||||
|
#The command executed sucessfuly
|
||||||
|
#check if any library linked is from lib_path
|
||||||
|
links = linked_lib.split("\n")
|
||||||
|
for link in links:
|
||||||
|
if re.match(".*%s.*" % lib_path, link):
|
||||||
|
print("FAIL: %s is linked to %s" % (tool, link))
|
||||||
|
tool_error += 1
|
||||||
|
|
||||||
|
if tool_error == 0:
|
||||||
|
print("%s is not linked to %s" % (tool, lib_path))
|
||||||
|
else:
|
||||||
|
#found some error in at least 1 tool
|
||||||
|
error = True
|
||||||
|
|
||||||
|
if error:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
if not start_test():
|
||||||
|
print "FAIL: test failed"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
print "PASS: Test pass"
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user