aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/test
AgeCommit message (Collapse)Author
2016-06-07Merge branch 'raimo/kernel/test-cuddling'Raimo Niskanen
* raimo/kernel/test-cuddling: Explain how to make inet_res_SUITE not skip gethostbyname, gethostbyaddr
2016-06-07Merge branch 'dotsimon/erts/heart_no_kill/OTP-13650'Lukas Larsson
* dotsimon/erts/heart_no_kill/OTP-13650: erts: make HEART_NO_KILL have to be set to TRUE Don't kill old erlang if HEART_NO_KILL is set Conflicts: lib/kernel/doc/src/heart.xml
2016-06-03Explain how to make inet_res_SUITE not skipRaimo Niskanen
2016-06-03gethostbyname, gethostbyaddrRaimo Niskanen
2016-06-03erts: make HEART_NO_KILL have to be set to TRUELukas Larsson
2016-06-02Merge branch 'saleyn/uds/PR-612/OTP-13572'Raimo Niskanen
* saleyn/uds/PR-612/OTP-13572: Rewrite inet* for address family 'local' Rewrite inet_drv for AF_LOCAL Assign externally open fd to gen_tcp (UDS support) Conflicts: erts/preloaded/ebin/prim_inet.beam lib/kernel/doc/src/gen_tcp.xml lib/kernel/doc/src/gen_udp.xml lib/kernel/src/inet6_sctp.erl lib/kernel/test/inet_SUITE.erl
2016-06-01Rewrite inet* for address family 'local'Raimo Niskanen
2016-06-01Don't kill old erlang if HEART_NO_KILL is setSimon Cornish
If the environment variable HEART_NO_KILL is set then heart won't kill the old erlang process. This is desirable if the command executed by heart takes care of this.
2016-06-01Rewrite inet_drv for AF_LOCALRaimo Niskanen
2016-05-31Merge branch 'egil/erts/cuddle-tests'Björn-Egil Dahlberg
* egil/erts/cuddle-tests: stdlib: Fix small inconsistencies in ets_SUITE stdlib: Strengthen or relax test cases kernel: Don't test negative time values in file info erts: Fix free_mem calculation in bs_construct tests
2016-05-27kernel: Don't test negative time values in file infoBjörn-Egil Dahlberg
2016-05-20Add testcase for init:stop/1 statusRichard Carlsson
2016-05-16Tolerate bad directories in the code pathBjörn Gustavsson
A bad directory in the path would prevent the run-time system from starting: $ echo >foobar $ erl -pa foobar {"init terminating in do_boot",{load_failed,[supervisor,kernel,gen_server,file_io_server,filename,file,erl_parse,error_logger,code_server,erl_lint,proc_lib,code,application_controller,application_master,gen_event,application,error_handler,lists,heart,gen,file_server,ets,erl_eval]}} Crash dump is being written to: erl_crash.dump...done init terminating in do_boot () The reason is that when attempting to read each of the BEAM files, there would be an 'enotdir' error which erl_prim_load:get_modules/2,3 assumed was a fatal error. Update erl_prim_load:get_modules/2,3 to ignore any error and try the next directory in the path. Reported-by: http://bugs.erlang.org/browse/ERL-142 Reported-by: Michael Truog
2016-05-04Merge branch 'bjorn/fix-on_load/OTP-12593'Björn Gustavsson
* bjorn/fix-on_load/OTP-12593: Update documentation regarding improvements Correctly handle multiple load attempts when on_load is pending Avoid deadlock when an on_load function makes an external call to the module itself code_server: Eliminate unnecessary Tag in handle_call/3 Reimplement -on_load() Refactor erts_finish_loading() and insert_new_code() code_SUITE: Make on_load_binary/1 clearer by using merl
2016-05-04Correctly handle multiple load attempts when on_load is pendingBjörn Gustavsson
If an on_load function had not yet returned, the code server would only correctly handle calls to code:ensure_loaded/1. That is, each process that called code:ensured_loaded/1 for the module in question would be suspended until the on_load function had returned. The code server handled calls to code:load_binary/1, code:load_file/1, and code:load_abs/1 in the same way as for code:ensure_loaded/1. That means that if call to one those functions attempted to load *different* code for the module, that code would not get loaded. Note that code:finish_loading/1 (code:atomic_load/1) will still return {error,pending_on_load} if there is a pending on_load function for one of the modules that are about to be loaded. The reason is that code:finish_loading/1 is meant to either succeed directly, or fail quickly if there is any problem.
2016-05-04Avoid deadlock when an on_load function makes an external call to the module ↵Björn Gustavsson
itself
2016-05-04Reimplement -on_load()Björn Gustavsson
Load the module as old code; swap old and new code if the -on_load function succeeds. That way, a failed update attempt for a module that has an -on_load function will preserve the previous version of the code.
2016-05-04Merge branch 'zandra/erl_distribution_SUITE-cuddle'Zandra
* zandra/erl_distribution_SUITE-cuddle: update monitor_nodes_otp_6481_test-we only guarantee message order increase timeout since the old one risked flapping test remove no_msg timeout, since its not needed and cause flapping
2016-05-03Merge branch 'lukas/erts/tracing/misc_fixes/OTP-13503'Lukas Larsson
* lukas/erts/tracing/misc_fixes/OTP-13503: erts: Add test for new procs trace with spawn_link kernel: Remove seq_trace event order dep in tc erts: Add tests for set on link tracing erts: Expand trace tests for refc binaries erts: Remove erl_tracer with invalid state erts: Remove some dead code erts: Fix broken doc link to erl_tracer Conflicts: erts/emulator/beam/erl_trace.c
2016-05-02code_SUITE: Make on_load_binary/1 clearer by using merlBjörn Gustavsson
2016-04-29code_SUITE: Enhance test of archive filesBjörn Gustavsson
When using a code archive for an application, it should be possible to store some directories for the application outside of the archive file (for example, shared libraries that will not work inside an archive). Make sure that we test that a directory outside of the archive file really works.
2016-04-26Update global_group_SUITE.erlxuming
2016-04-26kernel: Remove seq_trace event order dep in tcLukas Larsson
2016-04-25update monitor_nodes_otp_6481_test-we only guarantee message orderZandra
Messages can be lost, but the order is guaranteed. This change weakens the test, but does it according to our guarantees.
2016-04-15erts: Implement tracer modulesLukas Larsson
Add the possibility to use modules as trace data receivers. The functions in the module have to be nifs as otherwise complex trace probes will be very hard to handle (complex means trace probes for ports for example). This commit changes the way that the ptab->tracer field works from always being an immediate, to now be NIL if no tracer is present or else be the tuple {TracerModule, TracerState} where TracerModule is an atom that is later used to lookup the appropriate tracer callbacks to call and TracerState is just passed to the tracer callback. The default process and port tracers have been rewritten to use the new API. This commit also changes the order which trace messages are delivered to the potential tracer process. Any enif_send done in a tracer module may be delayed indefinitely because of lock order issues. If a message is delayed any other trace message send from that process is also delayed so that order is preserved for each traced entity. This means that for some trace events (i.e. send/receive) the events may come in an unintuitive order (receive before send) to the trace receiver. Timestamps are taken when the trace message is generated so trace messages from differented processes may arrive with the timestamp out of order. Both the erlang:trace and seq_trace:set_system_tracer accept the new tracer module tracers and also the backwards compatible arguments. OTP-10267
2016-04-13Merge branch 'henrik/update-copyrightyear'Henrik Nord
* henrik/update-copyrightyear: update copyright-year
2016-04-06Merge branch 'egil/erts/fix-file_info/OTP-13478'Björn-Egil Dahlberg
* egil/erts/fix-file_info/OTP-13478: Don't check dates before 1970 Log additional test information in prim_file_SUITE Relax file_info tests Refactor time_t in efile_drv
2016-04-05increase timeout since the old one risked flapping testZandra
2016-04-05remove no_msg timeout, since its not needed and cause flappingZandra
2016-04-04Don't check dates before 1970Björn-Egil Dahlberg
2016-03-31Log additional test information in prim_file_SUITEBjörn-Egil Dahlberg
2016-03-31Relax file_info testsBjörn-Egil Dahlberg
2016-03-30inet_SUITE: Handle pointtopoint devices in getifaddrs/1Björn Gustavsson
2016-03-30file_SUITE: Increase timetrap for large_write/1Björn Gustavsson
In 9870d22b2401b, the timetrap for large_write/1 was accidentally reduced from the default 30 minutes to only 1 minute. That is not enough for some older computers.
2016-03-30inet_SUITE: Handle {error,enoent} in simple_netns_openBjörn Gustavsson
Allow an open operation to fail with {error,enoent}. That will happen if the executable has compiled-in support for netns, but the computer has not been configured for netns.
2016-03-24inet_SUITE: Handle missing SCTP support in simple_netns/1Björn Gustavsson
2016-03-23file_name_SUITE: Improve handling of missing permission for link creationBjörn Gustavsson
On modern versions of Windows, creation of symlinks is supported, but our test machines usually don't have permissions for creating symlinks. Therefore, the has_links/0 that attempts to predict whether link creation will work by testing version numbers will not do any good. Refactor the code so that test cases don't fail when links cannot be created because of missing permissions.
2016-03-23file_name_SUITE: Remove useless put/2 to process dictionaryBjörn Gustavsson
There is never any corresponding get/1.
2016-03-23file_name_SUITE: Handle the case that HOMEPATH may not be setBjörn Gustavsson
Seems that it can happen on Windows.
2016-03-23code_SUITE: Skip on_load_embedded/1 if no symlinksBjörn Gustavsson
On Windows, we might not have permission to create symlinks. Skip the test case instead of failing.
2016-03-23gen_sctp_SUITE: Skip most SCTP test cases on Solaris before 5.12Björn Gustavsson
On old Solaris versions, many gen_sctp test cases fail. It is not clear whether the implementation or the test cases or both must be fixed. The number of failed test cases is a problem, as other failed test cases in the Kernel application might not be noticed. For now, skip most test gen_sctp test cases on old Solaris platforms, until the day that someone can mend the tests case and/or implementation (or test machines die). Keep a few smoke test cases.
2016-03-23heart_SUITE: Increase timeout in restart/1Björn Gustavsson
2016-03-23heart_SUITE: Use unique node namesBjörn Gustavsson
Avoid interference between test cases.
2016-03-23init_SUITE: Quote pathname that may contain a spaceBjörn Gustavsson
On Windows, the pathname is likely to start with "C:/Program Files".
2016-03-23gen_tcp_misc_SUITE: Clean up send_timeout{_active}/1Björn Gustavsson
Eliminate gratuitous use of funs. Don't limit the send attempts to 1000; it might not be enough. Rely on four minut timetrap to fail the test case if there will never be a send timeout error.
2016-03-23Clean up the determination of the hostnameBjörn Gustavsson
2016-03-18Merge branch 'lukas/kernel/error_logger_warn_fix/OTP-13184'Lukas Larsson
* lukas/kernel/error_logger_warn_fix/OTP-13184: kernel: Fix progress check in error logger warn suite
2016-03-16code_server: Normalize the pathnames for all loaded modulesBjörn Gustavsson
On Windows, the pathnames for modules that are loaded early are returned with mixed backslashes and slashes: 1> code:which(lists). "C:\\Program Files\\erl8.0/lib/stdlib-2.7/ebin/lists.beam" 2> Modules loaded later are fully normalized. When starting the code_server, normalize the pathnames for all modules that have been loaded so far.
2016-03-15update copyright-yearHenrik Nord
2016-03-11Don't throw exceptions from rpc:call() and rpc:block_call()Björn Gustavsson
The documentation for rpc:call() says: Evaluates apply(Module, Function, Args) on the node Node and returns the corresponding value Res, or {badrpc, Reason} if the call fails. What is not said that rpc:call() can generate an exception if the 'rex' process on the other node is killed: (kalle@host)1> Rex = rpc:call(arne@host, erlang, whereis, [rex]). <6937.14.0> (kalle@host)2> rpc:call(arne@host, erlang, exit, [Rex,kill]). ** exception exit: {killed, {gen_server,call, [{rex,arne@host}, {call,erlang,exit,[<6937.14.0>,kill],<0.33.0>}, infinity]}} in function rpc:rpc_check/1 (rpc.erl, line 361) On the other hand, if the other node shuts down for some other reason, we'll get a {badrpc,nodedown} result: (kalle@host)5> rpc:call(arne@host, erlang, halt, []). {badrpc,nodedown} There does not seem to be any reason to handle the two cases differently. If the 'rex' process is terminated on the other node, it will shut down shortly thereafter. Therefore, change rpc:call() and rpc:block_call() to always return {badrpc,Reason} is the call fails: (kalle@host)1> Rex = rpc:call(arne@host, erlang, whereis, [rex]). <6937.14.0> (kalle@host)2> rpc:call(arne@host, erlang, exit, [Rex,kill]). {badrpc,{'EXIT',{killed,{gen_server,call, [{rex,arne@host}, {call,erlang,exit,[<7126.14.0>,kill],<0.33.0>}, infinity]}}}}