Date: Sat, 17 Mar 2018 17:48:21 +0000 (UTC) From: Alan Somers <asomers@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r331103 - head/tests/sys/aio Message-ID: <201803171748.w2HHmLFj074610@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: asomers Date: Sat Mar 17 17:48:21 2018 New Revision: 331103 URL: https://svnweb.freebsd.org/changeset/base/331103 Log: aio: add an ATF test case for aio_fsync error conditions Modified: head/tests/sys/aio/aio_test.c Modified: head/tests/sys/aio/aio_test.c ============================================================================== --- head/tests/sys/aio/aio_test.c Sat Mar 17 17:18:46 2018 (r331102) +++ head/tests/sys/aio/aio_test.c Sat Mar 17 17:48:21 2018 (r331103) @@ -1040,6 +1040,42 @@ ATF_TC_BODY(aio_socket_short_write_cancel, tc) close(s[0]); } +/* + * test aio_fsync's behavior with bad inputs + */ +ATF_TC_WITHOUT_HEAD(aio_fsync_errors); +ATF_TC_BODY(aio_fsync_errors, tc) +{ + int fd; + struct aiocb iocb; + + ATF_REQUIRE_KERNEL_MODULE("aio"); + ATF_REQUIRE_UNSAFE_AIO(); + + fd = open(FILE_PATHNAME, O_RDWR | O_CREAT, 0600); + ATF_REQUIRE_MSG(fd != -1, "open failed: %s", strerror(errno)); + unlink(FILE_PATHNAME); + + /* aio_fsync should return EINVAL unless op is O_SYNC */ + memset(&iocb, 0, sizeof(iocb)); + iocb.aio_fildes = fd; + ATF_CHECK_EQ(-1, aio_fsync(666, &iocb)); + ATF_CHECK_EQ(EINVAL, errno); + + /* aio_fsync should return EBADF if fd is not a valid descriptor */ + memset(&iocb, 0, sizeof(iocb)); + iocb.aio_fildes = 666; + ATF_CHECK_EQ(-1, aio_fsync(O_SYNC, &iocb)); + ATF_CHECK_EQ(EBADF, errno); + + /* aio_fsync should return EINVAL if sigev_notify is invalid */ + memset(&iocb, 0, sizeof(iocb)); + iocb.aio_fildes = fd; + iocb.aio_sigevent.sigev_notify = 666; + ATF_CHECK_EQ(-1, aio_fsync(666, &iocb)); + ATF_CHECK_EQ(EINVAL, errno); +} + /* * This test just performs a basic test of aio_fsync(). */ @@ -1153,6 +1189,7 @@ ATF_TP_ADD_TCS(tp) ATF_TP_ADD_TC(tp, md_suspend); ATF_TP_ADD_TC(tp, md_thread); ATF_TP_ADD_TC(tp, md_waitcomplete); + ATF_TP_ADD_TC(tp, aio_fsync_errors); ATF_TP_ADD_TC(tp, aio_fsync_test); ATF_TP_ADD_TC(tp, aio_large_read_test); ATF_TP_ADD_TC(tp, aio_socket_two_reads);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201803171748.w2HHmLFj074610>