#1 Add CI tests using the standard test interface
Merged 2 years ago by tmraz. Opened 2 years ago by bgoncalv.
rpms/ bgoncalv/libgcrypt libgcrypt-tests  into  master

@@ -0,0 +1,71 @@ 

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   Makefile of /CoreOS/libgcrypt/smoke-test

+ #   Description: Test calls upstream test suite.

+ #   Author: Ondrej Moris <omoris@redhat.com>

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   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 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=/CoreOS/libgcrypt/smoke-test

+ export TESTVERSION=1.0

+ 

+ BUILT_FILES=

+ 

+ FILES=$(METADATA) runtest.sh Makefile PURPOSE

+ 

+ .PHONY: all install download clean

+ 

+ run: $(FILES) build

+ 	./runtest.sh

+ 

+ build: $(BUILT_FILES)

+ 	chmod a+x runtest.sh

+ 

+ clean:

+ 	rm -f *~ $(BUILT_FILES)

+ 

+ 

+ include /usr/share/rhts/lib/rhts-make.include

+ 

+ $(METADATA): Makefile

+ 	@echo "Owner:           Ondrej Moris <omoris@redhat.com>" > $(METADATA)

+ 	@echo "Name:            $(TEST)" >> $(METADATA)

+ 	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)

+ 	@echo "Path:            $(TEST_DIR)" >> $(METADATA)

+ 	@echo "Description:     Test calls upstream test suite." >> $(METADATA)

+ 	@echo "Type:            Sanity" >> $(METADATA)

+ 	@echo "TestTime:        15m" >> $(METADATA)

+ 	@echo "RunFor:          libgcrypt" >> $(METADATA)

+ 	@echo "Requires:        libgcrypt" >> $(METADATA)

+ 	@echo "Requires:        nfs-utils" >> $(METADATA)

+ 	@echo "Requires:        rpm-build" >> $(METADATA)

+ 	@echo "Requires:        gawk" >> $(METADATA)

+ 	@echo "Requires:        gcc-c++ fipscheck" >> $(METADATA)

+ 	@echo "Requires:        libgpg-error-devel yum-utils wget" >> $(METADATA)

+ 	@echo "Requires:        pkgconfig texinfo libselinux-utils" >> $(METADATA)

+ 	@echo "Releases:        -RHEL3 -RHEL4" >> $(METADATA)

+ 	@echo "Priority:        Normal" >> $(METADATA)

+ 	@echo "Architectures:   i386 x86_64 s390x ia64" >> $(METADATA)	

+ 	@echo "License:         GPLv2" >> $(METADATA)

+ 	@echo "Confidential:    no" >> $(METADATA)

+ 	@echo "Destructive:     no" >> $(METADATA)

+ 

+ 	rhts-lint $(METADATA)

@@ -0,0 +1,3 @@ 

+ PURPOSE of /CoreOS/libgcrypt/Sanity/smoke-test

+ Description: Test calls upstream test suite.

+ Author: Ondrej Moris <omoris@redhat.com>

@@ -0,0 +1,71 @@ 

+ #!/bin/bash

+ # vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   runtest.sh of /CoreOS/libgcrypt/smoke-test

+ #   Description: Test calls upstream test suite.

+ #   Author: Ondrej Moris <omoris@redhat.com>

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   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 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 rhts environment

+ #. /usr/bin/rhts-environment.sh

+ . /usr/share/beakerlib/beakerlib.sh

+ 

+ PACKAGE="libgcrypt"

+ 

+ rlJournalStart

+ 

+     rlPhaseStartSetup

+         TmpDir=`mktemp -d`

+         rlAssertRpm $PACKAGE

+         rlFileBackup --clean "/etc/gcrypt/fips_enabled"

+         rlRun "pushd $TmpDir" 0

+         rlFetchSrcForInstalled $PACKAGE

+         rlRun "rpm -ihv `ls *.rpm`" 0

+         if grep '1' /proc/sys/crypto/fips_enabled; then

+             rlRun "echo '1' > /etc/gcrypt/fips_enabled" 0

+         fi

+     rlPhaseEnd

+ 

+     rlPhaseStartTest

+         TOPDIR=`rpm --eval %_topdir`

+         rlRun "pushd $TOPDIR" 0

+         rlRun "rm -rf BUILD/libgcrypt-*" 0-255

+         rlRun "rpmbuild -vv -bc SPECS/libgcrypt.spec" 0

+         rlRun "pushd BUILD/libgcrypt-*" 0

+         rlRun "fipshmac src/.libs/libgcrypt.so.??" 0

+         rlRun "make check > $TmpDir/make_check.out" 0

+         rlRun "popd" 0

+         rlRun "popd" 0

+         rlRun "grep \"All [0-9]\+ tests passed\" $TmpDir/make_check.out" 0 \

+             "All tests passed"

+         rlRun "cat $TmpDir/make_check.out" 0

+     rlPhaseEnd

+ 

+     rlPhaseStartCleanup

+         rlRun "popd" 0

+         rlRun "rm -r $TmpDir" 0

+         rlFileRestore

+     rlPhaseEnd

+ 

+ rlJournalPrintText

+ rlJournalEnd

file added
+21

@@ -0,0 +1,21 @@ 

+ - hosts: localhost

+   tags:

+   - classic

+   - container

+   roles:

+   - role: standard-test-beakerlib

+     tests:

+     - smoke-test

+     required_packages:

+     - fipscheck

+     - gawk

+     - gcc-c++

+     - libgcrypt

+     - libgpg-error-devel

+     - libselinux-utils

+     - nfs-utils

+     - pkgconfig

+     - rpm-build

+     - texinfo

+     - wget

+     - yum-utils

Adds tests according to the CI wiki [0] specifically the standard test interface in the spec [1].

The playbook includes Tier1 level test cases that have been tested in the following contexts and is passing reliably: Atomic Host, Docker, and Classic.
Test logs are stored in the Artifacts directory.

The following steps are used to execute the tests using the standard test interface:

  • Atomic
    sudo ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory) TEST_SUBJECTS=../atomic.qcow2 TEST_ARTIFACTS=$PWD/artifacts ansible-playbook --tags atomic tests.yml

  • Docker
    sudo ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory) TEST_SUBJECTS=docker:docker.io/library/fedora:26 TEST_ARTIFACTS=$PWD/artifacts ansible-playbook --tags container tests.yml

  • Classic
    sudo ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory) TEST_SUBJECTS="" TEST_ARTIFACTS=$PWD/artifacts ansible-playbook --tags classic tests.yml

Test Logs: (If you you would like a pointer to the complete log, I can include that as well)

  • Atomic

    Test does not run on Atomic

  • Docker

    <snip>
    TASK [standard-test-beakerlib : Execute beakerlib tests] *****
    changed: [5853522f574caf09d461ef97b118236779ef2fb96443854a9dc3ad60f8ef4e10] => (item=smoke-test)

    TASK [standard-test-beakerlib : Make the master test summary log artifact] *
    changed: [5853522f574caf09d461ef97b118236779ef2fb96443854a9dc3ad60f8ef4e10] => (item=smoke-test)

    TASK [standard-test-beakerlib : Pull out the logs] *****
    changed: [5853522f574caf09d461ef97b118236779ef2fb96443854a9dc3ad60f8ef4e10]

    TASK [standard-test-beakerlib : Check the results] *****
    changed: [5853522f574caf09d461ef97b118236779ef2fb96443854a9dc3ad60f8ef4e10]

    PLAY RECAP ***********
    5853522f574caf09d461ef97b118236779ef2fb96443854a9dc3ad60f8ef4e10 : ok=16 changed=11 unreachable=0 failed=0

    Test results:

    PASS smoke-test

  • Classic

    <snip>
    ==> default: TASK [standard-test-beakerlib : Execute beakerlib tests] ***
    ==> default: changed: [localhost] => (item=smoke-test)
    ==> default:
    ==> default: TASK [standard-test-beakerlib : Make the master test summary log artifact] **
    ==> default: changed: [localhost] => (item=smoke-test)
    ==> default:
    ==> default: TASK [standard-test-beakerlib : Pull out the logs]
    *****
    ==> default: changed: [localhost]
    ==> default:
    ==> default: TASK [standard-test-beakerlib : Check the results]
    *****
    ==> default: changed: [localhost]
    ==> default:
    ==> default: PLAY [localhost]
    *********
    ==> default:
    ==> default: TASK [Gathering Facts]
    *********
    ==> default: ok: [localhost]
    ==> default:
    ==> default: PLAY RECAP
    *********
    *
    ==> default: localhost : ok=16 changed=12 unreachable=0 failed=0
    ==> default: ++ '[' 0 -ne 0 ']'
    ==> default: ++ cat /root/libgcrypt/artifacts/test.log
    ==> default: PASS smoke-test
    ==> default: ++ grep -ve '^PASS' /root/libgcrypt/artifacts/test.log
    ==> default: PASS: all tests passed.
    ==> default: ++ '[' 1 -eq 1 ']'
    ==> default: ++ echo 'PASS: all tests passed.'
    ==> default: ++ exit 0

[0] https://fedoraproject.org/wiki/CI
[1] https://fedoraproject.org/wiki/Changes/InvokingTests

Pull-Request has been merged by tmraz

2 years ago