[Spice-devel] [PATCH 4/4] stat: add test for statistic functions

Frediano Ziglio fziglio at redhat.com
Wed Dec 2 03:43:10 PST 2015


Make sure code compile with and without statistics enabled (beside
printing functions).

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/tests/.gitignore  |  5 +++
 server/tests/Makefile.am | 35 ++++++++++++++++++++
 server/tests/stat-main.c | 49 ++++++++++++++++++++++++++++
 server/tests/stat-test.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 172 insertions(+)
 create mode 100644 server/tests/stat-main.c
 create mode 100644 server/tests/stat-test.c

diff --git a/server/tests/.gitignore b/server/tests/.gitignore
index 1059247..35b9624 100644
--- a/server/tests/.gitignore
+++ b/server/tests/.gitignore
@@ -9,3 +9,8 @@ spice-server-replay
 test_display_width_stride
 test_two_servers
 test_vdagent
+stat_test
+libtest1.a
+libtest2.a
+libtest3.a
+libtest4.a
diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am
index 96eb39c..f015281 100644
--- a/server/tests/Makefile.am
+++ b/server/tests/Makefile.am
@@ -44,6 +44,20 @@ noinst_PROGRAMS =				\
 	test_vdagent				\
 	test_display_width_stride		\
 	spice-server-replay			\
+	stat_test \
+	$(NULL)
+
+TESTS =	\
+	stat_test				\
+	$(NULL)
+
+check_PROGRAMS = $(TESTS)
+
+noinst_LIBRARIES = \
+	libtest1.a \
+	libtest2.a \
+	libtest3.a \
+	libtest4.a \
 	$(NULL)
 
 test_vdagent_SOURCES =		\
@@ -113,3 +127,24 @@ spice_server_replay_SOURCES = 			\
 	basic_event_loop.h			\
 	test_util.h				\
 	$(NULL)
+
+stat_test_SOURCES = stat-main.c
+stat_test_LDADD = \
+	$(LDADD) \
+	libtest1.a \
+	libtest2.a \
+	libtest3.a \
+	libtest4.a \
+	$(NULL)
+
+libtest1_a_SOURCES = stat-test.c
+libtest1_a_CPPFLAGS = $(AM_CPPFLAGS) -DCOMP=0 -DWORKER=0 -DTEST_NAME=test1
+
+libtest2_a_SOURCES = stat-test.c
+libtest2_a_CPPFLAGS = $(AM_CPPFLAGS) -DCOMP=0 -DWORKER=1 -DTEST_NAME=test2
+
+libtest3_a_SOURCES = stat-test.c
+libtest3_a_CPPFLAGS = $(AM_CPPFLAGS) -DCOMP=1 -DWORKER=0 -DTEST_NAME=test3
+
+libtest4_a_SOURCES = stat-test.c
+libtest4_a_CPPFLAGS = $(AM_CPPFLAGS) -DCOMP=1 -DWORKER=1 -DTEST_NAME=test4
diff --git a/server/tests/stat-main.c b/server/tests/stat-main.c
new file mode 100644
index 0000000..e7a7df2
--- /dev/null
+++ b/server/tests/stat-main.c
@@ -0,0 +1,49 @@
+/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+   Copyright (C) 2015 Red Hat, Inc.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+/* check statistics
+ */
+
+#include <config.h>
+#include <glib.h>
+
+typedef void test_func_t(void);
+
+test_func_t test1;
+test_func_t test2;
+test_func_t test3;
+test_func_t test4;
+
+static test_func_t *test_funcs[] = {
+    test1,
+    test2,
+    test3,
+    test4,
+    NULL
+};
+
+int main(void)
+{
+    test_func_t **func_p;
+
+    for (func_p = test_funcs; *func_p; ++func_p) {
+        (*func_p)();
+    }
+    return 0;
+}
+
diff --git a/server/tests/stat-test.c b/server/tests/stat-test.c
new file mode 100644
index 0000000..db267e7
--- /dev/null
+++ b/server/tests/stat-test.c
@@ -0,0 +1,83 @@
+/* -*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*- */
+/*
+   Copyright (C) 2015 Red Hat, Inc.
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this library; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+/* check statistics
+ */
+
+#include <config.h>
+
+#undef COMPRESS_STAT
+#undef RED_WORKER_STAT
+
+#if COMP
+#define COMPRESS_STAT
+#endif
+
+#if WORKER
+#define RED_WORKER_STAT
+#endif
+
+#include <unistd.h>
+#include <glib.h>
+#include "../stat.h"
+
+#ifndef TEST_NAME
+#error TEST_NAME must be defined!
+#endif
+
+void TEST_NAME(void)
+{
+    stat_info_t info;
+    stat_start_time_t start_time;
+
+#if !defined(COMPRESS_STAT) && !defined(RED_WORKER_STAT)
+    G_STATIC_ASSERT(sizeof(start_time) == 0);
+    G_STATIC_ASSERT(sizeof(info) == 0);
+#endif
+
+    stat_init(&info, "test", CLOCK_MONOTONIC);
+    stat_start_time_init(&start_time, &info);
+    usleep(2);
+    stat_add(&info, start_time);
+
+#ifdef RED_WORKER_STAT
+    g_assert_cmpuint(info.count, ==, 1);
+    g_assert_cmpuint(info.min, ==, info.max);
+    g_assert_cmpuint(info.min, >=, 2000);
+    g_assert_cmpuint(info.min, <, 100000000);
+#endif
+
+    stat_reset(&info);
+
+    stat_compress_init(&info, "test", CLOCK_MONOTONIC);
+    stat_start_time_init(&start_time, &info);
+    usleep(2);
+    stat_compress_add(&info, start_time, 100, 50);
+    usleep(1);
+    stat_compress_add(&info, start_time, 1000, 500);
+
+#ifdef COMPRESS_STAT
+    g_assert_cmpuint(info.count, ==, 2);
+    g_assert_cmpuint(info.min, !=, info.max);
+    g_assert_cmpuint(info.min, >=, 2000);
+    g_assert_cmpuint(info.min, <, 100000000);
+    g_assert_cmpuint(info.total, >=, 5000);
+    g_assert_cmpuint(info.orig_size, ==, 1100);
+    g_assert_cmpuint(info.comp_size, ==, 550);
+#endif
+}
-- 
2.4.3



More information about the Spice-devel mailing list