From aaa231141abdf1d32359c2c0eb23a09c256213a3 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Mon, 25 Jul 2022 14:32:36 -0400 Subject: [PATCH] Add unit tests for num possible cpus Change-Id: I90eff0090b28cef64a8f4a5bd9745971ed89c711 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- .gitignore | 1 + configure.ac | 1 + tests/Makefile.am | 6 ++- tests/libringbuffer/Makefile.am | 10 ++++ tests/libringbuffer/test_smp.c | 85 +++++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 tests/libringbuffer/Makefile.am create mode 100644 tests/libringbuffer/test_smp.c diff --git a/.gitignore b/.gitignore index 11cf3343..3478d5ea 100644 --- a/.gitignore +++ b/.gitignore @@ -82,6 +82,7 @@ tests/ctf-types/ctf-types tests/test-app-ctx/hello tests/gcc-weak-hidden/test-gcc-wh tests/gcc-weak-hidden/test_gcc_weak_hidden +tests/libringbuffer/test_smp # Java agent library *.class diff --git a/configure.ac b/configure.ac index 6c372863..af669064 100644 --- a/configure.ac +++ b/configure.ac @@ -514,6 +514,7 @@ AC_CONFIG_FILES([ tests/utils/Makefile tests/test-app-ctx/Makefile tests/gcc-weak-hidden/Makefile + tests/libringbuffer/Makefile lttng-ust.pc ]) diff --git a/tests/Makefile.am b/tests/Makefile.am index 935c7546..37eb6b75 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,5 +1,6 @@ SUBDIRS = utils hello same_line_tracepoint snprintf benchmark ust-elf \ - ctf-types test-app-ctx gcc-weak-hidden + ctf-types test-app-ctx gcc-weak-hidden \ + libringbuffer if CXX_WORKS SUBDIRS += hello.cxx @@ -11,7 +12,8 @@ LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \ TESTS = snprintf/test_snprintf \ ust-elf/test_ust_elf \ - gcc-weak-hidden/test_gcc_weak_hidden + gcc-weak-hidden/test_gcc_weak_hidden \ + libringbuffer/test_smp check-loop: while [ 0 ]; do \ diff --git a/tests/libringbuffer/Makefile.am b/tests/libringbuffer/Makefile.am new file mode 100644 index 00000000..53a527d4 --- /dev/null +++ b/tests/libringbuffer/Makefile.am @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: LGPL-2.1-only + +AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/tests/utils + +noinst_PROGRAMS = test_smp +test_smp_SOURCES = test_smp.c +test_smp_LDADD = \ + $(top_builddir)/libringbuffer/libringbuffer.la \ + $(top_builddir)/snprintf/libustsnprintf.la \ + $(top_builddir)/tests/utils/libtap.a diff --git a/tests/libringbuffer/test_smp.c b/tests/libringbuffer/test_smp.c new file mode 100644 index 00000000..59ce6afc --- /dev/null +++ b/tests/libringbuffer/test_smp.c @@ -0,0 +1,85 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (C) 2020 Francis Deslauriers + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + +#include "tap.h" + +#include "../../libringbuffer/smp.h" + +struct parse_test_data { + const char *buf; + int expected; +}; + +static struct parse_test_data parse_test_data[] = { + { "", 0 }, + { "abc", 0 }, + { ",,,", 0 }, + { "--", 0 }, + { ",", 0 }, + { "-", 0 }, + { "2147483647", 0 }, + { "18446744073709551615", 0 }, + { "0-2147483647", 0 }, + { "0-18446744073709551615", 0 }, + { "0", 1 }, + { "1", 2 }, + { "0-1", 2 }, + { "1-3", 4 }, + { "0,2", 3 }, + { "1,2", 3 }, + { "0,4-6,127", 128 }, + { "0-4095", 4096 }, + + { "\n", 0 }, + { "abc\n", 0 }, + { ",,,\n", 0 }, + { "--\n", 0 }, + { ",\n", 0 }, + { "-\n", 0 }, + { "2147483647\n", 0 }, + { "18446744073709551615\n", 0 }, + { "0-2147483647\n", 0 }, + { "0-18446744073709551615\n", 0 }, + { "0\n", 1 }, + { "1\n", 2 }, + { "0-1\n", 2 }, + { "1-3\n", 4 }, + { "0,2\n", 3 }, + { "1,2\n", 3 }, + { "0,4-6,127\n", 128 }, + { "0-4095\n", 4096 }, +}; + +static int parse_test_data_len = sizeof(parse_test_data) / sizeof(parse_test_data[0]); + +int main(void) +{ + int ret, i; + + plan_tests(parse_test_data_len + 1); + + diag("Testing smp helpers"); + + for (i = 0; i < parse_test_data_len; i++) { + ret = get_num_possible_cpus_from_mask(parse_test_data[i].buf, + strlen(parse_test_data[i].buf)); + ok(ret == parse_test_data[i].expected, + "get_num_possible_cpus_from_mask '%s', expected: '%d', result: '%d'", + parse_test_data[i].buf, parse_test_data[i].expected, ret); + } + + ok(num_possible_cpus() > 0, "num_possible_cpus (%d > 0)", num_possible_cpus()); + + return exit_status(); +} -- 2.34.1