summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Opasiak <k.opasiak@samsung.com>2017-05-16 17:36:43 +0200
committerKrzysztof Opasiak <k.opasiak@samsung.com>2017-05-18 19:20:45 +0200
commit15f95d7c89f43e0b213099b861374ead143001a6 (patch)
tree7f80ac30a3cd744d6a6bc1eb43c06630e422acc9
parentf2f64a1f4907ebac206654be17c4b2281f156fd1 (diff)
downloadfaultd-15f95d7c89f43e0b213099b861374ead143001a6.tar.gz
faultd-15f95d7c89f43e0b213099b861374ead143001a6.tar.bz2
faultd-15f95d7c89f43e0b213099b861374ead143001a6.zip
Make tests/leaker a valid systemd service
Change-Id: I572e206454a92ff9bcd828f2f9977b5458b2c5c3 Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
-rw-r--r--Makefile.am16
-rw-r--r--configure.ac6
-rw-r--r--packaging/faultd.spec15
-rw-r--r--tests/leaker.c15
-rw-r--r--tests/leaker.service.in9
5 files changed, 53 insertions, 8 deletions
diff --git a/Makefile.am b/Makefile.am
index 9ab0bff..3212616 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -27,6 +27,8 @@ SED_PROCESS = \
-e 's,@exec_prefix\@,$(exec_prefix),g' \
-e 's,@libdir\@,$(libdir),g' \
-e 's,@includedir\@,$(includedir),g' \
+ -e 's,@bindir\@,$(bindir),g' \
+ -e 's,@sbindir\@,$(sbindir),g' \
< $< > $@ || rm $@
%.pc: %.pc.in Makefile
@@ -52,3 +54,17 @@ faultd_SOURCES = \
src/util/systemd_dbus.c
faultd_LDADD = $(LIBSYSTEMD_LIBS) $(AUDIT_LIBS) $(LIBEJDB_LIBS)
+%.service: %.service.in Makefile
+ $(SED_PROCESS)
+
+if BUILD_TEST_PROGRAMS
+bin_PROGRAMS = leaker
+
+leaker_SOURCES = \
+ tests/leaker.c
+
+LEAKER_UNIT_FILE = tests/leaker.service
+
+BUILT_SOURCES = $(LEAKER_UNIT_FILE)
+CLEANFILES = $(LEAKER_UNIT_FILE)
+endif
diff --git a/configure.ac b/configure.ac
index e3c5ecd..676a976 100644
--- a/configure.ac
+++ b/configure.ac
@@ -29,6 +29,12 @@ AC_PREFIX_DEFAULT([/usr])
AC_PROG_SED
AC_PROG_MKDIR_P
+AC_ARG_ENABLE([test_programs],
+ AS_HELP_STRING([--enable-test-programs], [build test services]),
+ [enable_test_programs=$enableval], [enable_test_programs=no])
+
+AM_CONDITIONAL(BUILD_TEST_PROGRAMS, [test "x$enable_test_programs" = xyes])
+
PKG_CHECK_MODULES(LIBSYSTEMD,
[libsystemd >= 231],
have_libsystemd=yes,
diff --git a/packaging/faultd.spec b/packaging/faultd.spec
index 72de608..4882369 100644
--- a/packaging/faultd.spec
+++ b/packaging/faultd.spec
@@ -14,21 +14,34 @@ BuildRequires: pkgconfig(libsystemd)
faultd monitors system services, detects their abnormal execution and
helps recover from errors.
+%package test-programs
+Summary: faultd test program
+Group: System/Monitoring
+
+%description test-programs
+Program used to test resource violation scenario in faultd
+
%prep
%setup -q
cp %{SOURCE1001} .
%build
%autogen
-%configure
+%configure --enable-test-programs
make %{?_smp_mflags}
%install
%make_install
+mkdir -p %{buildroot}/%{_unitdir}/
+cp tests/leaker.service %{buildroot}/%{_unitdir}/
%files
%license COPYING
%manifest %{name}.manifest
%{_sbindir}/faultd
+%files test-programs
+%{_bindir}/leaker
+%{_unitdir}/leaker.service
+
%docs_package
diff --git a/tests/leaker.c b/tests/leaker.c
index 592d6a7..0d5ec43 100644
--- a/tests/leaker.c
+++ b/tests/leaker.c
@@ -5,18 +5,15 @@
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
+#include <unistd.h>
-int main()
+int main(int argc, char **argv)
{
int i;
int fd;
- struct rlimit limits = {
- .rlim_cur = 16,
- .rlim_max = 16,
- };
-
- setrlimit(RLIMIT_NOFILE, &limits);
+ /* To prevent too fast restarting */
+ sleep(3);
for (i = 0; i < 100; ++i) {
fd = open("/dev/null", O_RDONLY);
@@ -26,5 +23,9 @@ int main()
}
}
+ /* Wait for being restarted by systemd */
+ for (;;)
+ pause();
+
return 0;
}
diff --git a/tests/leaker.service.in b/tests/leaker.service.in
new file mode 100644
index 0000000..287c375
--- /dev/null
+++ b/tests/leaker.service.in
@@ -0,0 +1,9 @@
+[Unit]
+Description=Service which leaks file descriptors
+
+[Service]
+Type=simple
+LimitNOFILE=16
+ExecStart=@bindir@/leaker
+SuccessExitStatus=0 SIGTERM
+