Add "coverage tests" 06/297306/1
authorMichal Bloch <m.bloch@samsung.com>
Fri, 11 Aug 2023 17:25:56 +0000 (19:25 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Wed, 16 Aug 2023 19:24:52 +0000 (21:24 +0200)
Change-Id: I4c546d8e3479b7498c9ed2def85b7f710672b011

Makefile.am
configs/dlog-coverage.conf [new file with mode: 0644]
configure.ac
packaging/dlog.spec
tests/dlog_coverage.in [new file with mode: 0644]

index afeba29..4a04549 100644 (file)
@@ -916,6 +916,7 @@ pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = dlog.pc dlogutil.pc dlog-redirect-stdout.pc
 
 data_DATA = \
+       configs/dlog-coverage.conf \
        configs/dlog-pipe.conf.test \
        configs/dlog-logger.conf.test \
        configs/dlog-zero-copy.conf.test \
@@ -961,6 +962,9 @@ modulesloadd_DATA = \
 
 bin_SCRIPTS = dlog_test dlog_test_header dlog_cpu
 
+coveragetestsdir = $(bindir)/tizen-unittests/dlog
+coveragetests_SCRIPTS = run-unittest.sh
+
 docdir = $(datadir)/doc/dlog
 doc_DATA = \
        README.testsuite
diff --git a/configs/dlog-coverage.conf b/configs/dlog-coverage.conf
new file mode 100644 (file)
index 0000000..0706e68
--- /dev/null
@@ -0,0 +1,64 @@
+backend=pipe
+enable_main=1
+enable_radio=1
+enable_system=1
+enable_apps=1
+stdout_enable_main=1
+stdout_enable_radio=1
+stdout_enable_system=1
+stdout_enable_apps=1
+enable_critical=1
+enable_dotnet_api=1
+enable_native_api=1
+debugmode=1
+limiter=1
+limiter|*|*=allow
+limiter|FLOOD|*=deny
+limiter_apply_to_all_buffers=1
+dynamic_config_path=
+enable_secure_logs=1
+kmsg=:
+syslog=:
+kmsg_conn_sock_rights=0222
+syslog_conn_sock_rights=0222
+kmsg_ctl_sock_rights=0220
+syslog_ctl_sock_rights=0220
+kmsg_size=1048576
+syslog_size=1048576
+handle_kmsg=1
+epoll_time_ms=1000
+util_sorting_time_window=1000
+deduplicate_method=all_identical_logs
+deduplicate_interval_ms=1
+stash_failed_log_method=critical
+main_conn_sock=/var/lib/dlog-unittests/main.conn
+apps_conn_sock=/var/lib/dlog-unittests/apps.conn
+system_conn_sock=/var/lib/dlog-unittests/system.conn
+radio_conn_sock=/var/lib/dlog-unittests/radio.conn
+kmsg_conn_sock=/var/lib/dlog-unittests/kmsg.conn
+syslog_conn_sock=/var/lib/dlog-unittests/syslog.conn
+main_ctl_sock=/var/lib/dlog-unittests/main.ctl
+apps_ctl_sock=/var/lib/dlog-unittests/apps.ctl
+system_ctl_sock=/var/lib/dlog-unittests/system.ctl
+radio_ctl_sock=/var/lib/dlog-unittests/radio.ctl
+kmsg_ctl_sock=/var/lib/dlog-unittests/kmsg.ctl
+syslog_ctl_sock=/var/lib/dlog-unittests/syslog.ctl
+main_conn_sock_rights=0222
+apps_conn_sock_rights=0222
+system_conn_sock_rights=0222
+radio_conn_sock_rights=0222
+main_ctl_sock_rights=0220
+apps_ctl_sock_rights=0220
+system_ctl_sock_rights=0220
+radio_ctl_sock_rights=0220
+main_size=1048576
+apps_size=1048576
+system_size=1048576
+radio_size=1048576
+sort_by=recv_mono+dlog_logger_conf_main=dlogutil -b main -r 8192 -n 1 -f /var/lib/dlog-unittests/main.log -v threadtime *:V
+qos_file_path=/var/lib/dlog-unittests/qos.output
+qos_method=proportional_talmud
+qos_refresh_rate_s=5
+qos_max_throughput_logs=999
+qos_threshold_logs=40
+qos_threshold_reapply_logs=5
index c8e0197..f2daa23 100644 (file)
@@ -86,6 +86,7 @@ AC_SUBST([datadir])
 AC_SUBST([libexecdir])
 AC_CONFIG_FILES([Makefile dlog.pc dlogutil.pc dlog-redirect-stdout.pc]
                 [dlog_test:tests/dlog_test.in]
+                [run-unittest.sh:tests/dlog_coverage.in]
                 [dlog_test_header:tests/dlog_test_header.in]
                 [dlog_cpu:tests/dlog_cpu.in]
                 [README.testsuite:tests/README.testsuite.in]
index 709df1f..fac1950 100644 (file)
@@ -127,6 +127,12 @@ Group:    Development/Libraries
 This package contains gcov code coverage/profiling files for libdlog.
 %endif
 
+%package unittests
+Summary: Coverage tests
+
+%description unittests
+Not actually unit tests, named that way just to conform to specification
+
 %isu_package
 
 %prep
@@ -196,6 +202,8 @@ mkdir -p %{buildroot}/var/log/dlog
 
 mkdir -p %{buildroot}/var/lib/dlog-tests
 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.test
+mkdir -p %{buildroot}/var/lib/dlog-unittests
+mkdir -p %{buildroot}/usr/share/dlog-filters.conf.unittest
 
 %if 0%{?gcov:1}
 builddir=$(basename $PWD)
@@ -264,6 +272,12 @@ chsmack -e 'System' %{_libexecdir}/dlog-log-critical
 %{_libdir}/pkgconfig/dlogutil.pc
 %{_libdir}/pkgconfig/dlog-redirect-stdout.pc
 
+%files unittests
+%{_bindir}/tizen-unittests/%{name}/run-unittest.sh
+%{_datadir}/dlog-coverage.conf
+%dir %attr(755,log,log) /var/lib/dlog-unittests
+%dir %attr(755,log,log) /usr/share/dlog-filters.conf.unittest
+
 %files logger
 %manifest dlog.manifest
 %license LICENSE.APACHE2.0
diff --git a/tests/dlog_coverage.in b/tests/dlog_coverage.in
new file mode 100644 (file)
index 0000000..1cedec3
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+# dlog is a very low-level system piece so it makes sense that a test
+# would involve touching the system. We've got a fairly comprehensive
+# integration test (see `dlog_test.in`) which does that. However, the
+# process of gathering test coverage really wants us to run something
+# isolated and we don't have the mana to deal with that properly. So,
+# here I am going to run a bunch of useless commands in hopes that it
+# hits as many lines as possible.
+
+dlogsend -b main -b radio -b apps -b dotnet -b dotnet_api -b native -b native_api bla
+dlogsend -h
+dlogsend -kszc 1 -d 1 -f 1 -x
+dlogsend -k kritzkrieg
+echo "bla" | dlogsend
+dlogsend -b main "🚽🥌⚱️🚱"
+
+dlogutil --help
+dlogutil --chlep
+dlogutil -b rutal
+dlogutil -de 2 -n 2 -r 2 -f '/tmp/dlogutil-testing-chaff'
+dlogutil -db main --color never --pid 42 --tid 1337
+dlogutil -b main -c
+dlogutil -b main -g
+dlogutil -dv threadtime --color always
+dlogutil -dv json
+
+ORIGINAL_CONFIG_PATH="$DLOG_CONFIG_PATH"
+export DLOG_CONFIG_PATH="@datadir@/dlog-coverage.conf"
+PATH=$PATH:@libexecdir@/libdlog/
+
+dlog_logger -t 0 &
+LOGGER=$!
+sleep 5
+echo "blabla" > /dev/kmsg
+dlogsend -b main "blablabla"
+dlogsend -c 999 -b main "blablabla999"
+dlogsend -t FLOOD -b main "blablabla"
+sleep 0.3233
+dlogutil -db main
+dlogutil -u 10 -db main
+dlogutil -u 1 -db main
+dlogutil --sort-by recv_real -db main
+dlogutil --sort-by recv_mono -db main
+dlogutil --sort-by sent_real -db main
+dlogutil --sort-by sent_mono -db main
+sleep 0.42
+kill $LOGGER
+
+DLOG_CONFIG_PATH="$ORIGINAL_CONFIG_PATH"
+