Adds tests according to the CI
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. Test logs are stored in the artifacts directory. The following steps are used to execute the tests using the standard test interface: Test enveronment Make sure you have installed packages from the spec ``` ansible-2.4.1.0-2.fc28.noarch python2-dnf-2.7.5-1.fc28.noarch libselinux-python-2.7-2.fc28.x86_64 standard-test-roles-2.5-1.fc28.noarch ``` Run tests for Classic Snip of the example test run for Classic tests: ``` :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Duration: 0s :: Duration: 0s :: Assertions: 2 good, 0 bad :: Assertions: 2 good, 0 bad :: RESULT: PASS :: RESULT: PASS :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Test :: Test :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ 15:49:17 ] :: [ LOG ] :: Starting libcap tests ... :: [ 15:49:17 ] :: [ LOG ] :: Starting libcap tests ... :: [ 15:49:17 ] :: [ BEGIN ] :: Running '/usr/bin/test-libcap' [==========] Running 1 test(s). [ RUN ] test_drop_cap_net_raw [ OK ] test_drop_cap_net_raw [==========] 1 test(s) run. [ PASSED ] 1 test(s). :: [ 15:49:17 ] :: [ PASS ] :: Command '/usr/bin/test-libcap' (Expected 0, got 0) :: [ 15:49:17 ] :: [ PASS ] :: Command '/usr/bin/test-libcap' (Expected 0, got 0) :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Duration: 0s :: Duration: 0s :: Assertions: 1 good, 0 bad :: Assertions: 1 good, 0 bad :: RESULT: PASS :: RESULT: PASS ```
This commit is contained in:
parent
b9b09f2bf4
commit
931be7aaf4
46
tests/sanity-tests/Makefile
Normal file
46
tests/sanity-tests/Makefile
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
#
|
||||||
|
# Makefile of /CoreOS/libcap
|
||||||
|
# Description: Test if libcap working ok
|
||||||
|
# Author: Susant Sahani<susant@redhat.com>
|
||||||
|
#
|
||||||
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
export TEST=/CoreOS/libcap
|
||||||
|
export TESTVERSION=1.0
|
||||||
|
|
||||||
|
OBJS = test-libcap.c
|
||||||
|
CFLAG = -Wall -g3
|
||||||
|
CC = gcc
|
||||||
|
LIBS = -lcap -lcmocka
|
||||||
|
|
||||||
|
test-libcap:${OBJ}
|
||||||
|
${CC} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS}
|
||||||
|
|
||||||
|
run: test-libcap
|
||||||
|
./runtest.sh
|
||||||
|
clean:
|
||||||
|
-rm -f *~ test-libcap
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
${CC} ${CFLAGS} ${INCLUDES} -c $<
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
|
||||||
|
include /usr/share/rhts/lib/rhts-make.include
|
||||||
|
$(METADATA): Makefile
|
||||||
|
@echo "Owner: Susant Sahani<susant@redhat.com>" > $(METADATA)
|
||||||
|
@echo "Name: $(TEST)" >> $(METADATA)
|
||||||
|
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
|
||||||
|
@echo "Path: $(TEST_DIR)" >> $(METADATA)
|
||||||
|
@echo "Description: Test libcap works ok" >> $(METADATA)
|
||||||
|
@echo "Type: Sanity" >> $(METADATA)
|
||||||
|
@echo "TestTime: 5m" >> $(METADATA)
|
||||||
|
@echo "RunFor: libcap" >> $(METADATA)
|
||||||
|
@echo "Requires: libcap libcap-devel" >> $(METADATA)
|
||||||
|
@echo "Priority: Normal" >> $(METADATA)
|
||||||
|
@echo "License: GPLv2" >> $(METADATA)
|
||||||
|
@echo "Confidential: no" >> $(METADATA)
|
||||||
|
@echo "Destructive: no" >> $(METADATA)
|
||||||
|
@echo "Releases: -Fedora 29" >> $(METADATA)
|
||||||
|
rhts-lint $(METADATA)
|
34
tests/sanity-tests/runtest.sh
Executable file
34
tests/sanity-tests/runtest.sh
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# runtest.sh of libcap
|
||||||
|
# Description: Tests for libcap
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
|
||||||
|
# Include Beaker environment
|
||||||
|
. /usr/share/beakerlib/beakerlib.sh || exit 1
|
||||||
|
|
||||||
|
PACKAGE="libcap"
|
||||||
|
|
||||||
|
rlJournalStart
|
||||||
|
rlPhaseStartSetup
|
||||||
|
rlAssertRpm $PACKAGE
|
||||||
|
rlRun "cp test-libcap /usr/bin/"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartTest
|
||||||
|
rlLog "Starting libcap tests ..."
|
||||||
|
rlRun "/usr/bin/test-libcap"
|
||||||
|
rlPhaseEnd
|
||||||
|
|
||||||
|
rlPhaseStartCleanup
|
||||||
|
rlRun "rm /usr/bin/test-libcap"
|
||||||
|
rlLog "libcap tests done"
|
||||||
|
rlPhaseEnd
|
||||||
|
rlJournalPrintText
|
||||||
|
rlJournalEnd
|
||||||
|
|
||||||
|
rlGetTestState
|
52
tests/sanity-tests/test-libcap.c
Normal file
52
tests/sanity-tests/test-libcap.c
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
# SPDX-License-Identifier: LGPL-2.1+
|
||||||
|
# ~~~
|
||||||
|
# Description: libcap tests
|
||||||
|
#
|
||||||
|
# Author: Susant Sahani <susant@redhat.com>
|
||||||
|
# Copyright (c) 2018 Red Hat, Inc.
|
||||||
|
# ~~~
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <cmocka.h>
|
||||||
|
#include <sys/capability.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void drop_cap(cap_value_t capflag) {
|
||||||
|
cap_t d;
|
||||||
|
|
||||||
|
d = cap_get_proc();
|
||||||
|
assert_non_null(d);
|
||||||
|
|
||||||
|
assert_return_code(cap_set_flag(d, CAP_EFFECTIVE, 1, &capflag, CAP_CLEAR), 0);
|
||||||
|
assert_return_code(cap_set_flag(d, CAP_PERMITTED, 1, &capflag, CAP_CLEAR), 0);
|
||||||
|
assert_return_code(cap_set_proc(d), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_drop_cap_net_raw(void **state) {
|
||||||
|
int s;
|
||||||
|
|
||||||
|
assert_true((s = socket(AF_INET, SOCK_RAW, IPPROTO_UDP)) >= 0);
|
||||||
|
close(s);
|
||||||
|
|
||||||
|
drop_cap(CAP_NET_RAW);
|
||||||
|
|
||||||
|
assert_false((s = socket(PF_INET, SOCK_RAW, IPPROTO_UDP)) >= 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
const struct CMUnitTest libcap_tests[] = {
|
||||||
|
cmocka_unit_test(test_drop_cap_net_raw),
|
||||||
|
};
|
||||||
|
|
||||||
|
return cmocka_run_group_tests(libcap_tests, NULL, NULL);
|
||||||
|
}
|
13
tests/tests.yml
Normal file
13
tests/tests.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
- hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: standard-test-beakerlib
|
||||||
|
tags:
|
||||||
|
- classic
|
||||||
|
tests:
|
||||||
|
- sanity-tests
|
||||||
|
required_packages:
|
||||||
|
- libcap
|
||||||
|
- libcap-devel
|
||||||
|
- libcmocka
|
||||||
|
- libcmocka-devel
|
||||||
|
- gcc
|
Loading…
Reference in New Issue
Block a user