diff options
Diffstat (limited to 'tests/sys/kern')
-rw-r--r-- | tests/sys/kern/socket_accf.c | 32 | ||||
-rw-r--r-- | tests/sys/kern/unix_stream.c | 24 |
2 files changed, 45 insertions, 11 deletions
diff --git a/tests/sys/kern/socket_accf.c b/tests/sys/kern/socket_accf.c index ae6522397cf7..939ca9495689 100644 --- a/tests/sys/kern/socket_accf.c +++ b/tests/sys/kern/socket_accf.c @@ -69,14 +69,8 @@ clientsock(struct sockaddr_in *sin) static void accfon(int l, struct accept_filter_arg *af) { - if (setsockopt(l, SOL_SOCKET, SO_ACCEPTFILTER, af, sizeof(*af)) != 0) { - if (errno == ENOENT) - atf_tc_skip("Accept filter %s not loaded in kernel", - af->af_name); - else - atf_tc_fail("setsockopt(SO_ACCEPTFILTER): %s", - strerror(errno)); + atf_tc_fail("setsockopt(SO_ACCEPTFILTER): %s", strerror(errno)); } } @@ -95,7 +89,11 @@ usend(int s, const void *msg, size_t len) return (rv); } -ATF_TC_WITHOUT_HEAD(data); +ATF_TC(data); +ATF_TC_HEAD(data, tc) +{ + atf_tc_set_md_var(tc, "require.kmods", "accf_data"); +} ATF_TC_BODY(data, tc) { struct accept_filter_arg afa = { @@ -113,7 +111,11 @@ ATF_TC_BODY(data, tc) ATF_REQUIRE((a = accept(l, NULL, 0)) > 0); } -ATF_TC_WITHOUT_HEAD(http); +ATF_TC(http); +ATF_TC_HEAD(http, tc) +{ + atf_tc_set_md_var(tc, "require.kmods", "accf_http"); +} ATF_TC_BODY(http, tc) { struct accept_filter_arg afa = { @@ -152,7 +154,11 @@ ATF_TC_BODY(http, tc) ATF_REQUIRE((a = accept(l, NULL, 0)) > 0); } -ATF_TC_WITHOUT_HEAD(tls); +ATF_TC(tls); +ATF_TC_HEAD(tls, tc) +{ + atf_tc_set_md_var(tc, "require.kmods", "accf_tls"); +} ATF_TC_BODY(tls, tc) { struct accept_filter_arg afa = { @@ -210,7 +216,11 @@ ATF_TC_BODY(tls, tc) } /* Check changing to a different filter. */ -ATF_TC_WITHOUT_HEAD(change); +ATF_TC(change); +ATF_TC_HEAD(change, tc) +{ + atf_tc_set_md_var(tc, "require.kmods", "accf_data accf_http"); +} ATF_TC_BODY(change, tc) { struct accept_filter_arg dfa = { diff --git a/tests/sys/kern/unix_stream.c b/tests/sys/kern/unix_stream.c index bb811f78f620..49d621dc5b0a 100644 --- a/tests/sys/kern/unix_stream.c +++ b/tests/sys/kern/unix_stream.c @@ -467,6 +467,29 @@ ATF_TC_BODY(peershutdown_wakeup_kevent, tc) }); } +ATF_TC_WITHOUT_HEAD(ourshutdown_kevent); +ATF_TC_BODY(ourshutdown_kevent, tc) +{ + struct kevent kev; + int sv[2], kq; + + do_socketpair(sv); + ATF_REQUIRE(kq = kqueue()); + + EV_SET(&kev, sv[1], EVFILT_WRITE, EV_ADD, 0, 0, NULL); + ATF_REQUIRE(kevent(kq, &kev, 1, NULL, 0, NULL) == 0); + + ATF_REQUIRE(shutdown(sv[1], SHUT_WR) == 0); + + ATF_REQUIRE(kevent(kq, NULL, 0, &kev, 1, NULL) == 1); + ATF_REQUIRE(kev.ident == (uintptr_t)sv[1] && + kev.filter == EVFILT_WRITE && + kev.flags == EV_EOF); + + close(sv[0]); + close(sv[1]); +} + ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, getpeereid); @@ -482,6 +505,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, peershutdown_wakeup_select); ATF_TP_ADD_TC(tp, peershutdown_wakeup_poll); ATF_TP_ADD_TC(tp, peershutdown_wakeup_kevent); + ATF_TP_ADD_TC(tp, ourshutdown_kevent); return atf_no_error(); } |