Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src Add ATF tests for atomic_ops(3).
details: https://anonhg.NetBSD.org/src/rev/79b05937d925
branches: trunk
changeset: 448987:79b05937d925
user: isaki <isaki%NetBSD.org@localhost>
date: Sun Feb 17 12:24:17 2019 +0000
description:
Add ATF tests for atomic_ops(3).
diffstat:
distrib/sets/lists/tests/mi | 11 ++-
etc/mtree/NetBSD.dist.tests | 3 +-
tests/lib/libc/Makefile | 3 +-
tests/lib/libc/atomic/Makefile | 19 +++++
tests/lib/libc/atomic/t_atomic_add.c | 125 ++++++++++++++++++++++++++++++++++
tests/lib/libc/atomic/t_atomic_and.c | 121 ++++++++++++++++++++++++++++++++
tests/lib/libc/atomic/t_atomic_cas.c | 118 ++++++++++++++++++++++++++++++++
tests/lib/libc/atomic/t_atomic_dec.c | 120 ++++++++++++++++++++++++++++++++
tests/lib/libc/atomic/t_atomic_inc.c | 120 ++++++++++++++++++++++++++++++++
tests/lib/libc/atomic/t_atomic_or.c | 121 ++++++++++++++++++++++++++++++++
tests/lib/libc/atomic/t_atomic_swap.c | 88 +++++++++++++++++++++++
11 files changed, 846 insertions(+), 3 deletions(-)
diffs (truncated from 922 to 300 lines):
diff -r 76fcc8cc13f7 -r 79b05937d925 distrib/sets/lists/tests/mi
--- a/distrib/sets/lists/tests/mi Sun Feb 17 09:33:19 2019 +0000
+++ b/distrib/sets/lists/tests/mi Sun Feb 17 12:24:17 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.806 2019/02/09 00:14:43 mrg Exp $
+# $NetBSD: mi,v 1.807 2019/02/17 12:24:17 isaki Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -2442,6 +2442,15 @@
./usr/tests/lib/libc tests-lib-tests compattestfile,atf
./usr/tests/lib/libc/Atffile tests-lib-tests compattestfile,atf
./usr/tests/lib/libc/Kyuafile tests-lib-tests compattestfile,atf,kyua
+./usr/tests/lib/libc/atomic tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/Atffile tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/t_atomic_add tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/t_atomic_and tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/t_atomic_cas tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/t_atomic_dec tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/t_atomic_inc tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/t_atomic_or tests-lib-tests compattestfile,atf
+./usr/tests/lib/libc/atomic/t_atomic_swap tests-lib-tests compattestfile,atf
./usr/tests/lib/libc/c063 tests-lib-tests compattestfile,atf
./usr/tests/lib/libc/c063/Atffile tests-lib-tests compattestfile,atf
./usr/tests/lib/libc/c063/Kyuafile tests-lib-tests compattestfile,atf,kyua
diff -r 76fcc8cc13f7 -r 79b05937d925 etc/mtree/NetBSD.dist.tests
--- a/etc/mtree/NetBSD.dist.tests Sun Feb 17 09:33:19 2019 +0000
+++ b/etc/mtree/NetBSD.dist.tests Sun Feb 17 12:24:17 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: NetBSD.dist.tests,v 1.154 2018/12/23 15:43:42 jakllsch Exp $
+# $NetBSD: NetBSD.dist.tests,v 1.155 2019/02/17 12:24:17 isaki Exp $
./usr/libdata/debug/usr/tests
./usr/libdata/debug/usr/tests/atf
@@ -259,6 +259,7 @@
./usr/tests/lib/csu
./usr/tests/lib/libbluetooth
./usr/tests/lib/libc
+./usr/tests/lib/libc/atomic
./usr/tests/lib/libc/c063
./usr/tests/lib/libc/db
./usr/tests/lib/libc/gen
diff -r 76fcc8cc13f7 -r 79b05937d925 tests/lib/libc/Makefile
--- a/tests/lib/libc/Makefile Sun Feb 17 09:33:19 2019 +0000
+++ b/tests/lib/libc/Makefile Sun Feb 17 12:24:17 2019 +0000
@@ -1,10 +1,11 @@
-# $NetBSD: Makefile,v 1.48 2018/08/03 04:24:41 kamil Exp $
+# $NetBSD: Makefile,v 1.49 2019/02/17 12:24:17 isaki Exp $
.include "Makefile.inc"
.include <bsd.own.mk>
SUBDIR+= tls_dso .WAIT sync
+TESTS_SUBDIRS+= atomic
TESTS_SUBDIRS+= c063 db gen hash inet locale misc net regex rpc setjmp stdlib
TESTS_SUBDIRS+= stdio string sys termios time tls ttyio
diff -r 76fcc8cc13f7 -r 79b05937d925 tests/lib/libc/atomic/Makefile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/lib/libc/atomic/Makefile Sun Feb 17 12:24:17 2019 +0000
@@ -0,0 +1,19 @@
+# $NetBSD: Makefile,v 1.1 2019/02/17 12:24:17 isaki Exp $
+
+.include <bsd.own.mk>
+
+TESTSDIR= ${TESTSBASE}/lib/libc/atomic
+
+TESTS_C+= t_atomic_add
+TESTS_C+= t_atomic_and
+TESTS_C+= t_atomic_cas
+TESTS_C+= t_atomic_dec
+TESTS_C+= t_atomic_inc
+TESTS_C+= t_atomic_or
+TESTS_C+= t_atomic_swap
+
+MKMAN=no
+
+BINDIR= ${TESTSDIR}
+
+.include <bsd.test.mk>
diff -r 76fcc8cc13f7 -r 79b05937d925 tests/lib/libc/atomic/t_atomic_add.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/lib/libc/atomic/t_atomic_add.c Sun Feb 17 12:24:17 2019 +0000
@@ -0,0 +1,125 @@
+/* $NetBSD: t_atomic_add.c,v 1.1 2019/02/17 12:24:17 isaki Exp $ */
+
+/*
+ * Copyright (C) 2019 Tetsuya Isaki. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: t_atomic_add.c,v 1.1 2019/02/17 12:24:17 isaki Exp $");
+
+#include <atf-c.h>
+#include <inttypes.h>
+#include <sys/atomic.h>
+
+/*
+ * These tests don't examine the atomicity.
+ */
+
+#define DST (0x1122334455667788UL)
+#define SRC (0xf0e0d0c0b0a09081UL)
+#define EXPECT (0x0203040506070809UL)
+
+/*
+ * atomic_add_*()
+ */
+#define atf_add(NAME, DTYPE, STYPE, FMT) \
+ATF_TC(NAME); \
+ATF_TC_HEAD(NAME, tc) \
+{ \
+ atf_tc_set_md_var(tc, "descr", #NAME); \
+} \
+ATF_TC_BODY(NAME, tc) \
+{ \
+ volatile DTYPE val; \
+ STYPE src; \
+ DTYPE exp; \
+ val = (DTYPE)DST; \
+ src = (STYPE)SRC; \
+ exp = (DTYPE)EXPECT; \
+ NAME(&val, src); \
+ ATF_REQUIRE_MSG(val == exp, \
+ "val expects " FMT " but " FMT, exp, val); \
+}
+
+atf_add(atomic_add_32, uint32_t, int32_t, "0x%" PRIx32);
+atf_add(atomic_add_int, unsigned int, int, "0x%x");
+atf_add(atomic_add_long, unsigned long, long, "0x%lx");
+atf_add(atomic_add_ptr, void *, ssize_t, "%p");
+#if defined(__HAVE_ATOMIC64_OPS)
+atf_add(atomic_add_64, uint64_t, int64_t, "0x%" PRIx64);
+#endif
+
+/*
+ * atomic_add_*_nv()
+ */
+#define atf_add_nv(NAME, DTYPE, STYPE, FMT) \
+ATF_TC(NAME); \
+ATF_TC_HEAD(NAME, tc) \
+{ \
+ atf_tc_set_md_var(tc, "descr", #NAME); \
+} \
+ATF_TC_BODY(NAME, tc) \
+{ \
+ volatile DTYPE val; \
+ STYPE src; \
+ DTYPE res; \
+ DTYPE exp; \
+ val = (DTYPE)DST; \
+ src = (STYPE)SRC; \
+ exp = (DTYPE)EXPECT; \
+ res = NAME(&val, src); \
+ ATF_REQUIRE_MSG(val == exp, \
+ "val expects " FMT " but " FMT, exp, val); \
+ ATF_REQUIRE_MSG(res == exp, \
+ "res expects " FMT " but " FMT, exp, res); \
+}
+
+atf_add_nv(atomic_add_32_nv, uint32_t, int32_t, "0x%" PRIx32);
+atf_add_nv(atomic_add_int_nv, unsigned int, int, "0x%x");
+atf_add_nv(atomic_add_long_nv, unsigned long, long, "0x%lx");
+atf_add_nv(atomic_add_ptr_nv, void *, ssize_t, "%p");
+#if defined(__HAVE_ATOMIC64_OPS)
+atf_add_nv(atomic_add_64_nv, uint64_t, int64_t, "0x%" PRIx64);
+#endif
+
+ATF_TP_ADD_TCS(tp)
+{
+ ATF_TP_ADD_TC(tp, atomic_add_32);
+ ATF_TP_ADD_TC(tp, atomic_add_int);
+ ATF_TP_ADD_TC(tp, atomic_add_long);
+ ATF_TP_ADD_TC(tp, atomic_add_ptr);
+#if defined(__HAVE_ATOMIC64_OPS)
+ ATF_TP_ADD_TC(tp, atomic_add_64);
+#endif
+
+ ATF_TP_ADD_TC(tp, atomic_add_32_nv);
+ ATF_TP_ADD_TC(tp, atomic_add_int_nv);
+ ATF_TP_ADD_TC(tp, atomic_add_long_nv);
+ ATF_TP_ADD_TC(tp, atomic_add_ptr_nv);
+#if defined(__HAVE_ATOMIC64_OPS)
+ ATF_TP_ADD_TC(tp, atomic_add_64_nv);
+#endif
+
+ return atf_no_error();
+}
diff -r 76fcc8cc13f7 -r 79b05937d925 tests/lib/libc/atomic/t_atomic_and.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/lib/libc/atomic/t_atomic_and.c Sun Feb 17 12:24:17 2019 +0000
@@ -0,0 +1,121 @@
+/* $NetBSD: t_atomic_and.c,v 1.1 2019/02/17 12:24:17 isaki Exp $ */
+
+/*
+ * Copyright (C) 2019 Tetsuya Isaki. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: t_atomic_and.c,v 1.1 2019/02/17 12:24:17 isaki Exp $");
+
+#include <atf-c.h>
+#include <inttypes.h>
+#include <sys/atomic.h>
+
+/*
+ * These tests don't examine the atomicity.
+ */
+
+#define DST (0x1122334455667788UL)
+#define SRC (0xf0f0f0f0f0f0f0f0UL)
+#define EXPECT (0x1020304050607080UL)
+
+/*
+ * atomic_and_*()
+ */
+#define atf_and(NAME, TYPE, FMT) \
+ATF_TC(NAME); \
+ATF_TC_HEAD(NAME, tc) \
+{ \
+ atf_tc_set_md_var(tc, "descr", #NAME); \
+} \
+ATF_TC_BODY(NAME, tc) \
+{ \
+ volatile TYPE val; \
+ TYPE src; \
+ TYPE exp; \
+ val = (TYPE)DST; \
+ src = (TYPE)SRC; \
+ exp = (TYPE)EXPECT; \
+ NAME(&val, src); \
+ ATF_REQUIRE_MSG(val == exp, \
+ "val expects 0x%" FMT " but 0x%" FMT, exp, val); \
+}
+
+atf_and(atomic_and_32, uint32_t, PRIx32);
+atf_and(atomic_and_uint, unsigned int, "x");
+atf_and(atomic_and_ulong, unsigned long, "lx");
+#if defined(__HAVE_ATOMIC64_OPS)
+atf_and(atomic_and_64, uint64_t, PRIx64);
+#endif
+
+/*
+ * atomic_and_*_nv()
+ */
+#define atf_and_nv(NAME, TYPE, FMT) \
+ATF_TC(NAME); \
+ATF_TC_HEAD(NAME, tc) \
+{ \
+ atf_tc_set_md_var(tc, "descr", #NAME); \
+} \
+ATF_TC_BODY(NAME, tc) \
+{ \
+ volatile TYPE val; \
+ TYPE src; \
+ TYPE res; \
+ TYPE exp; \
Home |
Main Index |
Thread Index |
Old Index