git: 8093646b0be9 - main - cpuset(3): Add unit tests

From: Baptiste Daroussin <bapt_at_FreeBSD.org>
Date: Thu, 01 Jun 2023 21:27:50 UTC
The branch main has been updated by bapt:

URL: https://cgit.FreeBSD.org/src/commit/?id=8093646b0be9731f24eddbcee7dc34e1fd2365b5

commit 8093646b0be9731f24eddbcee7dc34e1fd2365b5
Author:     Baptiste Daroussin <bapt@FreeBSD.org>
AuthorDate: 2023-06-01 21:26:57 +0000
Commit:     Baptiste Daroussin <bapt@FreeBSD.org>
CommitDate: 2023-06-01 21:27:45 +0000

    cpuset(3): Add unit tests
    
    Differential Revision:  https://reviews.freebsd.org/D13046
---
 lib/libutil/tests/Makefile      |  1 +
 lib/libutil/tests/cpuset_test.c | 73 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+)

diff --git a/lib/libutil/tests/Makefile b/lib/libutil/tests/Makefile
index 5414042762af..fc9a871dd8bc 100644
--- a/lib/libutil/tests/Makefile
+++ b/lib/libutil/tests/Makefile
@@ -6,6 +6,7 @@ TAP_TESTS_C+=	humanize_number_test
 TAP_TESTS_C+=	pidfile_test
 TAP_TESTS_C+=	trimdomain_test
 TAP_TESTS_C+=	trimdomain-nodomain_test
+ATF_TESTS_C+=	cpuset_test
 
 WARNS?=		2
 LIBADD+=	util
diff --git a/lib/libutil/tests/cpuset_test.c b/lib/libutil/tests/cpuset_test.c
new file mode 100644
index 000000000000..ea8eb8d83743
--- /dev/null
+++ b/lib/libutil/tests/cpuset_test.c
@@ -0,0 +1,73 @@
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/types.h>
+#include <sys/cpuset.h>
+
+#include <stdio.h>
+#include <libutil.h>
+#include <atf-c.h>
+
+ATF_TC(invalid);
+ATF_TC_HEAD(invalid, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Test invalid cpu");
+}
+
+ATF_TC_BODY(invalid, tc)
+{
+	cpuset_t mask;
+	char testvalue[BUFSIZ];
+
+	snprintf(testvalue, sizeof(testvalue), "%d", CPU_SETSIZE + 1);
+
+	ATF_CHECK_EQ(cpuset_parselist(testvalue,  &mask), CPUSET_PARSE_INVALID_CPU);
+}
+
+ATF_TC(invalidchar);
+ATF_TC_HEAD(invalidchar, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Test invalid char");
+}
+
+ATF_TC_BODY(invalidchar, tc)
+{
+	cpuset_t mask;
+
+	ATF_CHECK_EQ(cpuset_parselist("1+3",  &mask), CPUSET_PARSE_ERROR);
+}
+
+ATF_TC(all);
+ATF_TC_HEAD(all, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Test 'all' special cpu-list");
+}
+
+ATF_TC_BODY(all, tc)
+{
+	cpuset_t mask;
+
+	ATF_CHECK_EQ(cpuset_parselist("all",  &mask), CPUSET_PARSE_OK);
+}
+
+ATF_TC(normalsyntax);
+ATF_TC_HEAD(normalsyntax, tc)
+{
+	atf_tc_set_md_var(tc, "descr", "Test normal cpu-list syntax");
+}
+
+ATF_TC_BODY(normalsyntax, tc)
+{
+	cpuset_t mask;
+
+	ATF_CHECK_EQ(cpuset_parselist("1-3,6",  &mask), CPUSET_PARSE_OK);
+}
+
+ATF_TP_ADD_TCS(tp)
+{
+	ATF_TP_ADD_TC(tp, invalid);
+	ATF_TP_ADD_TC(tp, invalidchar);
+	ATF_TP_ADD_TC(tp, all);
+	ATF_TP_ADD_TC(tp, normalsyntax);
+	return (atf_no_error());
+}