From ccf4f02e57a1138dc6d8c5dc4717f88333fc6f67 Mon Sep 17 00:00:00 2001 From: Bruno Goncalves Date: Jul 24 2019 12:11:06 +0000 Subject: add support to archive logs using beakerlib functions beakerlib provides rlBundleLogs and rlFileSubmit functions to store files Add support so the usage of this function will save the files to artifacts Related to https://pagure.io/standard-test-roles/issue/35 https://github.com/beakerlib/beakerlib/wiki/man --- diff --git a/roles/standard-test-beakerlib/files/run-beakerlib-test b/roles/standard-test-beakerlib/files/run-beakerlib-test index 6a538b0..30d6680 100755 --- a/roles/standard-test-beakerlib/files/run-beakerlib-test +++ b/roles/standard-test-beakerlib/files/run-beakerlib-test @@ -44,7 +44,7 @@ eval set -- "$opt" while [[ $# -gt 0 ]]; do case "$1" in -t|--test) - STR_BKR_TEST="$2" + export STR_BKR_TEST="$2" shift 2 ;; -w|--workdir) @@ -52,7 +52,7 @@ while [[ $# -gt 0 ]]; do shift 2 ;; -a|--artifactsdir) - STR_ARTIFACTS_DIR="$2" + export STR_ARTIFACTS_DIR="$2" shift 2 ;; --timeout) diff --git a/roles/standard-test-beakerlib/files/str-beakerlib-submit-log b/roles/standard-test-beakerlib/files/str-beakerlib-submit-log new file mode 100644 index 0000000..f055315 --- /dev/null +++ b/roles/standard-test-beakerlib/files/str-beakerlib-submit-log @@ -0,0 +1,23 @@ +#!/usr/bin/bash -e + +# Purpose: Script used by beakerlib role to save a file to standard-test-roles artifacts +# the file is saved under test case name +# +# The script expects $STR_BKR_TEST and $STR_ARTIFACTS_DIR variables to be set +# This script should be called passing the file as parameter: str-beakerlib-submit-log <$file> +# File path could be full path or relative path to where beakerlib functions (rlFileSubmit and rlBundleLogs) are called + +source /usr/share/beakerlib/beakerlib.sh + +if [ -z "$STR_BKR_TEST" ] || [ -z "$STR_ARTIFACTS_DIR" ]; then + rlLogError "STR_BKR_TEST and STR_ARTIFACTS_DIR are required by $0" + exit 1 +fi + +rlLogInfo "Copying $2 to ${STR_ARTIFACTS_DIR}/${STR_BKR_TEST}" + +if [[ ! -d ${STR_ARTIFACTS_DIR}/${STR_BKR_TEST} ]];then + mkdir -p ${STR_ARTIFACTS_DIR}/${STR_BKR_TEST} +fi + +cp -f "${2}" ${STR_ARTIFACTS_DIR}/${STR_BKR_TEST}/ diff --git a/roles/standard-test-beakerlib/tasks/main.yml b/roles/standard-test-beakerlib/tasks/main.yml index 7d99091..5b60a25 100644 --- a/roles/standard-test-beakerlib/tasks/main.yml +++ b/roles/standard-test-beakerlib/tasks/main.yml @@ -49,6 +49,7 @@ with_fileglob: - "rhts-environment.sh" - "rhts-run-simple-test" + - "str-beakerlib-submit-log" - block: - name: Run beakerlib tests @@ -60,7 +61,10 @@ - "{{ tests }}" - "{{ filter_tests }}" environment: - BEAKERLIB_LIBRARY_PATH: "{{ beakerlib_libraries_path }}" + - BEAKERLIB_LIBRARY_PATH: "{{ beakerlib_libraries_path }}" + # BEAKERLIB_COMMAND_SUBMIT_LOG is a variable used to redefine the script used to store files + # when rlFileSubmit or rlBundleLogs are called + - BEAKERLIB_COMMAND_SUBMIT_LOG: str-beakerlib-submit-log always: # Can't go in block. See diff --git a/tests/beakerlib.yml b/tests/beakerlib.yml index 84c2d91..1ace566 100644 --- a/tests/beakerlib.yml +++ b/tests/beakerlib.yml @@ -66,3 +66,23 @@ - import_tasks: shared-tasks/verify_error_test.yml - import_tasks: shared-tasks/artifacts_test_env.yml - import_tasks: shared-tasks/artifacts_test_runner.yml + +# Make sure the beakerlib functions to save logs work well +- hosts: localhost + tags: + - atomic + - classic + - container + roles: + - role: standard-test-beakerlib + tests: + - test-beakerlib-submit-log + tasks: + - name: "Check if {{artifacts}}/test-beakerlib-submit-log/test1.log was created properly on test runner" + shell: "ls {{artifacts}}/test-beakerlib-submit-log/test1.log" + delegate_to: localhost + - name: "Check if {{artifacts}}/test-beakerlib-submit-log/tmp-tests.tar.gz was created properly on test runner" + shell: "ls {{artifacts}}/test-beakerlib-submit-log/tmp-tests.tar.gz" + delegate_to: localhost + - import_tasks: shared-tasks/artifacts_test_env.yml + - import_tasks: shared-tasks/artifacts_test_runner.yml diff --git a/tests/test-beakerlib-submit-log/runtest.sh b/tests/test-beakerlib-submit-log/runtest.sh new file mode 100644 index 0000000..a3fe5b1 --- /dev/null +++ b/tests/test-beakerlib-submit-log/runtest.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="beakerlib" + +rlJournalStart + rlPhaseStartTest "beakerlbi submit logs test" + # Create some files and then store them on artifacts + rlRun "echo test1 > test1.log" + rlRun "echo test2 > test2.log" + rlFileSubmit test1.log + rlBundleLogs tests test1.log test2.log + rlPhaseEnd +rlJournalPrintText +rlJournalEnd