]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
convert socket_test; remove ATF from lib/isc/tests
authorJoey <joey@isc.org>
Fri, 26 Oct 2018 09:07:50 +0000 (17:07 +0800)
committerEvan Hunt <each@isc.org>
Thu, 15 Nov 2018 04:17:04 +0000 (20:17 -0800)
lib/isc/tests/Kyuafile
lib/isc/tests/Makefile.in
lib/isc/tests/socket_test.c

index e96fd6e833879d495c4cf2647bc30f1cafcbd7cb..e2b2498bde375f6ff2ec005682ff187a32d7e20a 100644 (file)
@@ -22,7 +22,7 @@ tap_test_program{name='regex_test'}
 tap_test_program{name='result_test'}
 tap_test_program{name='safe_test'}
 tap_test_program{name='sockaddr_test'}
-atf_test_program{name='socket_test'}
+tap_test_program{name='socket_test'}
 tap_test_program{name='symtab_test'}
 tap_test_program{name='task_test'}
 tap_test_program{name='taskpool_test'}
index 77d2d0e645f64be1f901d8c2f583ac25c42dfc5a..80bbb70cc9e330b1a296dd12b0dc141e98508d85 100644 (file)
@@ -21,10 +21,8 @@ CDEFINES =   -DTESTS="\"${top_builddir}/lib/isc/tests/\""
 ISCLIBS =      ../libisc.@A@ @OPENSSL_LIBS@
 ISCDEPLIBS =   ../libisc.@A@
 
-LIBS =         @LIBS@ @ATFLIBS@
-
-CMOCKA_CFLAGS =        @CMOCKA_CFLAGS@
-CMOCKA_LIBS =  @CMOCKA_LIBS@
+LIBS =         @LIBS@ @CMOCKA_LIBS@
+CFLAGS =       @CFLAGS@ @CMOCKA_CFLAGS@
 
 OBJS =         isctest.@O@
 
@@ -54,145 +52,149 @@ TARGETS = aes_test@EXEEXT@ buffer_test@EXEEXT@ \
 @BIND9_MAKE_RULES@
 
 aes_test@EXEEXT@: aes_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ aes_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 buffer_test@EXEEXT@: buffer_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ buffer_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 counter_test@EXEEXT@: counter_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ counter_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 crc64_test@EXEEXT@: crc64_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} ${LDFLAGS} -o $@ \
-                       crc64_test.@O@ ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
+               ${LDFLAGS} -o $@ crc64_test.@O@ \
+               ${ISCLIBS} ${LIBS}
 
 errno_test@EXEEXT@: errno_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ errno_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 file_test@EXEEXT@: file_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ file_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 hash_test@EXEEXT@: hash_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ hash_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 heap_test@EXEEXT@: heap_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ heap_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 hmac_test@EXEEXT@: hmac_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} ${LDFLAGS} -o $@ \
-                       hmac_test.@O@ ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
+               ${LDFLAGS} -o $@ hmac_test.@O@ \
+               ${ISCLIBS} ${LIBS}
 
 ht_test@EXEEXT@: ht_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ ht_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 lex_test@EXEEXT@: lex_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ lex_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 md_test@EXEEXT@: md_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} ${LDFLAGS} -o $@ \
-                       md_test.@O@ ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
+               ${LDFLAGS} -o $@ md_test.@O@ \
+               ${ISCLIBS} ${LIBS}
 
 mem_test@EXEEXT@: mem_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ mem_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 netaddr_test@EXEEXT@: netaddr_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ netaddr_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 parse_test@EXEEXT@: parse_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ parse_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 pool_test@EXEEXT@: pool_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ pool_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 queue_test@EXEEXT@: queue_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ queue_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 radix_test@EXEEXT@: radix_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ radix_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 random_test@EXEEXT@: random_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ random_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS} -lm
 
 regex_test@EXEEXT@: regex_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ regex_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 result_test@EXEEXT@: result_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ result_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 safe_test@EXEEXT@: safe_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ safe_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 socket_test@EXEEXT@: socket_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
-                       socket_test.@O@ isctest.@O@ ${ISCLIBS} ${LIBS}
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
+               ${LDFLAGS} -o $@ socket_test.@O@ isctest.@O@ \
+               ${ISCLIBS} ${LIBS}
 
 sockaddr_test@EXEEXT@: sockaddr_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ sockaddr_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 symtab_test@EXEEXT@: symtab_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ symtab_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 task_test@EXEEXT@: task_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ task_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 taskpool_test@EXEEXT@: taskpool_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ taskpool_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 time_test@EXEEXT@: time_test.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ time_test.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 timer_test@EXEEXT@: timer_test.@O@ isctest.@O@ ${ISCDEPLIBS}
-       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${CMOCKA_CFLAGS} \
+       ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} \
                ${LDFLAGS} -o $@ timer_test.@O@ isctest.@O@ \
-               ${ISCLIBS} ${LIBS} ${CMOCKA_LIBS}
+               ${ISCLIBS} ${LIBS}
 
 unit::
        sh ${top_builddir}/unit/unittest.sh
index 5342961fa7cc968d23f2041976aaa31ced9179cd..e7784b0b95dc4de5f59f503a8f4cbba2bc9f7c4a 100644 (file)
 
 #include <config.h>
 
-#include <atf-c.h>
+#if HAVE_CMOCKA
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
 
 #include <stdbool.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <time.h>
 
+#define UNIT_TESTING
+#include <cmocka.h>
+
 #include <isc/platform.h>
 #include <isc/socket.h>
 #include <isc/task.h>
@@ -35,6 +42,27 @@ static bool recv_trunc;
  * Helper functions
  */
 
+static int
+_setup(void **state) {
+       isc_result_t result;
+
+       UNUSED(state);
+
+       result = isc_test_begin(NULL, true, 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+
+       return (0);
+}
+
+static int
+_teardown(void **state) {
+       UNUSED(state);
+
+       isc_test_end();
+
+       return (0);
+}
+
 typedef struct {
        bool done;
        isc_result_t result;
@@ -56,8 +84,9 @@ accept_done(isc_task_t *task, isc_event_t *event) {
 
        completion->result = nevent->result;
        completion->done = true;
-       if (completion->result == ISC_R_SUCCESS)
+       if (completion->result == ISC_R_SUCCESS) {
                completion->socket = nevent->newsocket;
+       }
 
        isc_event_free(&event);
 }
@@ -88,23 +117,11 @@ waitfor(completion_t *completion) {
        while (!completion->done && i++ < 5000) {
                isc_test_nap(1000);
        }
-       if (completion->done)
+       if (completion->done) {
                return (ISC_R_SUCCESS);
-       return (ISC_R_FAILURE);
-}
-
-#if 0
-static isc_result_t
-waitfor(completion_t *completion) {
-       int i = 0;
-       while (!completion->done && i++ < 5000) {
-               waitbody();
        }
-       if (completion->done)
-               return (ISC_R_SUCCESS);
        return (ISC_R_FAILURE);
 }
-#endif
 
 static void
 waitbody(void) {
@@ -118,8 +135,9 @@ waitfor2(completion_t *c1, completion_t *c2) {
        while (!(c1->done && c2->done) && i++ < 5000) {
                waitbody();
        }
-       if (c1->done && c2->done)
+       if (c1->done && c2->done) {
                return (ISC_R_SUCCESS);
+       }
        return (ISC_R_FAILURE);
 }
 
@@ -128,11 +146,8 @@ waitfor2(completion_t *c1, completion_t *c2) {
  */
 
 /* Test UDP sendto/recv (IPv4) */
-ATF_TC(udp_sendto);
-ATF_TC_HEAD(udp_sendto, tc) {
-       atf_tc_set_md_var(tc, "descr", "UDP sendto/recv");
-}
-ATF_TC_BODY(udp_sendto, tc) {
+static void
+udp_sendto_test(void **state)  {
        isc_result_t result;
        isc_sockaddr_t addr1, addr2;
        struct in_addr in;
@@ -142,35 +157,30 @@ ATF_TC_BODY(udp_sendto, tc) {
        completion_t completion;
        isc_region_t r;
 
-       UNUSED(tc);
-
-       result = isc_test_begin(NULL, true, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       UNUSED(state);
 
        in.s_addr = inet_addr("127.0.0.1");
        isc_sockaddr_fromin(&addr1, &in, 0);
        isc_sockaddr_fromin(&addr2, &in, 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s1);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s1, &addr1, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s1, &addr1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr1) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr1) != 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s2);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s2, &addr2, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s2, &addr2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr2) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr2) != 0);
 
        result = isc_task_create(taskmgr, 0, &task);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        snprintf(sendbuf, sizeof(sendbuf), "Hello");
        r.base = (void *) sendbuf;
@@ -179,35 +189,31 @@ ATF_TC_BODY(udp_sendto, tc) {
        completion_init(&completion);
        result = isc_socket_sendto(s1, &r, task, event_done, &completion,
                                   &addr2, NULL);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        result = isc_socket_recv(s2, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
 
        isc_task_detach(&task);
 
        isc_socket_detach(&s1);
        isc_socket_detach(&s2);
 
-       isc_test_end();
 }
 
 /* Test UDP sendto/recv with duplicated socket */
-ATF_TC(udp_dup);
-ATF_TC_HEAD(udp_dup, tc) {
-       atf_tc_set_md_var(tc, "descr", "duplicated socket sendto/recv");
-}
-ATF_TC_BODY(udp_dup, tc) {
+static void
+udp_dup_test(void **state) {
        isc_result_t result;
        isc_sockaddr_t addr1, addr2;
        struct in_addr in;
@@ -217,38 +223,33 @@ ATF_TC_BODY(udp_dup, tc) {
        completion_t completion;
        isc_region_t r;
 
-       UNUSED(tc);
-
-       result = isc_test_begin(NULL, true, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       UNUSED(state);
 
        in.s_addr = inet_addr("127.0.0.1");
        isc_sockaddr_fromin(&addr1, &in, 0);
        isc_sockaddr_fromin(&addr2, &in, 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s1);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s1, &addr1, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s1, &addr1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr1) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr1) != 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s2);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s2, &addr2, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s2, &addr2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr2) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr2) != 0);
 
        result = isc_socket_dup(s2, &s3);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_task_create(taskmgr, 0, &task);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        snprintf(sendbuf, sizeof(sendbuf), "Hello");
        r.base = (void *) sendbuf;
@@ -257,10 +258,10 @@ ATF_TC_BODY(udp_dup, tc) {
        completion_init(&completion);
        result = isc_socket_sendto(s1, &r, task, event_done, &completion,
                                   &addr2, NULL);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        snprintf(sendbuf, sizeof(sendbuf), "World");
        r.base = (void *) sendbuf;
@@ -269,30 +270,30 @@ ATF_TC_BODY(udp_dup, tc) {
        completion_init(&completion);
        result = isc_socket_sendto(s1, &r, task, event_done, &completion,
                                   &addr2, NULL);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        result = isc_socket_recv(s2, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        result = isc_socket_recv(s3, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "World");
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "World");
 
        isc_task_detach(&task);
 
@@ -300,15 +301,11 @@ ATF_TC_BODY(udp_dup, tc) {
        isc_socket_detach(&s2);
        isc_socket_detach(&s3);
 
-       isc_test_end();
 }
 
-/* Test TCP sendto/recv (IPv4) */
-ATF_TC(udp_dscp_v4);
-ATF_TC_HEAD(udp_dscp_v4, tc) {
-       atf_tc_set_md_var(tc, "descr", "UDP DSCP IPV4");
-}
-ATF_TC_BODY(udp_dscp_v4, tc) {
+/* Test UDP sendto/recv (IPv4) */
+static void
+udp_dscp_v4_test(void **state) {
        isc_result_t result;
        isc_sockaddr_t addr1, addr2;
        struct in_addr in;
@@ -319,40 +316,31 @@ ATF_TC_BODY(udp_dscp_v4, tc) {
        isc_region_t r;
        isc_socketevent_t *socketevent;
 
-       UNUSED(tc);
+       UNUSED(state);
 
-       result = isc_test_begin(NULL, true, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        in.s_addr = inet_addr("127.0.0.1");
        isc_sockaddr_fromin(&addr1, &in, 0);
        isc_sockaddr_fromin(&addr2, &in, 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s1, &addr1, ISC_SOCKET_REUSEADDRESS);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s1, &addr1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr1) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr1) != 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s2, &addr2, ISC_SOCKET_REUSEADDRESS);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s2, &addr2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr2) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr2) != 0);
 
        result = isc_task_create(taskmgr, 0, &task);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        snprintf(sendbuf, sizeof(sendbuf), "Hello");
        r.base = (void *) sendbuf;
@@ -362,7 +350,7 @@ ATF_TC_BODY(udp_dscp_v4, tc) {
 
        socketevent = isc_socket_socketevent(mctx, s1, ISC_SOCKEVENT_SENDDONE,
                                             event_done, &completion);
-       ATF_REQUIRE(socketevent != NULL);
+       assert_non_null(socketevent);
 
        if ((isc_net_probedscp() & ISC_NET_DSCPPKTV4) != 0) {
                socketevent->dscp = 056; /* EF */
@@ -377,41 +365,37 @@ ATF_TC_BODY(udp_dscp_v4, tc) {
        recv_dscp_value = 0;
 
        result = isc_socket_sendto2(s1, &r, task, &addr2, NULL, socketevent, 0);
-       ATF_REQUIRE_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        result = isc_socket_recv(s2, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
 
        if ((isc_net_probedscp() & ISC_NET_DSCPRECVV4) != 0) {
-               ATF_CHECK(recv_dscp);
-               ATF_CHECK_EQ(recv_dscp_value, 056);
-       } else
-               ATF_CHECK(!recv_dscp);
+               assert_true(recv_dscp);
+               assert_int_equal(recv_dscp_value, 056);
+       } else {
+               assert_false(recv_dscp);
+       }
        isc_task_detach(&task);
 
        isc_socket_detach(&s1);
        isc_socket_detach(&s2);
 
-       isc_test_end();
 }
 
-/* Test TCP sendto/recv (IPv4) */
-ATF_TC(udp_dscp_v6);
-ATF_TC_HEAD(udp_dscp_v6, tc) {
-       atf_tc_set_md_var(tc, "descr", "udp dscp ipv6");
-}
-ATF_TC_BODY(udp_dscp_v6, tc) {
+/* Test UDP sendto/recv (IPv6) */
+static void
+udp_dscp_v6_test(void **state) {
        isc_result_t result;
        isc_sockaddr_t addr1, addr2;
        struct in6_addr in6;
@@ -423,43 +407,34 @@ ATF_TC_BODY(udp_dscp_v6, tc) {
        isc_socketevent_t *socketevent;
        int n;
 
-       UNUSED(tc);
+       UNUSED(state);
 
-       result = isc_test_begin(NULL, true, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        n = inet_pton(AF_INET6, "::1", &in6.s6_addr);
-       ATF_REQUIRE(n == 1);
+       assert_true(n == 1);
        isc_sockaddr_fromin6(&addr1, &in6, 0);
        isc_sockaddr_fromin6(&addr2, &in6, 0);
 
        result = isc_socket_create(socketmgr, PF_INET6, isc_sockettype_udp,
                                   &s1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s1, &addr1, 0);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s1, &addr1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr1) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr1) != 0);
 
        result = isc_socket_create(socketmgr, PF_INET6, isc_sockettype_udp,
                                   &s2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s2, &addr2, 0);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s2, &addr2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr2) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr2) != 0);
 
        result = isc_task_create(taskmgr, 0, &task);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        snprintf(sendbuf, sizeof(sendbuf), "Hello");
        r.base = (void *) sendbuf;
@@ -469,52 +444,50 @@ ATF_TC_BODY(udp_dscp_v6, tc) {
 
        socketevent = isc_socket_socketevent(mctx, s1, ISC_SOCKEVENT_SENDDONE,
                                             event_done, &completion);
-       ATF_REQUIRE(socketevent != NULL);
+       assert_non_null(socketevent);
 
        if ((isc_net_probedscp() & ISC_NET_DSCPPKTV6) != 0) {
                socketevent->dscp = 056; /* EF */
                socketevent->attributes = ISC_SOCKEVENTATTR_DSCP;
-       } else if ((isc_net_probedscp() & ISC_NET_DSCPSETV6) != 0)
+       } else if ((isc_net_probedscp() & ISC_NET_DSCPSETV6) != 0) {
                isc_socket_dscp(s1, 056);  /* EF */
+       }
 
        recv_dscp = false;
        recv_dscp_value = 0;
 
        result = isc_socket_sendto2(s1, &r, task, &addr2, NULL, socketevent, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        result = isc_socket_recv(s2, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
        if ((isc_net_probedscp() & ISC_NET_DSCPRECVV6) != 0) {
-               ATF_CHECK(recv_dscp);
-               ATF_CHECK_EQ(recv_dscp_value, 056);
-       } else
-               ATF_CHECK(!recv_dscp);
+               assert_true(recv_dscp);
+               assert_int_equal(recv_dscp_value, 056);
+       } else {
+               assert_false(recv_dscp);
+       }
 
        isc_task_detach(&task);
 
        isc_socket_detach(&s1);
        isc_socket_detach(&s2);
 
-       isc_test_end();
 }
 
 /* Test TCP sendto/recv (IPv4) */
-ATF_TC(tcp_dscp_v4);
-ATF_TC_HEAD(tcp_dscp_v4, tc) {
-       atf_tc_set_md_var(tc, "descr", "tcp dscp ipv4");
-}
-ATF_TC_BODY(tcp_dscp_v4, tc) {
+static void
+tcp_dscp_v4_test(void **state) {
        isc_result_t result;
        isc_sockaddr_t addr1;
        struct in_addr in;
@@ -524,45 +497,42 @@ ATF_TC_BODY(tcp_dscp_v4, tc) {
        completion_t completion, completion2;
        isc_region_t r;
 
-       UNUSED(tc);
+       UNUSED(state);
 
-       result = isc_test_begin(NULL, true, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        in.s_addr = inet_addr("127.0.0.1");
        isc_sockaddr_fromin(&addr1, &in, 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_tcp, &s1);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_socket_bind(s1, &addr1, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s1, &addr1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr1) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr1) != 0);
 
        result = isc_socket_listen(s1, 3);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_tcp, &s2);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_task_create(taskmgr, 0, &task);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        completion_init(&completion2);
        result = isc_socket_accept(s1, task, accept_done, &completion2);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        completion_init(&completion);
        result = isc_socket_connect(s2, &addr1, task, event_done, &completion);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor2(&completion, &completion2);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK(completion2.done);
-       ATF_CHECK_EQ(completion2.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_true(completion2.done);
+       assert_int_equal(completion2.result, ISC_R_SUCCESS);
        s3 = completion2.socket;
 
        isc_socket_dscp(s2, 056);  /* EF */
@@ -577,26 +547,28 @@ ATF_TC_BODY(tcp_dscp_v4, tc) {
        completion_init(&completion);
        result = isc_socket_sendto(s2, &r, task, event_done, &completion,
                                   NULL, NULL);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        result = isc_socket_recv(s3, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
 
        if ((isc_net_probedscp() & ISC_NET_DSCPRECVV4) != 0) {
-               if (recv_dscp)
-                       ATF_CHECK_EQ(recv_dscp_value, 056);
-       } else
-               ATF_CHECK(!recv_dscp);
+               if (recv_dscp) {
+                       assert_int_equal(recv_dscp_value, 056);
+               }
+       } else {
+               assert_false(recv_dscp);
+       }
 
        isc_task_detach(&task);
 
@@ -604,15 +576,11 @@ ATF_TC_BODY(tcp_dscp_v4, tc) {
        isc_socket_detach(&s2);
        isc_socket_detach(&s3);
 
-       isc_test_end();
 }
 
 /* Test TCP sendto/recv (IPv6) */
-ATF_TC(tcp_dscp_v6);
-ATF_TC_HEAD(tcp_dscp_v6, tc) {
-       atf_tc_set_md_var(tc, "descr", "tcp dscp ipv6");
-}
-ATF_TC_BODY(tcp_dscp_v6, tc) {
+static void
+tcp_dscp_v6_test(void **state) {
        isc_result_t result;
        isc_sockaddr_t addr1;
        struct in6_addr in6;
@@ -623,48 +591,45 @@ ATF_TC_BODY(tcp_dscp_v6, tc) {
        isc_region_t r;
        int n;
 
-       UNUSED(tc);
+       UNUSED(state);
 
-       result = isc_test_begin(NULL, true, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
 
        n = inet_pton(AF_INET6, "::1", &in6.s6_addr);
-       ATF_REQUIRE(n == 1);
+       assert_true(n == 1);
        isc_sockaddr_fromin6(&addr1, &in6, 0);
 
        result = isc_socket_create(socketmgr, PF_INET6, isc_sockettype_tcp,
                                   &s1);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_socket_bind(s1, &addr1, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s1, &addr1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr1) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr1) != 0);
 
        result = isc_socket_listen(s1, 3);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_socket_create(socketmgr, PF_INET6, isc_sockettype_tcp,
                                   &s2);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        result = isc_task_create(taskmgr, 0, &task);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        completion_init(&completion2);
        result = isc_socket_accept(s1, task, accept_done, &completion2);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        completion_init(&completion);
        result = isc_socket_connect(s2, &addr1, task, event_done, &completion);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor2(&completion, &completion2);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK(completion2.done);
-       ATF_CHECK_EQ(completion2.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_true(completion2.done);
+       assert_int_equal(completion2.result, ISC_R_SUCCESS);
        s3 = completion2.socket;
 
        isc_socket_dscp(s2, 056);  /* EF */
@@ -679,30 +644,32 @@ ATF_TC_BODY(tcp_dscp_v6, tc) {
        completion_init(&completion);
        result = isc_socket_sendto(s2, &r, task, event_done, &completion,
                                   NULL, NULL);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        result = isc_socket_recv(s3, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
 
        if ((isc_net_probedscp() & ISC_NET_DSCPRECVV6) != 0) {
                /*
                 * IPV6_RECVTCLASS is undefined for TCP however
                 * if we do get it it should be the value we set.
                 */
-               if (recv_dscp)
-                       ATF_CHECK_EQ(recv_dscp_value, 056);
-       } else
-               ATF_CHECK(!recv_dscp);
+               if (recv_dscp) {
+                       assert_int_equal(recv_dscp_value, 056);
+               }
+       } else {
+               assert_false(recv_dscp);
+       }
 
        isc_task_detach(&task);
 
@@ -710,36 +677,27 @@ ATF_TC_BODY(tcp_dscp_v6, tc) {
        isc_socket_detach(&s2);
        isc_socket_detach(&s3);
 
-       isc_test_end();
 }
 
-ATF_TC(net_probedscp);
-ATF_TC_HEAD(net_probedscp, tc) {
-       atf_tc_set_md_var(tc, "descr", "probe dscp capabilities");
-}
-ATF_TC_BODY(net_probedscp, tc) {
+/* probe dscp capabilities */
+static void
+net_probedscp_test(void **state) {
        unsigned int n;
 
-       UNUSED(tc);
+       UNUSED(state);
 
        n = isc_net_probedscp();
-       ATF_CHECK((n & ~ISC_NET_DSCPALL) == 0);
+       assert_true((n & ~ISC_NET_DSCPALL) == 0);
 
        /* ISC_NET_DSCPSETV4 MUST be set if any is set. */
-       if (n & (ISC_NET_DSCPSETV4|ISC_NET_DSCPPKTV4|ISC_NET_DSCPRECVV4))
-               ATF_CHECK_MSG((n & ISC_NET_DSCPSETV4) != 0,
-                             "IPv4:%s%s%s\n",
-                             (n & ISC_NET_DSCPSETV4) ? " set" : " none",
-                             (n & ISC_NET_DSCPPKTV4) ? " packet" : "",
-                             (n & ISC_NET_DSCPRECVV4) ? " receive" : "");
+       if (n & (ISC_NET_DSCPPKTV4|ISC_NET_DSCPRECVV4)) {
+               assert_true((n & ISC_NET_DSCPSETV4) != 0);
+       }
 
        /* ISC_NET_DSCPSETV6 MUST be set if any is set. */
-       if (n & (ISC_NET_DSCPSETV6|ISC_NET_DSCPPKTV6|ISC_NET_DSCPRECVV6))
-               ATF_CHECK_MSG((n & ISC_NET_DSCPSETV6) != 0,
-                             "IPv6:%s%s%s\n",
-                             (n & ISC_NET_DSCPSETV6) ? " set" : " none",
-                             (n & ISC_NET_DSCPPKTV6) ? " packet" : "",
-                             (n & ISC_NET_DSCPRECVV6) ? " receive" : "");
+       if (n & (ISC_NET_DSCPPKTV6|ISC_NET_DSCPRECVV6)) {
+               assert_true((n & ISC_NET_DSCPSETV6) != 0);
+       }
 
 #if 0
        fprintf(stdout, "IPv4:%s%s%s\n",
@@ -755,11 +713,8 @@ ATF_TC_BODY(net_probedscp, tc) {
 }
 
 /* Test UDP truncation detection */
-ATF_TC(udp_trunc);
-ATF_TC_HEAD(udp_trunc, tc) {
-       atf_tc_set_md_var(tc, "descr", "UDP Truncation detection");
-}
-ATF_TC_BODY(udp_trunc, tc) {
+static void
+udp_trunc_test(void **state) {
        isc_result_t result;
        isc_sockaddr_t addr1, addr2;
        struct in_addr in;
@@ -770,40 +725,29 @@ ATF_TC_BODY(udp_trunc, tc) {
        isc_region_t r;
        isc_socketevent_t *socketevent;
 
-       UNUSED(tc);
-
-       result = isc_test_begin(NULL, true, 0);
-       ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
+       UNUSED(state);
 
        in.s_addr = inet_addr("127.0.0.1");
        isc_sockaddr_fromin(&addr1, &in, 0);
        isc_sockaddr_fromin(&addr2, &in, 0);
 
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s1, &addr1, ISC_SOCKET_REUSEADDRESS);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s1, &addr1);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr1) != 0);
-
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr1) != 0);
        result = isc_socket_create(socketmgr, PF_INET, isc_sockettype_udp, &s2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_bind(s2, &addr2, ISC_SOCKET_REUSEADDRESS);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        result = isc_socket_getsockname(s2, &addr2);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                        isc_result_totext(result));
-       ATF_REQUIRE(isc_sockaddr_getport(&addr2) != 0);
+       assert_int_equal(result, ISC_R_SUCCESS);
+       assert_true(isc_sockaddr_getport(&addr2) != 0);
 
        result = isc_task_create(taskmgr, 0, &task);
-       ATF_CHECK_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
 
        /*
         * Send a message that will not be truncated.
@@ -817,26 +761,25 @@ ATF_TC_BODY(udp_trunc, tc) {
 
        socketevent = isc_socket_socketevent(mctx, s1, ISC_SOCKEVENT_SENDDONE,
                                             event_done, &completion);
-       ATF_REQUIRE(socketevent != NULL);
+       assert_non_null(socketevent);
 
        result = isc_socket_sendto2(s1, &r, task, &addr2, NULL, socketevent, 0);
-       ATF_REQUIRE_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        recv_trunc = false;
        result = isc_socket_recv(s2, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
-       ATF_CHECK_EQ(recv_trunc, false);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
+       assert_false(recv_trunc);
 
        /*
         * Send a message that will be truncated.
@@ -850,47 +793,68 @@ ATF_TC_BODY(udp_trunc, tc) {
 
        socketevent = isc_socket_socketevent(mctx, s1, ISC_SOCKEVENT_SENDDONE,
                                             event_done, &completion);
-       ATF_REQUIRE(socketevent != NULL);
+       assert_non_null(socketevent);
 
        result = isc_socket_sendto2(s1, &r, task, &addr2, NULL, socketevent, 0);
-       ATF_REQUIRE_EQ_MSG(result, ISC_R_SUCCESS, "%s",
-                          isc_result_totext(result));
+       assert_int_equal(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
 
        r.base = (void *) recvbuf;
        r.length = BUFSIZ;
        completion_init(&completion);
        recv_trunc = false;
        result = isc_socket_recv(s2, &r, 1, task, event_done, &completion);
-       ATF_CHECK_EQ(result, ISC_R_SUCCESS);
        waitfor(&completion);
-       ATF_CHECK(completion.done);
-       ATF_CHECK_EQ(completion.result, ISC_R_SUCCESS);
-       ATF_CHECK_STREQ(recvbuf, "Hello");
-       ATF_CHECK_EQ(recv_trunc, true);
+       assert_true(completion.done);
+       assert_int_equal(completion.result, ISC_R_SUCCESS);
+       assert_string_equal(recvbuf, "Hello");
+       assert_true(recv_trunc);
 
        isc_task_detach(&task);
 
        isc_socket_detach(&s1);
        isc_socket_detach(&s2);
 
-       isc_test_end();
 }
 
 /*
  * Main
  */
-ATF_TP_ADD_TCS(tp) {
-       ATF_TP_ADD_TC(tp, udp_sendto);
-       ATF_TP_ADD_TC(tp, udp_dup);
-       ATF_TP_ADD_TC(tp, tcp_dscp_v4);
-       ATF_TP_ADD_TC(tp, tcp_dscp_v6);
-       ATF_TP_ADD_TC(tp, udp_dscp_v4);
-       ATF_TP_ADD_TC(tp, udp_dscp_v6);
-       ATF_TP_ADD_TC(tp, net_probedscp);
-       ATF_TP_ADD_TC(tp, udp_trunc);
-
-       return (atf_no_error());
+int
+main(void) {
+       const struct CMUnitTest tests[] = {
+               cmocka_unit_test_setup_teardown(udp_sendto_test,
+                                               _setup, _teardown),
+               cmocka_unit_test_setup_teardown(udp_dup_test,
+                                               _setup, _teardown),
+               cmocka_unit_test_setup_teardown(tcp_dscp_v4_test,
+                                               _setup, _teardown),
+               cmocka_unit_test_setup_teardown(tcp_dscp_v6_test,
+                                               _setup, _teardown),
+               cmocka_unit_test_setup_teardown(udp_dscp_v4_test,
+                                               _setup, _teardown),
+               cmocka_unit_test_setup_teardown(udp_dscp_v6_test,
+                                               _setup, _teardown),
+               cmocka_unit_test_setup_teardown(net_probedscp_test,
+                                               _setup, _teardown),
+               cmocka_unit_test_setup_teardown(udp_trunc_test,
+                                               _setup, _teardown),
+       };
+
+       return (cmocka_run_group_tests(tests, NULL, NULL));
+}
+
+#else /* HAVE_CMOCKA */
+
+#include <stdio.h>
+
+int
+main(void) {
+       printf("1..0 # Skipped: cmocka not available\n");
+       return (0);
+
 }
+
+#endif