aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/test
AgeCommit message (Collapse)Author
2018-12-03Merge branch 'raimo/test-cuddling' into maintRaimo Niskanen
* raimo/test-cuddling: Parallel stress test strong_rand_bytes Update OS version numbers
2018-11-30[logger] Re-create log file if deletedSiri Hansen
This is an update to logger_std_h, which makes it play well with tools like logrotate.
2018-11-29Merge branch 'siri/logger/refactor-built-in-handlers' into maintSiri Hansen
* siri/logger/refactor-built-in-handlers: [logger] Write asynchronously to disk log [logger] Add statistics counter for drops due to message bursts [logger] Further refactor built-in handlers [logger] Move common handler code to logger_h_common
2018-11-28erts: Fix unexpected inet_reply message from failing file:sendfileSverker Eriksson
A failing file:sendfile call would often send a message {inet_reply, Port, {error, Reason}} that would pollute the mailbox of the calling process. TCP_REQ_SENDFILE has its own reply messages format {sendfile, _, _} and does not expect an inet_reply message. Solution: Suppress inet_reply error message if TCP_ADDF_SENDFILE is set.
2018-11-28erts: Fix bug in sendfile for active socketSverker Eriksson
driver_select() was called after port had been killed by tcp_inet_sendfile() calling tcp_send_error().
2018-11-14Update OS version numbersRaimo Niskanen
2018-10-22Merge branch 'raimo/tcp-close-while-send/maint/ERL-561/OTP-12242' into maintRaimo Niskanen
* raimo/tcp-close-while-send/maint/ERL-561/OTP-12242: Write test case Fix hanging gen_tcp send vs close race Conflicts: erts/preloaded/ebin/prim_inet.beam
2018-10-19Write test caseRaimo Niskanen
2018-10-19[logger] Write asynchronously to disk logSiri Hansen
This commit updates logger_disk_log_h to write most log events asynchronlously (disk_log:balog/2), but synchronously (disk_log:blog/2) on every 20th event in the same way as logger_std_h does. This is for efficiency reasons.
2018-10-19[logger] Further refactor built-in handlersSiri Hansen
2018-10-19[logger] Move common handler code to logger_h_commonSiri Hansen
There was a lot of duplicated code in logger_std_h and logger_disk_log_h. Most of this is now moved to logger_h_common, which now also serves as the gen_server callback.
2018-10-19Merge pull request #1975 from sirihansen/siri/logger/config-set-or-updateSiri Hansen
Forward set/update indicator to handler callback changing_config OTP-15364
2018-10-17Merge branch 'igor/tcp-nopush-ERL-698/OTP-15357' into maintJohn Högberg
* igor/tcp-nopush-ERL-698/OTP-15357: "cork" tcp socket around file:sendfile Add nopush TCP socket option
2018-10-12Merge branch 'maint-21' into maintRickard Green
* maint-21: Updated OTP version Prepare release erts: Fix UNC path handling on Windows erts: Fix a compiler warning eldap: Fix race at socket close Fix bug for sockopt pktoptions on BSD erts: Fix memory leak on file read errors
2018-10-12Merge branch 'john/erts/fix-unc-paths-windows/OTP-15333/ERL-737' into maint-21Erlang/OTP
* john/erts/fix-unc-paths-windows/OTP-15333/ERL-737: erts: Fix UNC path handling on Windows erts: Fix a compiler warning
2018-10-11erts: Fix UNC path handling on WindowsJohn Högberg
This is unlikely to be the last of the path problems seen after OTP 21, and I'm starting to regret my decision to unconditionally use long paths. The idea to hit all long-path problems all the time was good in theory as it makes such bugs far more visible, but there just aren't enough people who test pre-release versions on Windows, making this the world's slowest game of whack-a-mole.
2018-10-11Add nopush TCP socket optionIgor Slepchin
This translates to TCP_CORK on Linux and TCP_NOPUSH on BSD. In effect, this acts as super-Nagle: no partial TCP segments are sent out until this option is turned off. Once turned off, all accumulated unsent data is sent out immediately. The latter is *not* the case on OSX, hence the implementation ignores "nopush" on OSX to reduce confusion.
2018-10-05Adjust test case to realityRaimo Niskanen
2018-10-03[logger] Add handler callback filter_config/1Siri Hansen
This function is called when a logger API function for fetching handler configuration is called. The point is to allow the handler to remove internal data fields that it might have stored in the configuration database, before returning the handler configuration to the caller. An example of such internal data are the 'handler_pid' and 'mode_tab' fields that logger_std_h and logger_disk_log_h store in their configuration maps.
2018-10-03[logger] Start using handler callback changing_config/3 in built-in handlersSiri Hansen
The new parameter to this function, SetOrUpdate, indicates how unspecified configuration data fields shall be set. The rule is that if SetOrUpdate equals set, then default values shall be used, and if SetOrUpdate equals update, then existing configuration values shall be used. Consequently, these examples now apply to logger_std_h and logger_disk_log_h: set_handler_config(default, config, #{sync_mode_qlen => 20}) sets the value of sync_mode_qlen to 20, and resets all other (writable) fields in the config map to their default values. update_handler_config(default, config, #{sync_mode_qlen => 20}) sets the value of sync_mode_qlen to 20, and leaves all other fields in the config map unchanged.
2018-10-01Fix bug for sockopt pktoptions on BSDRaimo Niskanen
The macros for the BSD style option names had accidentally wound up outside the option parsing loop, causing unclear behaviour and Valgrind errors.
2018-09-19Merge branch 'raimo/receive-TOS-TCLASS/ERIERL-187/OTP-15145' into maintRaimo Niskanen
* raimo/receive-TOS-TCLASS/ERIERL-187/OTP-15145: Elaborate the disclaimer for 'pktoptions' Improve platform filter Fix endianness bug for CMSG parsing
2018-09-19Improve platform filterRaimo Niskanen
2018-09-18Merge branch 'siri/cuddle' into maintSiri Hansen
* siri/cuddle: [logger] Skip app level test if app cannot be loaded Terminate nodes after failed test cases in erl_distribution_SUITE Skip performance test on build types other than 'opt'
2018-09-17[logger] Skip app level test if app cannot be loadedSiri Hansen
2018-09-17Merge branch 'raimo/receive-TOS-TCLASS/ERIERL-187/OTP-15145' into maintRaimo Niskanen
* raimo/receive-TOS-TCLASS/ERIERL-187/OTP-15145: Write testcases for recvtos and friends Fix term buffer overflow bug Fix documentation due to feedback Implement socket option recvtos and friends
2018-09-17Write testcases for recvtos and friendsRaimo Niskanen
Use os:type() and os:version() to predict if the individual options are supposed to be supported. We'll see if this holds.
2018-09-17Terminate nodes after failed test cases in erl_distribution_SUITESiri Hansen
A hanging node from this suite can fail later tests, so terminate all nodes() after each test case.
2018-09-17Merge branch 'hasse/kernel/adjust_tests' into maintHans Bolinder
* hasse/kernel/adjust_tests: kernel: Adjust disk_log tests kernel: Adjust global testcase
2018-09-12[logger] Increase timetrap timer for handler_requests_under_load testSiri Hansen
2018-09-12[logger] Improve code coverage in testSiri Hansen
2018-09-12[logger] Refactor, and add error detection for configurationSiri Hansen
2018-09-12[logger] Fix logger_disk_log_h_SUITE:sync and add som debug infoSiri Hansen
2018-09-12[logger] Remove encoding option from logger_formatterSiri Hansen
The encoding option was introduced in commit 270d909696a753af022df72a404c73f2895b4a02, to allow report callbacks to format according to a given encoding. There was, however, no connection between this encoding option, and the encoding of the device to which the logger handler was writing. Since a formatter is defined to return unicode:chardata(), and in order to avoid mismatch with the encoding of the device, the encoding option is now removed from the formatter. The handler itself must make sure that it does not write illegal data to its device.
2018-09-12[logger] Refactor some logger internalsSiri Hansen
2018-09-04Implement socket option recvtos and friendsRaimo Niskanen
Implement socket options recvtclass, recvtos, recvttl and pktoptions. Document the implemented socket options, new types and message formats. The options recvtclass, recvtos and recvttl are boolean options that when activated (true) for a socket will cause ancillary data to be received through recvmsg(). That is for packet oriented sockets (UDP and SCTP). The required options for this feature were recvtclass and recvtos, and recvttl was only added to test that the ancillary data parsing handled multiple data items in one message correctly. These options does not work on Windows since ancillary data is not handled by the Winsock2 API. For stream sockets (TCP) there is no clear connection between a received packet and what is returned when reading data from the socket, so recvmsg() is not useful. It is possible to get the same ancillary data through a getsockopt() call with the IPv6 socket option IPV6_PKTOPTIONS, on Linux named IPV6_2292PKTOPTIONS after the now obsoleted RFC where it originated. (unfortunately RFC 3542 that obsoletes it explicitly undefines this way to get packet ancillary data from a stream socket) Linux also has got a way to get packet ancillary data for IPv4 TCP sockets through a getsockopt() call with IP_PKTOPTIONS, which appears to be Linux specific. This implementation uses a flag field in the inet_drv.c socket internal data that records if any setsockopt() call with recvtclass, recvtos or recvttl (IPV6_RECVTCLASS, IP_RECVTOS or IP_RECVTTL) has been activated. If so recvmsg() is used instead of recvfrom(). Ancillary data is delivered to the application by a new return tuple format from gen_udp:recv/2,3 containing a list of ancillary data tuples [{tclass,TCLASS} | {tos,TOS} | {ttl,TTL}], as returned by recvmsg(). For a socket in active mode a new message format, containing the ancillary data list, delivers the data in the same way. For gen_sctp the ancillary data is delivered in the same way, except that the gen_sctp return tuple format already contained an ancillary data list so there are just more possible elements when using these socket options. Note that the active mode message format has got an extra tuple level for the ancillary data compared to what is now implemented gen_udp. The gen_sctp active mode format was considered to be the odd one - now all tuples containing ancillary data are flat, except for gen_sctp active mode. Note that testing has not shown that Linux SCTP sockets deliver any ancillary data for these socket options, so it is probably not implemented yet. Remains to be seen what FreeBSD does... For gen_tcp inet:getopts([pktoptions]) will deliver the latest received ancillary data for any activated socket option recvtclass, recvtos or recvttl, on platforms where IP_PKTOPTIONS is defined for an IPv4 socket, or where IPV6_PKTOPTIONS or IPV6_2292PKTOPTIONS is defined for an IPv6 socket. It will be delivered as a list of ancillary data items in the same way as for gen_udp (and gen_sctp). On some platforms, e.g the BSD:s, when you activate IP_RECVTOS you get ancillary data tagged IP_RECVTOS with the TOS value, but on Linux you get ancillary data tagged IP_TOS with the TOS value. Linux follows the style of RFC 2292, and the BSD:s use an older notion. For RFC 2292 that defines the IP_PKTOPTIONS socket option it is more logical to tag the items with the tag that is the item's, than with the tag that defines that you want the item. Therefore this implementation translates all BSD style ancillary data tags to the corresponding Linux style data tags, so the application will only see the tags 'tclass', 'tos' and 'ttl' on all platforms.
2018-08-15lukas/kernel/logger_set_app_lvl/PR-1843/OTP-15146Lukas Larsson
Add logger:set_application_level/2
2018-08-13[logger] Avoid unwanted commas introduced by formatter's single_line optionSiri Hansen
When printing a map with ~p in a log message, the formatter's single_line option in some cases introduced unwanted commas after '=>', for example: This is now corrected. When single_line==true, width 0 is added to all ~p and ~P control sequences in the format string.
2018-08-03erts: Fix seq_trace to not clear token for system messagesLukas Larsson
A lot of erts internal messages used behind APIs to create non-blocking calls, e.g. port_command, would cause the seq_trace token to be cleared from the caller when it should not. This commit fixes that and adds asserts that makes sure that all messages sent have to correct token set. Fixes: ERL-602
2018-08-03Merge branch 'lukas/erts/fix_udp_realloc_bug' into maintLukas Larsson
* lukas/erts/fix_udp_realloc_bug: erts: Limit the automatic max buffer for UDP to 2^16 erts: Free udp buffer when getting EAGAIN
2018-07-30erts: Limit the automatic max buffer for UDP to 2^16Lukas Larsson
There is no reason to have a larger buffer than this as the recvmsg call will never return more data. OTP-15206
2018-07-26Merge branch 'maint-21' into maintJohn Högberg
2018-07-18Fix node crash on passing bad arguments to file:read_file_info/2John Högberg
2018-07-16kernel: Add logger:set_application_level/2Lukas Larsson
OTP-15146
2018-07-13Merge branch 'siri/logger/post-21/OTP-15132' into maintSiri Hansen
* siri/logger/post-21/OTP-15132: [logger] Allow setting kernel parameter 'logger_level' to 'all' [kernel] Reduce risk of dead lock when terminating logger_sup [logger] Fix regexp replacement for unicode strings Update proc_lib:report_cb to obey logger formatter's size limiting params [logger] Allow report callback with two arguments returning a string Don't call report_cb from cth_log_redirect - formatter does that Add legacy test of sasl_report_file_h and size limiting [logger] Remove compiler warnings in test [logger] Fix problem with test cases waiting for handler restart [logger] Add ?LOG macro which takes Level as argument [logger] Improve spec for set_handler_config/3 and set_primary_config/2 [logger] Generate .png file from .dia [logger] Update documentation
2018-07-13[logger] Allow setting kernel parameter 'logger_level' to 'all'Siri Hansen
2018-07-13[logger] Allow report callback with two arguments returning a stringSiri Hansen
If the report callback is a fun of arity 2, then the second argument is a map with the keys 'encoding', 'depth' and 'chars_limit', and the fun must return a string which is size limited according to the given depth and chars_limit. If the report callback is a fun of arity 1, then it must return a tuple containing a format string and a list of arguments. The formatter will produce the string, and limit it's size.
2018-07-13[logger] Remove compiler warnings in testSiri Hansen
2018-07-13[logger] Fix problem with test cases waiting for handler restartPeter Andersson
2018-07-13[logger] Add ?LOG macro which takes Level as argumentSiri Hansen