From 3a396f9ecd3a2356877053d9fcf0861dafe1a8db Mon Sep 17 00:00:00 2001 From: "esakaiev@redhat.com" Date: Tue, 9 Jan 2018 18:20:56 +0200 Subject: [PATCH] Adding tests to the new_tests branch --- tests/README | 31 ++++++++++++ tests/debug-system-binary/Makefile | 64 ++++++++++++++++++++++++ tests/debug-system-binary/PURPOSE | 3 ++ tests/debug-system-binary/cmds | 16 ++++++ tests/debug-system-binary/runtest.sh | 60 ++++++++++++++++++++++ tests/debug-toolset-binary/Makefile | 64 ++++++++++++++++++++++++ tests/debug-toolset-binary/PURPOSE | 3 ++ tests/debug-toolset-binary/cmds | 18 +++++++ tests/debug-toolset-binary/runtest.sh | 71 +++++++++++++++++++++++++++ tests/inventory | 3 ++ tests/tests.yml | 24 +++++++++ 11 files changed, 357 insertions(+) create mode 100644 tests/README create mode 100644 tests/debug-system-binary/Makefile create mode 100644 tests/debug-system-binary/PURPOSE create mode 100644 tests/debug-system-binary/cmds create mode 100755 tests/debug-system-binary/runtest.sh create mode 100644 tests/debug-toolset-binary/Makefile create mode 100644 tests/debug-toolset-binary/PURPOSE create mode 100644 tests/debug-toolset-binary/cmds create mode 100755 tests/debug-toolset-binary/runtest.sh create mode 100755 tests/inventory create mode 100644 tests/tests.yml diff --git a/tests/README b/tests/README new file mode 100644 index 0000000..0a1388a --- /dev/null +++ b/tests/README @@ -0,0 +1,31 @@ +Justification + +Adds tests according to the CI wiki specifically the standard test +interface in the spec. + +The playbook includes Tier1 level test cases that have been tested in +the following contexts and is passing reliably: Classic and +Container. Test logs are stored in the artifacts directory. + +The following steps are used to execute the tests using the standard +test interface: Test environment + +Make sure you have installed packages from the spec + + # rpm -q ansible python2-dnf libselinux-python standard-test-roles + ansible-2.3.2.0-1.fc26.noarch + python2-dnf-2.6.3-11.fc26.noarch + libselinux-python-2.6-7.fc26.x86_64 + standard-test-roles-2.4-1.fc26.noarch + +Run tests for Classic (must be run as root) + + # export ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory) + # ansible-playbook --tags=classic tests.yml + +Run tests for Container (must be run as root) + + # export ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory) + # export TEST_SUBJECTS=docker:docker.io/library/fedora:26 + # ansible-playbook --tags=container tests.yml + diff --git a/tests/debug-system-binary/Makefile b/tests/debug-system-binary/Makefile new file mode 100644 index 0000000..b859911 --- /dev/null +++ b/tests/debug-system-binary/Makefile @@ -0,0 +1,64 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/gdb/Sanity/debug-system-binary +# Description: Debug a system binary. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 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 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/gdb/Sanity/debug-system-binary +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE cmds + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Marek Polacek " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Debug a system binary." >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 5m" >> $(METADATA) + @echo "RunFor: gdb" >> $(METADATA) + @echo "Requires: gdb coreutils coreutils-debuginfo glibc glibc-debuginfo" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/debug-system-binary/PURPOSE b/tests/debug-system-binary/PURPOSE new file mode 100644 index 0000000..8e48920 --- /dev/null +++ b/tests/debug-system-binary/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/gdb/Sanity/debug-system-binary +Description: Debug a system binary. +Author: Marek Polacek diff --git a/tests/debug-system-binary/cmds b/tests/debug-system-binary/cmds new file mode 100644 index 0000000..fdc5030 --- /dev/null +++ b/tests/debug-system-binary/cmds @@ -0,0 +1,16 @@ +sta +si 30 +n 10 +up +n 15 +up +p/x &hextobin +si 10 +up +down +bt +frame 1 +b exit +c +c +q diff --git a/tests/debug-system-binary/runtest.sh b/tests/debug-system-binary/runtest.sh new file mode 100755 index 0000000..ad07d5e --- /dev/null +++ b/tests/debug-system-binary/runtest.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gdb/Sanity/debug-system-binary +# Description: Debug a system binary. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 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 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/bin/rhts-environment.sh || exit 1 +. /usr/lib/beakerlib/beakerlib.sh || exit 1 + +CMD="gdb" +BIN="$(which $CMD)" +export PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN)}" + +PACKAGES="coreutils coreutils-debuginfo glibc glibc-debuginfo" + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm $PACKAGE + for pkg in $PACKAGES; do + rlAssertRpm $pkg + done + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp cmds $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gdb -nx -q -batch -x cmds /bin/echo" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/debug-toolset-binary/Makefile b/tests/debug-toolset-binary/Makefile new file mode 100644 index 0000000..1453d76 --- /dev/null +++ b/tests/debug-toolset-binary/Makefile @@ -0,0 +1,64 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/gdb/Sanity/debug-toolset-binary +# Description: We debug a binary that is delivered via the Toolset. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 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 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/gdb/Sanity/debug-toolset-binary +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE cmds + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Marek Polacek " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: We debug a binary that is delivered via the Toolset." >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 5m" >> $(METADATA) + @echo "RunFor: gdb" >> $(METADATA) + @echo "Requires: gdb coreutils binutils binutils-debuginfo glibc glibc-debuginfo gcc gcc-debuginfo zlib zlib-debuginfo" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/debug-toolset-binary/PURPOSE b/tests/debug-toolset-binary/PURPOSE new file mode 100644 index 0000000..4f9359d --- /dev/null +++ b/tests/debug-toolset-binary/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/gdb/Sanity/debug-toolset-binary +Description: We debug a binary that is delivered via the Toolset. +Author: Marek Polacek diff --git a/tests/debug-toolset-binary/cmds b/tests/debug-toolset-binary/cmds new file mode 100644 index 0000000..9508e2c --- /dev/null +++ b/tests/debug-toolset-binary/cmds @@ -0,0 +1,18 @@ +b main +r +n 10 +si 30 +up +n 15 +watch myname +p/s myname +si 10 +up +down +bt +frame 1 +b xexit +c +c +c +q diff --git a/tests/debug-toolset-binary/runtest.sh b/tests/debug-toolset-binary/runtest.sh new file mode 100755 index 0000000..c0a6527 --- /dev/null +++ b/tests/debug-toolset-binary/runtest.sh @@ -0,0 +1,71 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gdb/Sanity/debug-toolset-binary +# Description: We debug a binary that is delivered via the Toolset. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 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 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. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# We create an empty file `empty.S'. The we run the as(1) to produce +# the `a.out' file and at the same time, we debug the as(1). +# Note that as(1) should come from the Developer Toolset (TM), +# but in fact, it doesn't have to. It should not fail either way. + +# Include Beaker environment +. /usr/bin/rhts-environment.sh || exit 1 +. /usr/lib/beakerlib/beakerlib.sh || exit 1 + +CMD="gdb" +BIN="$(which $CMD)" +export PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN)}" + +PACKAGES="coreutils binutils binutils-debuginfo glibc glibc-debuginfo gcc gcc-debuginfo zlib zlib-debuginfo" + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm $PACKAGE + for pkg in $PACKAGES; do + rlAssertRpm $pkg + done + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp cmds $TmpDir" + rlRun "pushd $TmpDir" + rlRun ": >empty.s" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gdb -nx -q -batch -x cmds --args as empty.s" + rlRun "nm >symbs" + if [ -s symbs ]; then + rlFail "nm should't output any symbols" + rlRun "cat symbs" + fi + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/inventory b/tests/inventory new file mode 100755 index 0000000..b118a5a --- /dev/null +++ b/tests/inventory @@ -0,0 +1,3 @@ +#!/bin/bash +export TEST_DOCKER_EXTRA_ARGS="--privileged" +exec merge-standard-inventory "$@" diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..89d4222 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,24 @@ +--- +# This first play always runs on the local staging system +- hosts: localhost + roles: + - role: standard-test-beakerlib + tags: + - classic + - container + tests: + - debug-toolset-binary + - debug-system-binary + required_packages: + - gdb + - coreutils + - binutils + - binutils-debuginfo + - glibc + - glibc-debuginfo + - gcc + - gcc-debuginfo + - zlib + - zlib-debuginfo + - coreutils-debuginfo + - which