diff options
author | Krzysztof Opasiak <k.opasiak@samsung.com> | 2017-05-16 17:36:43 +0200 |
---|---|---|
committer | Krzysztof Opasiak <k.opasiak@samsung.com> | 2017-05-18 19:20:45 +0200 |
commit | 15f95d7c89f43e0b213099b861374ead143001a6 (patch) | |
tree | 7f80ac30a3cd744d6a6bc1eb43c06630e422acc9 | |
parent | f2f64a1f4907ebac206654be17c4b2281f156fd1 (diff) | |
download | faultd-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.am | 16 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | packaging/faultd.spec | 15 | ||||
-rw-r--r-- | tests/leaker.c | 15 | ||||
-rw-r--r-- | tests/leaker.service.in | 9 |
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 + |