aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/test
AgeCommit message (Collapse)Author
2019-01-07erts: Add enif_select_read|write with 'msg_env' argumentSverker Eriksson
2019-01-07erts: Fix pollset test casesLukas Larsson
2018-12-21[socket-nif|test] Add simple (escript) wrapper for ttestMicael Karlberg
Add a simple wrapper script for the socket ttest program(s). Intended to be used when running a performance test in a standard shell (bash). OTP-14831
2018-12-21[socket-nif|test] Adjusten runtime of test cases of group ttestMicael Karlberg
It took "forever" to run the ttest test cases, so the runtime of these have been adjusted down to 10 seconds (from 60 seconds). OTP-14831
2018-12-21[socket-nif|test] Buffer set and adjusted traffic ping-pong iterationsMicael Karlberg
Handle (rcv and snd) buffer set failure. The number of iterations (message exchanges) that the traffic ping-cases has been adjusted down (by a factor of 10). Also, improve skip'ing. OTP-14831
2018-12-21erts: Fix persistent_term testcasesLukas Larsson
2018-12-21[socket-nif|test] Updated test case api_b_open_and_closeMicael Karlberg
The test case tried to validate the (socket option) protocol, which is not actually available on OpenBSD. So, add a check if the option is supported. OTP-14831
2018-12-20erts: Add ERL_NIF_SELECT_CUSTOM_MSGSverker Eriksson
2018-12-20[socket-nif|test] ttest groupingsMicael Karlberg
2018-12-20Merge branch 'sverker/big-band-bug/ERL-804/OTP-15487' into maint-21Erlang/OTP
* sverker/big-band-bug/ERL-804/OTP-15487: erts: Fix bug in 'band' of two negative numbers, one big
2018-12-19[socket-nif|test] Add more ttest (socket) test casesMicael Karlberg
Added a number of ttest test cases with transport socket. Server with transport = socket(tcp), active = true and client using transport = socket(tcp) (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (socket and gen_tcp) test casesMicael Karlberg
Added a number of ttest test cases with transport socket and gen_tcp. Server with transport = socket(tcp), active = true and client using transport = gen_tcp (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (socket) test casesMicael Karlberg
Added a number of ttest test cases with transport socket. Server with transport = socket(tcp), active = once and client using transport = socket(tcp) (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (socket and gen_tcp) test casesMicael Karlberg
Added a number of ttest test cases with transport socket and gen_tcp. Server with transport = socket(tcp), active = once and client using transport = gen_tcp (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (socket) test casesMicael Karlberg
Added a number of ttest test cases with transport socket. Server with transport = socket(tcp), active = false and client using transport = socket(tcp) (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (socket and gen_tcp) test casesMicael Karlberg
Added a number of ttest test cases with transport socket and gen_tcp. Server with transport = socket(tcp), active = false and client using transport = gen_tcp (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (gen_tcp and socket) test casesMicael Karlberg
Added a number of ttest test cases with transport gen_tcp and socket. Server with transport = gen_tcp, active = true and client using transport = socket(tcp) (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (gen_tcp) test casesMicael Karlberg
Added a number of ttest test cases with transport gen_tcp. Server with transport = gen_tcp, active = true and client using transport = gen_tcp (and active = false, once and true). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (gen_tcp and socket) test casesMicael Karlberg
Added a number of ttest test cases with transport gen_tcp and socket. Server with transport = gen_tcp, active = once and client using transport = socket(tcp) (and active = false, once and true). Also fixed a counting error in the server (forgot to include the header, 16 bytes, in the byte count). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (gen_tcp) test casesMicael Karlberg
Added a number of ttest test cases with transport gen_tcp. Server with transport = gen_tcp, active = once and client using transport = gen_tcp (and active = false, once and true). Also a bit of client and server cleanup (remove and cleanup up some printouts). OTP-14831
2018-12-19[socket-nif|test] Add more ttest (gen_tcp and socket) test casesMicael Karlberg
Added a number of ttest test cases with transport gen_tcp and socket. Server with transport = gen_tcp, active = false and client using transport = socket(tcp) (and active = false, once and true). Also a bit of "grouping". OTP-14831
2018-12-18[socket-nif|test] Add more ttest (gen_tcp) test casesMicael Karlberg
Added a number of ttest test cases with transport gen_tcp. Server with transport = gen_tcp, active = false and client using transport = gen_tcp (and active = false, once and true). Also "fixed" the gen_tcp socket buffer size (default size was way to small for the "large" messages). OTP-14831
2018-12-18Merge branch 'maint'Sverker Eriksson
2018-12-18Merge branch 'sverker/big-band-bug/ERL-804/OTP-15487' into maintSverker Eriksson
* sverker/big-band-bug/ERL-804/OTP-15487: erts: Fix bug in 'band' of two negative numbers, one big
2018-12-18Merge branch 'sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486' into ↵Sverker Eriksson
maint * sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486: erts: Fix possible heap corruption getting atomics
2018-12-18[socket-nif|test] Add test case based on the ttest modulesMicael Karlberg
Added a (first) test case based on the ttest modules. OTP-14831
2018-12-18Make length/1 yieldingBjörn Gustavsson
The guard BIF `length/1` would calculate the length of the list in one go without yielding, even if the list was were long. To make it even worse, the call to `length/1` would only cost a single reduction. This commit reimplements `length/1` so that it eats a number of reductions proportional to the length of the list, and yields if the available reductions run out.
2018-12-17erts: Fix bug in 'band' of two negative numbers, one bigSverker Eriksson
Similar bug as for bxor fixed by abc4fd372d476821448dfb9 Ex: 1> io:format("~.16B\n", [-16#1110000000000000000 band (-1)]). -1120000000000000000 Wrong result for (-X bsl WS) band -Y. where X is any positive integer WS is erlang:system_info(wordsize)*8*N where N is 1 or larger Y is any positive integer smaller than (1 bsl WS) Fix: The subtraction of 1 (for 2-complement conversion) must be carried along all the way to the last words.
2018-12-14[socket-nif|test] Add a "global" loggerMicael Karlberg
Added a global logger that make it possible to log from the slave nodes (with "ease"). Also "fixed" the test case that failed on "older" linux (Ubuntu 14.04). For now we let it skip instead (we should really check the OS version). Also corrected a couple of (ping-pong) cases for which the buffer adjustments did not work. OTP-14831
2018-12-14[socket-nif|test] Correct the (api) connect timeout test caseMicael Karlberg
Assumed the wrong success value ({ok, _} instead of ok) for the api-to-connect-tcp test case. OTP-14831
2018-12-13erts: Fix possible heap corruption getting atomicsTomas Abrahamsson
Due to comparison as a signed integer, when getting an unsigned atomic in the range 2^63-1..2^64-1 (when the most significant bit was set), the heap could get corrupted when the integer was retrieved: hsz would get set to zero, but the code proceeded to build a bignum. Steps to reproduce (at least on x86_64): $ erl 1> A = atomics:new(1,[{signed,false}]). 2> atomics:put(A,1,18446744073709551615). 3> atomics:get(A,1). At the last step, the shell would print some garbage and hang.
2018-12-13Merge branch 'maint'Björn Gustavsson
* maint: Fix reading beyond end of bignum in integer squaring
2018-12-13Fix reading beyond end of bignum in integer squaringBjörn Gustavsson
The multiplication of two bignums is specially optimized when the two operands have the same address, because squaring can be done more efficiently than multiplication of two arbitrary integers. That is, expressions such as `I * I` will be calculated by squaring the value of `I`. The optimized function for squaring would read one word beyond the end of the bignum in the last iteration of a loop. The garbage value would never be used. In almost all circumstances that would be harmless. Only if the read word happened to fall on the start of an unmapped page would the runtime crash. That is unlikely to happen because most bignums are stored on a process heap, and since the stack is located at the other end of the block that the heap is located in, the word beyond the end of bignum is guaranteed to be readable.
2018-12-07[socket-nif|test] ttest improvementsMicael Karlberg
Added a ttest lib module for some common functions. Added a process (server handler and reader processes) stats printouts. So far only used by the server. There is still a "leak". Its a term leak. Some of the functions take a ref as argument (recv, send and accept for instance). This is stored internally, by way of a call to the enif_make_copy, in order to be used later in a select call. Its not "released" though, until the environment is released, which happens when the socket dtor callback function is called. Possible solution: We need to keep "temporary" environments (one for each of the queues), which we can clear (basically we need two, one that is currently used for new ref's and one for the old ref's). OTP-14831
2018-12-06Merge branch 'maint'Lukas Larsson
Conflicts: erts/emulator/beam/erl_process.c
2018-12-06Merge branch 'lukas/OTP-21.1.1/scheduler_pollset/OTP-15475' into maintLukas Larsson
* lukas/OTP-21.1.1/scheduler_pollset/OTP-15475: erts: Move fds with active true behaviour to own pollset erts: Fix lists_member_2 reduction count erts: Allow code_model_small to be set in xcomp setting erts: Implement delay_send using timer instead of poll erts: Optimize driver_set_timer(0) to fire at once erts: Optimize the inet driver multi timers for one timer erts: Move all inet tcp CONNECTED timers to multi timer erts: Add erts_io_notify_port_task_executed to check_io msacc state erts: Add pre-alloc to ALLOC msacc state erts: Make thr prgr wakeup current or sched 1 erts: Pass thread progress data where possible
2018-12-06erts: Move fds with active true behaviour to own pollsetLukas Larsson
At start of the VM a poll-set that the schedulers will check is created where fds that have triggered many (at the moment, many means 10) times without being deselected inbetween. In this scheduler specific poll-set fds do not use ONESHOT, which means that the number of syscalls goes down dramatically for such fds. This pollset is introduced in order to handle fds that are used by the erlang distribution and that never change their state from {active, true}. This pollset only handles ready_input events, ready_output is still handled by the poll threads. During overload, polling the scheduler poll-set is done on a 10ms timer.
2018-12-05[socket-nif|test] Added the proper time-test codeMicael Karlberg
2018-12-05[socket-nif|test] Fixed the test suiteMicael Karlberg
The ping-pong merge had some problems...
2018-12-03Merge branch 'maint'Sverker Eriksson
2018-12-03Merge branch 'sverker/erts/cuddle-driver_SUITE' into maintSverker Eriksson
* sverker/erts/cuddle-driver_SUITE: erts: Fix faulty assert in driver_SUITE erts: Improve driver_SUITE:smp_select
2018-11-26Merge branch 'maint'Sverker Eriksson
2018-11-23erts: Fix bug in countersSverker Eriksson
Wow, that could have been embarrassing.
2018-11-22Merge branch 'maint'Sverker Eriksson
2018-11-22erts: Fix faulty assert in driver_SUITESverker Eriksson
Set drv_use_singleton.fd_stop_select to -2 in start() as it's only used by driver_SUITE:driver_select_use.
2018-11-22Merge branch 'bmk/20181115/nififying_inet_tests/OTP-14831' into ↵Micael Karlberg
bmk/20180918/nififying_inet/OTP-14831
2018-11-21erts: Add counters:put/3Sverker Eriksson
2018-11-20erts: Improve driver_SUITE:smp_selectSverker Eriksson
to better detect an actual missing ready_input event on slow machines (valgrind) and without wasting time with long sleep on fast machines.
2018-11-16erts: Refactor out erts_test_utils from node_container_SUITESverker Eriksson
to be usable by other application tests.
2018-11-16[socket-nif|test] Attempt to "fix" the api_to_connect_tcpX test casesMicael Karlberg
Attempt to fix the the api_to_connect_tcp[4|6] test cases. On some linux versions (Ubuntu 14), the backlog seems to not work. No luck... OTP-14831