aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/syslogd/tests
Commit message (Collapse)AuthorAgeFilesLines
* tests: skip gracefully when the tested binary's own package isn't installedWarner Losh14 days1-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | pkgbase splits programs and their tests into separate packages (e.g. unifdef/yacc/indent/file2c -> toolchain, jail -> jail, etc), while their tests always land in the generic tests package. Installing just the tests package therefore leaves these suites unable to find the binary they exercise, and they fail confusingly instead of skipping. Rather than force all packages to be installed for the tests package, make the tests cope with the missing packages. Add require.progs (or, for TAP/PLAIN-style suites with no atf_set hook: TEST_METADATA required_programs) for the binary under test in: bectl, certctl, ctfconvert, dhclient, file2c, indent, ipfw, jail, lastcomm, mixer, newsyslog, nvmecontrol, pfctl, praudit, sa, syslogd, tunefs, unifdef, yacc, ztest. I skipped adding data for all the binaries in the base runtime package for simplicity. Assisted-by: Claude Code (Sonnet 5) Sponsored by: Netflix Reviewed by: ngie Differential Revision: https://reviews.freebsd.org/D58262
* syslogd/tests: Amend a test to catch leaked process descriptorsMark Johnston2026-09-021-0/+7
| | | | | | | This serves to catch the regression fixed by commit 1a669b66ddb4 ("syslogd: reap pipe children on config reload"). MFC after: 1 week
* syslogd: Handle connection errors when setting up forwarding socketsMark Johnston2026-06-302-2/+70
| | | | | | | | | | | | | | | | | | | | Since syslogd was converted to run in a Capsicum sandbox, it needs to explicitly connect() its forwarding sockets rather than using sendmsg(). At the time syslogd starts during boot, some of its forwarding destinations may not be routable, in which case connect() fails. Fix this by making connect() failures non-fatal, and use cap_net to lazily connect sockets once something actually tries logging to the destination. Add a regression test. Reported by: ae Reviewed by: ae Discussed with: jfree Fixes: 4ecbee2760f7 ("syslogd: Open forwarding socket descriptors") MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D57394
* syslogd: Fix ereregex property filters and add testtzyt2026-03-291-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | This change fixes Bug 293879, where ereregex filters in syslogd did not handle alternation correctly. The issue appears to come from mixing up two different kinds of flags: syslogd's internal serialized filter flags in usr.sbin/syslogd/syslogd.h, and the regex compilation flags from include/regex.h. ereregex was storing REG_EXTENDED in cmp_flags, even though cmp_flags is meant to carry syslogd's own FILT_FLAG_* values for configuration serialization and reconstruction. REG_EXTENDED has the same bit value as FILT_FLAG_EXCLUDE, so the filter could be reconstructed with the wrong semantics. The fix stores FILT_FLAG_EXTENDED instead, allowing syslogd to correctly REG_EXTENDED when compiling the regex. A test was also added for both ereregex and !ereregex filters. PR: 293879 Signed-off-by: tzyt <zyt2006613@outlook.com> Fixes: 2567168dc4986 MFC after: 1 week Reviewed-by: markj, ngie Pull-Request: https://github.com/freebsd/freebsd-src/pull/2088
* syslogd/tests: use kern.features to detect INET supportSiva Mahadevan2026-02-191-2/+1
| | | | | | | | | | | | | | This fixes INET feature detection with kernel configs that do not include the kern.conftxt sysctl, such as riscv64 currently[0]. [0] https://ci.freebsd.org/view/Test/job/FreeBSD-main-riscv64-test/16514/testReport/usr.sbin.syslogd/syslogd_forwarded_format_test/O_flag_bsd_forwarded_legacy/ Reviewed by: markj Approved by: emaste (mentor) MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D55383
* syslogd/tests: Fix flakiness in forwarding testsMark Johnston2026-01-222-5/+12
| | | | | | | | | | | | | | | | syslogd_start() waits for the local log socket to appear before returning, to ensure that the daemon is ready to handle log messages. Some tests start two daemons, so by default the socket already exists when the second daemon is started, so syslogd_start() returns early. The test subsequently sends a message to this second daemon, which sometimes isn't ready. Define a separate log socket for the second daemon. Add a check to syslogd_start() to help catch this type of bug. Reviewed by: jlduran MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D54800
* syslogd/tests: Improve loopback interface initializationMark Johnston2026-01-222-7/+5
| | | | | | | | | - In syslogd_start(), assign the lo0 address in the specified jail. - Use the correct netmask. Reviewed by: jlduran MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D54799
* syslogd/tests: Address racesMark Johnston2026-01-226-191/+184
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I occasionally see failures in the syslogd test suite. The problem is that the tests are racy: they send a message using logger(1), then immediately check whether the message was logged to a log file. If the syslogd instance under test doesn't get a chance to run before the second step, the test fails. This change reworks things to avoid the race while minimizing the amount of time sleeping. 1) Each test uses a single logfile, so have them use a new common variable, SYSLOGD_LOGFILE, instead of something test-specific. 2) In syslogd_start(), if the configuration references SYSLOGD_LOGFILE, wait for it to be created by syslogd before returning. 3) Add a helper syslogd_check_log(), to check for a given log entry in the last line of SYSLOGD_LOGFILE, instead of using atf_check directly. 4) In syslogd_check_log(), poll the logfile until the desired log entry appears, or the test times out. With this change, I was able to run the tests 1000 times in a loop with 4-way parallelism without seeing any test failures. Without the change I usually get a failure within 10 loops. Reviewed by: jlduran MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D54779
* syslogd/tests: Use a helper function to log from within a jailMark Johnston2026-01-222-29/+38
| | | | | | | | | | | This is just for consistency with all other logger(1) invocations, which happen from the syslogd_log() function. No functional change intended. Reviewed by: jlduran MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D54778
* syslogd: Terminate pipe processes gracefullyJake Freeland2026-01-121-0/+34
| | | | | | | | | Pipe actions spawn a process based on the command provided in the syslogd configuration file. When a HUP signal is received, enter the process into the deadq instead of immediately killing it. This matches the behavior of syslogd prior to it being Capsicumized. Fixes: d2d180fb7736
* syslogd: Fix tests when if_epair is not loadedJose Luis Duran2025-02-122-11/+55
| | | | | | | | | | | | | | Take a cue from vnet.subr and abstract module loading, jail creation and cleanup. Note that the way jails are created differs slightly from vnet.subr, to maintain the current style of the tests. Reported by: Jenkins Reviewed by: markj Approved by: emaste (mentor) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D48949
* syslogd: Ensure that forwarded messages are sent from port 514Mark Johnston2025-01-141-0/+216
| | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to commit 4ecbee2760f7, syslogd used its listening socket(s) to forward messages to remote hosts, when so configured. As a consequence, they are sent from the address+port to which those sockets are bound, typically 0.0.0.0:514. When in capability mode, sendto() is not permitted, so we instead pre-create sockets and connect them to the forwarding addresses, letting the kernel pick an ephemeral source port. However, this doesn't match syslogd's previous behaviour, breaking some setups. So, restore the old behaviour by binding forwarding sockets to the addresses on which syslogd is listening. Since we cannot use the same sockets for receiving messages and also for forwarding them, use SO_REUSEPORT to enable duplicate bindings to port 514, relying on the existing behaviour that the first socket bound to that port is the one that actually receives messages. Add some regression tests to cover this and related functionality of syslogd's -a option. Reviewed by: jfree Reported by: Michael Butler <imb@protected-networks.net> Fixes: 4ecbee2760f7 ("syslogd: Open forwarding socket descriptors") Differential Revision: https://reviews.freebsd.org/D48222
* syslogd tests: Permit starting syslogd with multiple -b optionsMark Johnston2025-01-031-3/+3
|
* syslogd tests: Use atf_check when sending SIGHUP to syslogdMark Johnston2025-01-031-1/+1
|
* syslogd: Add rfc3164-strict format optionMichal Scigocki2024-12-233-0/+73
| | | | | | | | | | | | | | | The syslogd bsd/rfc3164 message format does not strictly conform to the format recommended in RFC 3164 when syslog messages are forwarded from remote hosts. The new rfc3164-strict format generates messages that conform with the RFC 3164 recommended format. The existing format is maintained for backwards compatibility. PR: 220246 Reviewed by: markj MFC after: 3 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/1536
* syslogd: Add syslog relayed message format testsMichal Scigocki2024-12-232-0/+163
| | | | | | Reviewed by: markj MFC after: 3 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/1536
* syslogd: Add syslog forwarded message format testsMichal Scigocki2024-12-234-1/+270
| | | | | | Reviewed by: markj MFC after: 3 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/1536
* syslogd: Add syslog basic message format testsMichal Scigocki2024-12-235-106/+270
| | | | | | | | | RFC 3164 and RFC 5424 syslog message format tests and minor refactor of existing tests to reuse components in new tests. Reviewed by: markj MFC after: 3 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/1536
* syslogd: Remove is_exclusive metadata from testsMichal Scigocki2024-12-231-6/+4
| | | | | | | | | | - Tests have been updated to use "jail" execution environment, is_exclusive="true" is no longer required. - tests/Makefile update to style.Makefile(5). Reviewed by: markj MFC after: 3 weeks Pull Request: https://github.com/freebsd/freebsd-src/pull/1536
* syslogd: Split up basic test caseJake Freeland2024-11-271-23/+60
| | | | | | | | | | | | | The basic case previously tested if messages are correctly logged over UNIX, INET, and INET6 transport. This single case can be split up into three separate cases to decrease code complexity and offer more granular results. Both INET and INET6 cases will be skipped if the kernel does not support the corresponding transport. Reviewed by: zlei, markj Differential Revision: https://reviews.freebsd.org/D47650
* syslogd: Add host forwarding testJake Freeland2024-11-272-19/+110
| | | | | | | | | | | | | | | | | Test communication between hosts by setting up two syslogd instances, each binded to their own addresses, and sending a message from one to the other. The tests passes if the message was delivered and logged successfully. This required some tweaking to the syslogd start and stop routines so they could handle launching multiple syslogd instances with different runtime files. Run the tests in jails with an isolated VNET so they don't fail due to an address bind collision in the host's VNET. Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D47649
* syslogd: Ignore getaddrinfo() errors if -ss is specifiedMark Johnston2024-09-191-1/+33
| | | | | | | | | | This can arise if the jail doesn't have networking configured, and if -ss is specified, syslogd won't listen on port 514 anyway. Add a regression test case for this as well. PR: 238006 MFC after: 1 month
* syslogd: Prevent running tests in parallelOlivier Cochard2023-10-111-0/+2
| | | | | | | | They all use the same listening port. Approved by: markj Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D41989
* syslogd: Add some basic regression testsJake Freeland2023-08-232-0/+302
Reviewed by: markj MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D41403