Jakub Filak 4d4725
From 244d230f5b4cc75c39c25416c9c8f8d3a3b383d6 Mon Sep 17 00:00:00 2001
Jakub Filak 4d4725
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak 4d4725
Date: Tue, 8 Jul 2014 11:40:53 +0200
Jakub Filak 4d4725
Subject: [PATCH 6/9] testsuite: add tests for abrt-dump-journal-oops
Jakub Filak 4d4725
Jakub Filak 4d4725
Related to rhbz#1059724
Jakub Filak 4d4725
---
Jakub Filak 4d4725
 tests/runtests/aux/test_order                     |   1 +
Jakub Filak 4d4725
 tests/runtests/journal-oops-processing/PURPOSE    |   4 +
Jakub Filak 4d4725
 tests/runtests/journal-oops-processing/runtest.sh | 134 ++++++++++++++++++++++
Jakub Filak 4d4725
 3 files changed, 139 insertions(+)
Jakub Filak 4d4725
 create mode 100644 tests/runtests/journal-oops-processing/PURPOSE
Jakub Filak 4d4725
 create mode 100755 tests/runtests/journal-oops-processing/runtest.sh
Jakub Filak 4d4725
Jakub Filak 4d4725
diff --git a/tests/runtests/aux/test_order b/tests/runtests/aux/test_order
Jakub Filak 4d4725
index 1760ecb..b1b1ab3 100644
Jakub Filak 4d4725
--- a/tests/runtests/aux/test_order
Jakub Filak 4d4725
+++ b/tests/runtests/aux/test_order
Jakub Filak 4d4725
@@ -35,6 +35,7 @@ dbus-elements-handling
Jakub Filak 4d4725
 dbus-configuration
Jakub Filak 4d4725
 bodhi
Jakub Filak 4d4725
 oops-processing
Jakub Filak 4d4725
+journal-oops-processing
Jakub Filak 4d4725
 abrt-python
Jakub Filak 4d4725
 abrt-python3
Jakub Filak 4d4725
 python-bindings
Jakub Filak 4d4725
diff --git a/tests/runtests/journal-oops-processing/PURPOSE b/tests/runtests/journal-oops-processing/PURPOSE
Jakub Filak 4d4725
new file mode 100644
Jakub Filak 4d4725
index 0000000..8c691a0
Jakub Filak 4d4725
--- /dev/null
Jakub Filak 4d4725
+++ b/tests/runtests/journal-oops-processing/PURPOSE
Jakub Filak 4d4725
@@ -0,0 +1,4 @@
Jakub Filak 4d4725
+PURPOSE of oops_processing
Jakub Filak 4d4725
+Description: test for required files in dump directory of koops from journald
Jakub Filak 4d4725
+Author: Jakub Filak <jfilak@redhat.com>
Jakub Filak 4d4725
+
Jakub Filak 4d4725
diff --git a/tests/runtests/journal-oops-processing/runtest.sh b/tests/runtests/journal-oops-processing/runtest.sh
Jakub Filak 4d4725
new file mode 100755
Jakub Filak 4d4725
index 0000000..06d6b75
Jakub Filak 4d4725
--- /dev/null
Jakub Filak 4d4725
+++ b/tests/runtests/journal-oops-processing/runtest.sh
Jakub Filak 4d4725
@@ -0,0 +1,134 @@
Jakub Filak 4d4725
+#!/bin/bash
Jakub Filak 4d4725
+# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
Jakub Filak 4d4725
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jakub Filak 4d4725
+#
Jakub Filak 4d4725
+#   runtest.sh of oops_processing
Jakub Filak 4d4725
+#   Description: test for required files in dump directory of koops from journald
Jakub Filak 4d4725
+#   Author: Jakub Filak <jfilak@redhat.com>
Jakub Filak 4d4725
+#
Jakub Filak 4d4725
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jakub Filak 4d4725
+#
Jakub Filak 4d4725
+#   Copyright (c) 2014 Red Hat, Inc. All rights reserved.
Jakub Filak 4d4725
+#
Jakub Filak 4d4725
+#   This program is free software: you can redistribute it and/or
Jakub Filak 4d4725
+#   modify it under the terms of the GNU General Public License as
Jakub Filak 4d4725
+#   published by the Free Software Foundation, either version 3 of
Jakub Filak 4d4725
+#   the License, or (at your option) any later version.
Jakub Filak 4d4725
+#
Jakub Filak 4d4725
+#   This program is distributed in the hope that it will be
Jakub Filak 4d4725
+#   useful, but WITHOUT ANY WARRANTY; without even the implied
Jakub Filak 4d4725
+#   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Jakub Filak 4d4725
+#   PURPOSE.  See the GNU General Public License for more details.
Jakub Filak 4d4725
+#
Jakub Filak 4d4725
+#   You should have received a copy of the GNU General Public License
Jakub Filak 4d4725
+#   along with this program. If not, see http://www.gnu.org/licenses/.
Jakub Filak 4d4725
+#
Jakub Filak 4d4725
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+. /usr/share/beakerlib/beakerlib.sh
Jakub Filak 4d4725
+. ../aux/lib.sh
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+TEST="journal_oops_processing"
Jakub Filak 4d4725
+PACKAGE="abrt"
Jakub Filak 4d4725
+OOPS_REQUIRED_FILES="kernel uuid duphash
Jakub Filak 4d4725
+pkg_name pkg_arch pkg_epoch pkg_release pkg_version"
Jakub Filak 4d4725
+EXAMPLES_PATH="../../../examples"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+rlJournalStart
Jakub Filak 4d4725
+    rlPhaseStartSetup
Jakub Filak 4d4725
+        check_prior_crashes
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        TmpDir=$(mktemp -d)
Jakub Filak 4d4725
+        # the cut command removes syslog prefix
Jakub Filak 4d4725
+        sed "s/2.6.27.9-159.fc10.i686/<KERNEL_VERSION>/" \
Jakub Filak 4d4725
+            $EXAMPLES_PATH/oops1.test \
Jakub Filak 4d4725
+            | cut -d" " -f6- > \
Jakub Filak 4d4725
+            $TmpDir/oops1.test
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        # the cut command removes syslog prefix
Jakub Filak 4d4725
+        sed "s/2.6.27.9-159.fc10.i686/<KERNEL_VERSION>/" \
Jakub Filak 4d4725
+            $EXAMPLES_PATH/oops_no_reliable_frame.test \
Jakub Filak 4d4725
+            | cut -d" " -f6- > \
Jakub Filak 4d4725
+            $TmpDir/oops_not_reportable_no_reliable_frame.test
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        sed "s/3.0.0-1.fc16.i686/<KERNEL_VERSION>/" \
Jakub Filak 4d4725
+            $EXAMPLES_PATH/oops5.test > \
Jakub Filak 4d4725
+            TmpDir/oops5.test
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        sed "s/3.10.0-33.el7.ppc64/<KERNEL_VERSION>/" \
Jakub Filak 4d4725
+            $EXAMPLES_PATH/oops8_ppc64.test > \
Jakub Filak 4d4725
+            $TmpDir/oops8_ppc64.test
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        sed "s/3.69.69-69.0.fit.s390x/<KERNEL_VERSION>/" \
Jakub Filak 4d4725
+            $EXAMPLES_PATH/oops10_s390x.test > \
Jakub Filak 4d4725
+            $TmpDir/oops10_s390x.test
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        sed "s/3.10.0-41.el7.x86_64/<KERNEL_VERSION>/" \
Jakub Filak 4d4725
+            $EXAMPLES_PATH/oops_unsupported_hw.test > \
Jakub Filak 4d4725
+            $TmpDir/oops_not_reportable_unsupported_hw.test
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        sed "s/2.6.35.6-45.fc14.x86_64/<KERNEL_VERSION>/" \
Jakub Filak 4d4725
+            $EXAMPLES_PATH/oops_broken_bios.test > \
Jakub Filak 4d4725
+            $TmpDir/oops_not_reportable_broken_bios.test
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        pushd $TmpDir
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        rlRun "systemctl stop abrt-oops"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        # The stored cursor is not valid in testing configuration.
Jakub Filak 4d4725
+        rlRun "rm -rf /var/lib/abrt/abrt-dupm-journal-oops.state"
Jakub Filak 4d4725
+    rlPhaseEnd
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+    rlPhaseStartTest OOPS
Jakub Filak 4d4725
+        for oops in oops*.test; do
Jakub Filak 4d4725
+            prepare
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            installed_kernel="$( rpm -q kernel | tail -n1 )"
Jakub Filak 4d4725
+            kernel_version="$( rpm -q --qf "%{version}" $installed_kernel )"
Jakub Filak 4d4725
+            sed -i "s/<KERNEL_VERSION>/$installed_kernel/g" $oops
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            rlRun "ABRT_DUMP_JOURNAL_OOPS_DEBUG_FILTER=\"SYSLOG_IDENTIFIER=abrt_test\" abrt-dump-journal-oops -vvv -f -xD >$oops.log 2>&1 &"
Jakub Filak 4d4725
+            rlRun "ABRT_DUMPER_PID=$!"
Jakub Filak 4d4725
+            rlRun "logger -t abrt_test -f $oops"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            rlRun "sleep 1"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            rlAssertGrep "Found oopses: 1" $oops".log"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            wait_for_hooks
Jakub Filak 4d4725
+            get_crash_path
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            ls $crash_PATH > crash_dir_ls
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            for f in $OOPS_REQUIRED_FILES; do
Jakub Filak 4d4725
+                rlAssertExists "$crash_PATH/$f"
Jakub Filak 4d4725
+            done
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            if [[ "$oops" == *not_reportable* ]]; then
Jakub Filak 4d4725
+                rlAssertExists "$crash_PATH/not-reportable"
Jakub Filak 4d4725
+            else
Jakub Filak 4d4725
+                rlAssertNotExists "$crash_PATH/not-reportable"
Jakub Filak 4d4725
+            fi
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            rlAssertGrep "kernel" "$crash_PATH/pkg_name"
Jakub Filak 4d4725
+            rlAssertGrep "$kernel_version" "$crash_PATH/pkg_version"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            rlRun "abrt-cli rm $crash_PATH" 0 "Remove crash directory"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+            # Kill the dumper with TERM to verify that it can store its state.
Jakub Filak 4d4725
+            # Next time, the dumper should start following the journald from
Jakub Filak 4d4725
+            # the last seen cursor.
Jakub Filak 4d4725
+            rlRun "kill -TERM $ABRT_DUMPER_PID"
Jakub Filak 4d4725
+        done
Jakub Filak 4d4725
+    rlPhaseEnd
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+    rlPhaseStartCleanup
Jakub Filak 4d4725
+        # Do not confuse the system dumper. The stored cursor is invalid in the default configuration.
Jakub Filak 4d4725
+        rlRun "rm -rf /var/lib/abrt/abrt-dupm-journal-oops.state"
Jakub Filak 4d4725
+
Jakub Filak 4d4725
+        rlBundleLogs abrt $(echo *_ls)
Jakub Filak 4d4725
+        rlRun "popd"
Jakub Filak 4d4725
+        rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
Jakub Filak 4d4725
+    rlPhaseEnd
Jakub Filak 4d4725
+    rlJournalPrintText
Jakub Filak 4d4725
+rlJournalEnd
Jakub Filak 4d4725
-- 
Jakub Filak 4d4725
1.9.3
Jakub Filak 4d4725