Skip to content

Commit 67db1aa

Browse files
authored
Merge pull request #1430 from evgenyz/rpm_tests_offline
Add "offline" mode tests for RPM-related probes
2 parents 51d6efd + e4607f2 commit 67db1aa

35 files changed

+584
-167
lines changed

docs/developer/developer.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ After building the library you might want to run library self-checks. To do
148148
that you need to have these additional packages installed:
149149

150150
----
151-
wget lua which procps-ng initscripts chkconfig sendmail bzip2
151+
wget lua which procps-ng initscripts chkconfig sendmail bzip2 rpm-build
152152
----
153153

154154
and it is also required to have `sendmail` service running on the system:

tests/probes/CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ add_subdirectory("isainfo")
1212
add_subdirectory("maskattr")
1313
add_subdirectory("password")
1414
add_subdirectory("process58")
15-
add_subdirectory("rpminfo")
16-
add_subdirectory("rpmverify")
17-
add_subdirectory("rpmverifyfile")
18-
add_subdirectory("rpmverifypackage")
15+
add_subdirectory("rpm")
1916
add_subdirectory("runlevel")
2017
add_subdirectory("selinuxboolean")
2118
add_subdirectory("shadow")

tests/probes/rpm/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
add_subdirectory("rpminfo")
2+
add_subdirectory("rpmverify")
3+
add_subdirectory("rpmverifyfile")
4+
add_subdirectory("rpmverifypackage")

tests/probes/rpm/foo.spec

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Summary: Test package foo
2+
Name: foo
3+
Version: 1.0
4+
Release: 1
5+
Group: Testing
6+
License: GPLv2+
7+
BuildArch: noarch
8+
9+
%description
10+
Simple rpm test package (%{name}).
11+
12+
%prep
13+
mkdir -p %{buildroot}%{_sysconfdir}
14+
echo "%{name}" > %{buildroot}%{_sysconfdir}/%{name}
15+
16+
%files
17+
%{_sysconfdir}/%{name}

tests/probes/rpm/foobar.spec

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Summary: Test package foobar
2+
Name: foobar
3+
Version: 1.0
4+
Release: 1
5+
Group: Testing
6+
License: GPLv2+
7+
BuildArch: noarch
8+
9+
%description
10+
Simple rpm test package (%{name}).
11+
12+
%prep
13+
mkdir -p %{buildroot}%{_sysconfdir}
14+
echo "%{name}" > %{buildroot}%{_sysconfdir}/%{name}
15+
16+
%files
17+
%{_sysconfdir}/%{name}

tests/probes/rpm/rpm_common.sh

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright 2015 Red Hat Inc., Durham, North Carolina.
4+
# All Rights Reserved.
5+
#
6+
# OpenScap Probes Test Suite.
7+
8+
RPMBASE="${builddir}/tests/probes/rpm"
9+
RPMTEST="${RPMBASE}/root"
10+
RPMBUILD="${RPMBASE}/build"
11+
12+
13+
function rpm_build {
14+
require "rpmbuild" || return 255
15+
if [ ! -f ${RPMBUILD}/RPMS/noarch/foo-1.0-1.noarch.rpm ]; then
16+
rpmbuild --define "_buildhost testhost" --define "_tmppath ${RPMTEST}/tmp" --define "_topdir ${RPMBUILD}" -ba ${srcdir}/../foo.spec
17+
fi
18+
if [ ! -f ${RPMBUILD}/RPMS/noarch/foobar-1.0-1.noarch.rpm ]; then
19+
rpmbuild --define "_buildhost testhost" --define "_tmppath ${RPMTEST}/tmp" --define "_topdir ${RPMBUILD}" -ba ${srcdir}/../foobar.spec
20+
fi
21+
}
22+
23+
function rpm_prepare_offline {
24+
rm -rf ${RPMTEST}
25+
mkdir -p ${RPMTEST}/usr/lib/rpm
26+
cp /usr/lib/rpm/rpmrc ${RPMTEST}/usr/lib/rpm/rpmrc
27+
cp /usr/lib/rpm/macros ${RPMTEST}/usr/lib/rpm/macros
28+
rpm_build
29+
rpm -i ${RPMBUILD}/RPMS/noarch/foobar-1.0-1.noarch.rpm --badreloc --relocate="/etc=${RPMTEST}/etc/" --dbpath="${RPMTEST}/var/lib/rpm/"
30+
rpm -i ${RPMBUILD}/RPMS/noarch/foo-1.0-1.noarch.rpm --badreloc --relocate="/etc=${RPMTEST}/etc/" --dbpath="${RPMTEST}/var/lib/rpm/"
31+
set_chroot_offline_test_mode "$RPMTEST"
32+
}
33+
34+
function rpm_cleanup_offline {
35+
unset_chroot_offline_test_mode
36+
rm -rf ${RPMTEST}
37+
}
38+
39+
function rpm_query {
40+
require "rpm" || return 255
41+
if [ -d "$OSCAP_PROBE_ROOT" ]; then
42+
DB="--dbpath=$OSCAP_PROBE_ROOT/var/lib/rpm/"
43+
fi
44+
rpm $DB --qf "%{$2}\n" -q $1 | head -
45+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
if(ENABLE_PROBES_LINUX)
22
add_oscap_test("test_probes_rpminfo.sh")
3+
add_oscap_test("test_probes_rpminfo_offline.sh")
34
endif()

tests/probes/rpminfo/test_probes_rpminfo.xml.sh renamed to tests/probes/rpm/rpminfo/rpminfo.xml.sh

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
11
#!/usr/bin/env bash
22

33
RPM_A_NAME=$1
4-
RPM_B_NAME=$2
5-
6-
RPM_A_ARCH=`rpm --qf "%{ARCH}" -q $RPM_A_NAME`
7-
RPM_B_ARCH=`rpm --qf "%{ARCH}" -q $RPM_B_NAME`
8-
9-
RPM_A_VERSION=`rpm --qf "%{VERSION}" -q $RPM_A_NAME`
10-
RPM_B_VERSION=`rpm --qf "%{VERSION}" -q $RPM_B_NAME`
11-
12-
RPM_A_RELEASE=`rpm --qf "%{RELEASE}" -q $RPM_A_NAME`
13-
RPM_B_RELEASE=`rpm --qf "%{RELEASE}" -q $RPM_B_NAME`
4+
RPM_A_ARCH=$2
5+
RPM_A_VERSION=$3
6+
RPM_A_RELEASE=$4
7+
8+
RPM_B_NAME=$5
9+
RPM_B_ARCH=$6
10+
RPM_B_VERSION=$7
11+
RPM_B_RELEASE=$8
1412

1513
cat <<EOF
1614
<?xml version="1.0"?>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright 2009 Red Hat Inc., Durham, North Carolina.
4+
# All Rights Reserved.
5+
#
6+
# OpenScap Probes Test Suite.
7+
#
8+
# Created on: Nov 30, 2009
9+
#
10+
# Authors:
11+
# Peter Vrabec, <[email protected]>
12+
# David Niemoller
13+
# Ondrej Moris, <[email protected]>
14+
15+
. $builddir/tests/test_common.sh
16+
. $srcdir/../rpm_common.sh
17+
18+
set -e -o pipefail
19+
20+
21+
function test_probes_rpminfo {
22+
probecheck "rpminfo" || return 255
23+
require "rpm" || return 255
24+
25+
local ret_val=0;
26+
local DF="test_probes_rpminfo.xml"
27+
local RF="results.xml"
28+
29+
rm -f $RF
30+
31+
RPM_A_NAME=$1
32+
RPM_B_NAME=$2
33+
RPM_A_ARCH=`rpm_query $RPM_A_NAME ARCH`
34+
RPM_A_VERSION=`rpm_query $RPM_A_NAME VERSION`
35+
RPM_A_RELEASE=`rpm_query $RPM_A_NAME RELEASE`
36+
RPM_B_ARCH=`rpm_query $RPM_B_NAME ARCH`
37+
RPM_B_VERSION=`rpm_query $RPM_B_NAME VERSION`
38+
RPM_B_RELEASE=`rpm_query $RPM_B_NAME RELEASE`
39+
40+
bash ${srcdir}/rpminfo.xml.sh $RPM_A_NAME $RPM_A_ARCH $RPM_A_VERSION $RPM_A_RELEASE $RPM_B_NAME $RPM_B_ARCH $RPM_B_VERSION $RPM_B_RELEASE > $DF
41+
$OSCAP oval eval --results $RF $DF
42+
43+
if [ -f $RF ]; then
44+
verify_results "def" $DF $RF 13 && verify_results "tst" $DF $RF 200
45+
ret_val=$?
46+
else
47+
ret_val=1
48+
fi
49+
50+
rm -f $RF $DF
51+
52+
return $ret_val
53+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright 2009 Red Hat Inc., Durham, North Carolina.
4+
# All Rights Reserved.
5+
#
6+
# OpenScap Probes Test Suite.
7+
#
8+
# Created on: Nov 30, 2009
9+
#
10+
# Authors:
11+
# Peter Vrabec, <[email protected]>
12+
# David Niemoller
13+
# Ondrej Moris, <[email protected]>
14+
15+
. $builddir/tests/test_common.sh
16+
. $srcdir/rpminfo_common.sh
17+
18+
set -e -o pipefail
19+
20+
require "rpm" || return 255
21+
A_NAME=`rpm --qf "%{NAME}\n" -qa | sort | uniq -u | sed -n '1p'`
22+
B_NAME=`rpm --qf "%{NAME}\n" -qa | sort | uniq -u | sed -n '2p'`
23+
24+
25+
test_init
26+
27+
test_run "rpminfo probe test" test_probes_rpminfo $A_NAME $B_NAME
28+
29+
test_exit

0 commit comments

Comments
 (0)