From fe9615ba34edf2deb2b7f7dea935806a94627e9f Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Wed, 20 Jul 2022 15:02:41 -0400 Subject: [PATCH] Add unit tests for num possible cpus Change-Id: I90eff0090b28cef64a8f4a5bd9745971ed89c711 Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- .gitignore | 2 + configure.ac | 1 + tests/Makefile.am | 1 + tests/unit/Makefile.am | 1 + tests/unit/libcommon/Makefile.am | 9 ++++ tests/unit/libcommon/test_smp.c | 84 ++++++++++++++++++++++++++++++++ 6 files changed, 98 insertions(+) create mode 100644 tests/unit/libcommon/Makefile.am create mode 100644 tests/unit/libcommon/test_smp.c diff --git a/.gitignore b/.gitignore index acceec5e..bde22085 100644 --- a/.gitignore +++ b/.gitignore @@ -113,6 +113,7 @@ cscope.* /tests/regression/abi0-conflict/app_ust_indirect_abi0_abi1 /tests/regression/abi0-conflict/app_ust_indirect_abi1 /tests/unit/gcc-weak-hidden/test_gcc_weak_hidden +/tests/unit/libcommon/test_smp /tests/unit/libmsgpack/test_msgpack /tests/unit/libringbuffer/test_shm /tests/unit/pthread_name/test_pthread_name @@ -208,6 +209,7 @@ cscope.* /tests/regression/Makefile /tests/unit/Makefile /tests/unit/gcc-weak-hidden/Makefile +/tests/unit/libcommon/Makefile /tests/unit/libmsgpack/Makefile /tests/unit/libringbuffer/Makefile /tests/unit/pthread_name/Makefile diff --git a/configure.ac b/configure.ac index cca827a7..437d7196 100644 --- a/configure.ac +++ b/configure.ac @@ -656,6 +656,7 @@ AC_CONFIG_FILES([ tests/regression/abi0-conflict/Makefile tests/regression/Makefile tests/unit/gcc-weak-hidden/Makefile + tests/unit/libcommon/Makefile tests/unit/libmsgpack/Makefile tests/unit/libringbuffer/Makefile tests/unit/Makefile diff --git a/tests/Makefile.am b/tests/Makefile.am index d750ae39..29cfa814 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -13,6 +13,7 @@ LOG_DRIVER = env AM_TAP_AWK='$(AWK)' \ TESTS = \ unit/libringbuffer/test_shm \ unit/gcc-weak-hidden/test_gcc_weak_hidden \ + unit/libcommon/test_smp \ unit/libmsgpack/test_msgpack \ unit/pthread_name/test_pthread_name \ unit/snprintf/test_snprintf \ diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am index 47cec612..75701efc 100644 --- a/tests/unit/Makefile.am +++ b/tests/unit/Makefile.am @@ -2,6 +2,7 @@ SUBDIRS = \ gcc-weak-hidden \ + libcommon \ libmsgpack \ libringbuffer \ pthread_name \ diff --git a/tests/unit/libcommon/Makefile.am b/tests/unit/libcommon/Makefile.am new file mode 100644 index 00000000..05b894e8 --- /dev/null +++ b/tests/unit/libcommon/Makefile.am @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: LGPL-2.1-only + +AM_CPPFLAGS += -I$(top_srcdir)/tests/utils + +noinst_PROGRAMS = test_smp +test_smp_SOURCES = test_smp.c +test_smp_LDADD = \ + $(top_builddir)/src/common/libcommon.la \ + $(top_builddir)/tests/utils/libtap.a diff --git a/tests/unit/libcommon/test_smp.c b/tests/unit/libcommon/test_smp.c new file mode 100644 index 00000000..8f9a4042 --- /dev/null +++ b/tests/unit/libcommon/test_smp.c @@ -0,0 +1,84 @@ +/* + * SPDX-License-Identifier: LGPL-2.1-only + * + * Copyright (C) 2020 Francis Deslauriers + */ + +#include +#include +#include +#include +#include +#include + +#include "tap.h" + +#include "common/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