aboutsummaryrefslogtreecommitdiff
path: root/tests/sys/kqueue/libkqueue
Commit message (Collapse)AuthorAgeFilesLines
* tests/kqueue: repair flaky testGleb Smirnoff2025-06-241-1/+1
| | | | | | | | | | | | | | The test arms timer for 500 msec and then sleeps 1 second and expects that the timer would always fire exactly 2 times. However, it has a chance to legitimately fire only once. This makes the test flaky. Fix the test reducing sleep time down to 495 msec. The problem started to show up recently, and I attribute that to 626ea75ed2e9. Before this revision sleep(3) was almost always sleeping over 1000 msec, now it can sleep exactly 1000 msec. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D50996
* Remove residual blank line at start of MakefileWarner Losh2024-07-151-1/+0
| | | | | | | This is a residual of the $FreeBSD$ removal. MFC After: 3 days (though I'll just run the command on the branches) Sponsored by: Netflix
* Remove $FreeBSD$: one-line sh patternWarner Losh2023-08-162-2/+0
| | | | Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/
* Remove $FreeBSD$: one-line .c comment patternWarner Losh2023-08-161-1/+0
| | | | Remove /^/[*/]\s*\$FreeBSD\$.*\n/
* Remove $FreeBSD$: two-line .h patternWarner Losh2023-08-168-16/+0
| | | | Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
* kqueue tests: Simplify the test runnerMark Johnston2022-05-252-21/+2
| | | | | | | | | | | Just invoke the test program directly instead of trying to convert its output to TAP format. The test suite is all or nothing; there's no way to enumerate individual test cases, so there's no advantage in trying to massage its output, and doing so throws away information that's useful when diagnosing test failures. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
* kqueue tests: Add new EVFILT_TIMER regression tests from upstreamMark Johnston2022-05-252-2/+128
| | | | | | | | | | | | | | | | | | | One of the tests exposes the regression reported in PR 264131. One test is disabled because FreeBSD does not support setting EV_ONESHOT on an already-added periodic timer. Though, in this case the flag is simply ignored, which isn't ideal. One test is slightly modified to set EV_ADD when reconfiguring a disabled timer per some commentary in PR 258412. Ideally we would re-import the test suite from libkqueue but there is a fair bit of divergence so this will require some effort. This just gets us one small step closer while increasing test coverage. PR: 258412 MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
* kqueue tests: Add file and line info to some test failure outputMark Johnston2022-05-252-8/+9
| | | | | | | | This brings us slightly closer to upstream and is useful when debugging test failures. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
* kqueue tests: Re-enable kqueue proc testsMark Johnston2022-05-251-4/+1
| | | | | | | | | | | | - Some EVFILT_PROC bugs were fixed around the time that the tests were disabled. - I can't reproduce any failures locally. - Jenkins logs referenced from the PR are gone, so let's re-enable the tests and see whether a problem persists. PR: 233586 MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
* fifos: delegate unhandled kqueue filters to underlying filesystemKyle Evans2021-10-122-0/+61
| | | | | | | | | | | | This gives the vfs layer a chance to provide handling for EVFILT_VNODE, for instance. Change pipe_specops to use the default vop_kqfilter to accommodate fifoops that don't specify the method (i.e. all in-tree). Based on a patch by Jan Kokemüller. PR: 225934 Reviewed by: kib, markj (both pre-KASSERT) Differential Revision: https://reviews.freebsd.org/D32271
* kqueue: fix recent assertionKyle Evans2021-10-011-0/+30
| | | | | | | | | | NOTE_ABSTIME may also have a zero timeout, which indicates that we should still fire immediately as an absolute time in the past. A test has been added for this one as well. Fixes: 9c999a259f00 ("kqueue: don't arbitrarily restrict long-past...") Point hat: kevans Reported by: syzbot+1c8d1154f560b3930042@syzkaller.appspotmail.com
* kqueue: don't arbitrarily restrict long-past values for NOTE_ABSTIMEKyle Evans2021-10-011-0/+84
| | | | | | | | | | | | | | | | | | NOTE_ABSTIME values are converted to values relative to boottime in filt_timervalidate(), and negative values are currently rejected. We don't reject times in the past in general, so clamp this up to 0 as needed such that the timer fires immediately rather than imposing what looks like an arbitrary restriction. Another possible scenario is that the system clock had to be adjusted by ~minutes or ~hours and we have less than that in terms of uptime, making a reasonable short-timeout suddenly invalid. Firing it is still a valid choice in this scenario so that applications can at least expect a consistent behavior. Reviewed by: kib, markj Discussed with: allanjude Differential Revision: https://reviews.freebsd.org/D32230
* kqueue: Add EV_KEEPUDATA flagNathaniel Wesley Filardo2021-09-241-0/+60
| | | | | | | | | | | When this flag is set, operations that update an existing kevent will not change the udata field. This can be used to NOTE_TRIGGER or EV_{EN,DIS}ABLE events without overwriting the stashed pointer. Reviewed by: Domagoj Stolfa <domagoj.stolfa@gmail.com> Obtained from: CheriBSD Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D30286
* Enable timer tests in sys.kqueue.libkqueue.kqueue_test.main on i386Li-Wen Hsu2020-04-221-6/+1
| | | | | | | | | | They were fixed in r360140 PR: 245768 Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=360192
* Remove extern from function declarations in common.hAlex Richardson2020-04-211-11/+11
| | | | | | | Suggested by: cem Notes: svn path=/head/; revision=360152
* Temporarily skip timer tests in sys.kqueue.libkqueue.kqueue_test.main on i386Li-Wen Hsu2020-04-201-2/+9
| | | | | | | | PR: 245768 Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=360130
* tests: kqueue: fix some issues with now() on ILP32 platformsKyle Evans2020-04-201-10/+9
| | | | | | | | | | | | | | | | | | | There were ultimately two separate problems here: - a 32-bit long cannot represent microseconds since 1970 (noted by ian) - time_t is 32-bit on i386, so now() was wrong anyways even with the correct return type. For the first, just explicitly use a uint64_t for now() and all of the callers. For the second, we need to explicitly cast tv_sec to uint64_t before it gets multiplied in the SEC_TO_US macro. Casting this instance rather than generally in the macro was arbitrarily chosen simply because all other uses are converting small relative time values. The tests now pass on i386, at least; presumably other ILP32 will be fine now as well. Notes: svn path=/head/; revision=360108
* Fix various warnings in tests/sys/kqueue and bump WARNSAlex Richardson2020-04-189-70/+68
| | | | | | | | Reviewed By: kevans Differential Revision: https://reviews.freebsd.org/D24296 Notes: svn path=/head/; revision=360073
* tests: kqueue: use a more precise timer for the NOTE_ABSTIME testKyle Evans2020-04-171-8/+8
| | | | | | | | | | | | | | | | | Originally noticed while attempting to run the kqueue tests under qemu-user-static, this apparently just happens sometimes when running in a jail in general -- the timer will fire off "too early," but it's really just the result of imprecise measurements (noted by cem). Kicking this over to NOTE_USECONDS still tests the correct thing while allowing it to work more consistently; a basic sanity test reveals that we often end up coming in just less than 200 microseconds after the timer fired off. MFC after: 3 days Notes: svn path=/head/; revision=360033
* kqueue tests: fix -fno-common buildKyle Evans2020-04-067-7/+2
| | | | | | | | | | | | | | | vnode_fd and kqfd are both shared among multiple CU; define them exactly once. In the case of vnode_fd, it was simply the declaration that needed correction. -fno-common will become the default in GCC10/LLVM11. MFC after: 3 days Notes: svn path=/head/; revision=359675
* Temporarily skip flakey test casesLi-Wen Hsu2018-12-061-1/+2
| | | | | | | | | | PR: 233586, 233587, 233588 Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D18362 Notes: svn path=/head/; revision=341623
* Make whitespace more consistent in libkqueue tests.David Bright2018-11-276-126/+123
| | | | | | | | | | | | | | | | After r337820, which "corrected" some spaces-instead-of-tab whitespace issues in the libkqueue tests, jmg@ pointed out that these files were originally space-based, not tab-spaced, and so the correction should have been to get rid of the tabs that had been introduced in previous changes, not the spaces. This change does that. This is a whitespace only change; no functional change is intended. Reported by: jmg@ MFC after: 3 days Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=341068
* Fix a couple whitespace errors in r337814.David Bright2018-08-141-4/+4
| | | | | | | | | | Reported by: Renato Botelho <garga.bsd@gmail.com> MFC after: 3 days X-MFC-with: r337814 Sponsored by: Dell EMC Notes: svn path=/head/; revision=337820
* Fix several (more) memory leaks.David Bright2018-08-141-3/+14
| | | | | | | | | | | | | | A follow-up to r337812 to catch a couple more memory leaks that should have been included in that change. Reported by: Coverity CID: 1296064, 1296067 (for real this time) MFC after: 3 days X-MFC-with: r337812 Sponsored by: Dell EMC Notes: svn path=/head/; revision=337814
* Fix several memory leaks.David Bright2018-08-143-7/+21
| | | | | | | | | | | | | | | | | The libkqueue tests have several places that leak memory by using an idiom like: puts(kevent_to_str(kevp)); Rework to save the pointer returned from kevent_to_str() and then free() it after it has been used. Reported by: asomers (pointer to Coverity), Coverity CID: 1296063, 1296064, 1296065, 1296066, 1296067, 1350287, 1394960 Sponsored by: Dell EMC Notes: svn path=/head/; revision=337812
* Correct possible misleading error message in kqtest.David Bright2018-07-301-5/+7
| | | | | | | | | | | | | | | | | | | | ian@ pointed out that in the test_abstime() function time(NULL) is used twice; once in an "if" test and again in the enclosed error message. If the true branch was taken and the process got preempted before the second time(NULL) call, by the time the error message was generated enough time could have elapsed that the message could claim that the event came "too early" but print an event time that was after the expected timeout. Correct by making the time(NULL) call only once and using that returned time in both the "if" test and the error message. Reported by: ian@ MFC after: 4 days X-MFC-with: r336761, r336781, r336802 Sponsored by: Dell EMC Notes: svn path=/head/; revision=336905
* Fix compilation error on some arches after r336761 & r336781.David Bright2018-07-281-1/+1
| | | | | | | | | | | | | Another cast for printing an intmax_t was needed in a kqueue test for some arches. Pointy-hat: me (twice) MFC after: 1 week X-MFC-with: r336761, r336781 Sponsored by: Dell EMC Notes: svn path=/head/; revision=336802
* Fix compilation error on some arches after r336761.David Bright2018-07-271-1/+1
| | | | | | | | | | | | A cast for printing an intmax_t was needed in a kqueue test for some arches. MFC after: 1 week X-MFC-with: r336761 Sponsored by: Dell EMC Notes: svn path=/head/; revision=336781
* Allow a EVFILT_TIMER kevent to be updated.David Bright2018-07-273-10/+346
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a timer is updated (re-added) with a different time period (specified in the .data field of the kevent), the new time period has no effect; the timer will not expire until the original time has elapsed. This violates the documented behavior as the kqueue(2) man page says (in part) "Re-adding an existing event will modify the parameters of the original event, and not result in a duplicate entry." This modification, adapted from a patch submitted by cem@ to PR214987, fixes the kqueue system to allow updating a timer entry. The kevent timer behavior is changed to: * When a timer is re-added, update the timer parameters to and re-start the timer using the new parameters. * Allow updating both active and already expired timers. * When the timer has already expired, dequeue any undelivered events and clear the count of expirations. All of these changes address the original PR and also bring the FreeBSD and macOS kevent timer behaviors into agreement. A few other changes were made along the way: * Update the kqueue(2) man page to reflect the new timer behavior. * Fix man page style issues in kqueue(2) diagnosed by igor. * Update the timer libkqueue system test to test for the updated timer behavior. * Fix the (test) libkqueue common.h file so that it includes config.h which defines various HAVE_* feature defines, before the #if tests for such variables in common.h. This enables the use of the actual err(3) family of functions. * Fix the usages of the err(3) functions in the tests for incorrect type of variables. Those were formerly undiagnosed due to the disablement of the err(3) functions (see previous bullet point). PR: 214987 Reported by: Brian Wellington <bwelling@xbill.org> Reviewed by: kib MFC after: 1 week Relnotes: yes Sponsored by: Dell EMC Differential Revision: https://reviews.freebsd.org/D15778 Notes: svn path=/head/; revision=336761
* DIRDEPS_BUILD: Update dependencies.Bryan Drewery2017-10-311-1/+0
| | | | | | | Sponsored by: Dell EMC Isilon Notes: svn path=/head/; revision=325188
* Make test scripts under tests/... non-executableEnji Cooper2017-08-081-0/+0
| | | | | | | | | | Executable bits should be set at install time instead of in the repo. Setting executable bits on files triggers false positives with Phabricator. MFC after: 2 months Notes: svn path=/head/; revision=322214
* Add abstime kqueue(2) timers and expand struct kevent members.Konstantin Belousov2017-06-172-5/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This change implements NOTE_ABSTIME flag for EVFILT_TIMER, which specifies that the data field contains absolute time to fire the event. To make this useful, data member of the struct kevent must be extended to 64bit. Using the opportunity, I also added ext members. This changes struct kevent almost to Apple struct kevent64, except I did not changed type of ident and udata, the later would cause serious API incompatibilities. The type of ident was kept uintptr_t since EVFILT_AIO returns a pointer in this field, and e.g. CHERI is sensitive to the type (discussed with brooks, jhb). Unlike Apple kevent64, symbol versioning allows us to claim ABI compatibility and still name the new syscall kevent(2). Compat shims are provided for both host native and compat32. Requested by: bapt Reviewed by: bapt, brooks, ngie (previous version) Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D11025 Notes: svn path=/head/; revision=320043
* Move tests/sys/kqueue/... to tests/sys/kqueue/libkqueue/...Enji Cooper2016-09-0612-0/+1998
This is being done to clearly distinguish the libkqueue tests from the (soon to be imported) NetBSD tests. MFC after: 58 days Sponsored by: EMC / Isilon Storage Division Notes: svn path=/head/; revision=305467