aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tools/test
AgeCommit message (Collapse)Author
2018-04-23erts: Rewrite memory instrumentationJohn Högberg
This commit replaces the old memory instrumentation with a new implementation that scans carriers instead of wrapping erts_alloc/erts_free. The old implementation could not extract information without halting the emulator, had considerable runtime overhead, and the memory maps it produced were noisy and lacked critical information. Since the new implementation walks through existing data structures there's no longer a need to start the emulator with special flags to get information about carrier utilization/fragmentation. Memory fragmentation is also easier to diagnose as it's presented on a per-carrier basis which eliminates the need to account for "holes" between mmap segments. To help track allocations, each allocation can now be tagged with what it is and who allocated it at the cost of one extra word per allocation. This is controlled on a per-allocator basis with the +M<S>atags option, and is enabled by default for binary_alloc and driver_alloc (which is also used by NIFs).
2018-03-01Merge branch 'maint'Dan Gudmundsson
* maint: emacs: delimiter first in icr works emacs: Indent delimiter first in term elements correctly emacs: Indent tuple (and maps) elements as list elements Add emacs indention testcase
2018-03-01Merge branch 'dgud/tools/emacs/indent-tests' into maintDan Gudmundsson
* dgud/tools/emacs/indent-tests: emacs: delimiter first in icr works emacs: Indent delimiter first in term elements correctly emacs: Indent tuple (and maps) elements as list elements Add emacs indention testcase OTP-14944
2018-03-01emacs: delimiter first in icr worksDan Gudmundsson
2018-03-01emacs: Indent delimiter first in term elements correctlyDan Gudmundsson
2018-03-01emacs: Indent tuple (and maps) elements as list elementsDan Gudmundsson
Avoid From: { ^^element1, ^^element2 } To: { ^element1, ^element2 }
2018-03-01Add emacs indention testcaseDan Gudmundsson
Split the manual testcase and run them in daily tests instead. Easy to run directly as well: (cd ../test; cerl -eval "emacs_SUITE:indent([])")
2018-02-13Merge branch 'maint'John Högberg
2018-02-13Merge branch 'john/tools/fix-lcnt-server-crash/PR-1711/OTP-14912' into maintJohn Högberg
2018-02-13Don't crash lcnt server if information/0 is called before collect/0Péter Gömöri
2018-02-12Automatically start lcnt server on first useJohn Högberg
lcnt:collect is documented as implicitly starting the lcnt server but didn't do so prior to this commit. I've decided to extend this behavior to all operations as the overhead is negligible and it's a bit more convenient to use.
2017-12-22Merge branch 'maint'Hans Bolinder
* maint: tools: Correct a counting bug in Cover
2017-12-21tools: Correct a counting bug in CoverHans Bolinder
See also PR #1641, https://github.com/erlang/otp/pull/1641. The bug was introduced in commit ab435488a (Erlang/OTP 18).
2017-11-30Fix incorrect assumption about process activityJohn Högberg
The tests assume that the most active process will be the current one, which is no longer true since the delayed_write option now uses a wrapper process for much of its work. The timeout for this test has been increased to account for the lack of delayed_write; 60s was enough for everything except the debug build on some machines.
2017-10-27Correct erlang:is_builtin/3 for apply/2 and yield/0Björn Gustavsson
erlang:is_builtin(erlang, M, F) returns false for apply/2 and yield/0. The documentation for erlang:is_builtin/3 says that it returns true for BIFs that are implemented in C. apply/2 and yield/0 are implemented in C (as BEAM instructions), and therefore the correct return value is true. Also see a similar argument that was made for apply/3 in the past: http://erlang.org/pipermail/erlang-bugs/2015-October/005101.html https://bugs.erlang.org/browse/ERL-500
2017-09-20fprof: Make sure the receiving file can handle UnicodeHans Bolinder
It is assumed that I/O devices can handle character codes greater than 255.
2017-09-14tools: Add handling of the -on_load() attribute to XrefHans Bolinder
2017-09-05xref: Improve handling of UnicodeHans Bolinder
The updates of xref_base:analysis() are cosmetic (the strings are parsed by the Erlang scanner only).
2017-07-06Merge branch 'john/erts/runtime-lcnt' into maintJohn Högberg
* john/erts/runtime-lcnt: Document rt_mask and add warnings about copy_save Add an emulator test suite for lock counting Break erts_debug:lock_counters/1 into separate BIFs Allow toggling lock counting at runtime Move lock flags to a common header Enable register_SUITE for lcnt builds Enable lcnt smoke test on all builds that have lcnt enabled Make lock counter info independent of the locks being counted OTP-14412 OTP-13170 OTP-14413
2017-07-06Enable lcnt smoke test on all builds that have lcnt enabledJohn Högberg
2017-06-29[make] Do not use the interactive tool 'c' from makeSiri Hansen
2017-06-14Update copyright yearHans Nilsson
2017-05-16lcnt_SUITE: Add a smoke test for running lock-countingBjörn Gustavsson
2017-05-04Update copyright yearRaimo Niskanen
2017-04-19Merge branch 'bjorn/stdlib/erl_tar/OTP-14278'Björn Gustavsson
* bjorn/stdlib/erl_tar/OTP-14278: erl_tar: Handle leading slashes and directory traversal attacks Don't create absolute path names in tar files
2017-04-12Don't create absolute path names in tar filesBjörn Gustavsson
We should not assume that erl_tar will allow unpacking tar files with absolute path names for archive members.
2017-04-12[tools/make] Add current directory to include pathSiri Hansen
This is to ensure that files are recompiled if a .hrl file in the current directory is changed.
2017-03-09tools: Remove percept from makefileBjörn-Egil Dahlberg
2017-03-03tools: Allow Emake options to be passed in explicitlyAnthony Jackson
This allows build scripts to use emake without needing to generate an Emakefile before running make:all/0,1 or make:file/1,2.
2016-09-01xref: Eliminate use of sys_pre_expandBjörn Gustavsson
2016-08-30make, ct_make: Handle warning attributes in source filesBjörn Gustavsson
epp learned to handle the -warning() directive in 14d72f02, but make and ct_make were not updated to expect a {warning,_} return value from epp:parse_erl_form/1.
2016-08-29Fix purge of codeRickard Green
Ensure that we cannot get any dangling pointers into code that has been purged. This is done by a two phase purge. At first phase all fun entries pointing into the code to purge are marked for purge. All processes trying to call these funs will be suspended and by this we avoid getting new direct references into the code. When all processes has been checked, these processes are resumed. The new purge strategy now also completely ignore the existence of indirect references to the code (funs). If such exist, they will cause bad fun exceptions to the caller, but will not prevent a soft purge or cause a kill of a process having such live references during a hard purge. This since it is impossible to give any guarantees that no processes in the system have such indirect references. Even when the system is completely clean from such references, new ones can appear via distribution and/or disk.
2016-06-28tools: Fix a bug adding multiple modules to an Xref serverHans Bolinder
The bug when introduced in OTP-19.0. Optimize adding multiple modules to an Xref server
2016-04-29tools: Update fprof testsBjörn-Egil Dahlberg
2016-04-15eprof: Fix tests after tracer module incompatabilitiesLukas Larsson
2016-04-15fprof: update to work with new spawned trace eventLukas Larsson
OTP-13499
2016-04-13Merge branch 'egil/tools/modernize-tests'Björn-Egil Dahlberg
* egil/tools/modernize-tests: tools: Don't divide by zero in tests Fix instruments_SUITE sumblock check Eliminate use of doc and suite clauses Replace ?t with test_server Use test_server:is_debug/0 instead of custom check Replace use of test_server:format/2 with io:format/2 Eliminate use of ?config() macro Eliminate use of test_server:fail/0,1 Eliminate erlang:now/0 Modernize use of timetraps Remove ?line macros
2016-04-13tools: Don't divide by zero in testsBjörn-Egil Dahlberg
2016-04-07Fix instruments_SUITE sumblock checkBjörn-Egil Dahlberg
2016-04-07Eliminate use of doc and suite clausesBjörn-Egil Dahlberg
Those clause are obsolete and never used by common_test.
2016-04-07Replace ?t with test_serverBjörn-Egil Dahlberg
The macro ?t is deprecated. Replace its use with 'test_server'.
2016-04-07Use test_server:is_debug/0 instead of custom checkBjörn-Egil Dahlberg
2016-04-07Replace use of test_server:format/2 with io:format/2Björn-Egil Dahlberg
2016-04-07Eliminate use of ?config() macroBjörn-Egil Dahlberg
2016-04-07Eliminate use of test_server:fail/0,1Björn-Egil Dahlberg
2016-04-07Eliminate erlang:now/0Björn-Egil Dahlberg
2016-04-07Modernize use of timetrapsBjörn-Egil Dahlberg
2016-04-06Remove ?line macrosBjörn-Egil Dahlberg
2016-03-15update copyright-yearHenrik Nord
2016-03-01Generalize bit string comprehensionsBjörn Gustavsson
The expression in a bit string comprehension is limited to a literal bit string expression. That is, the following code is legal: << <<X>> || X <- List >> but not this code: << foo(X) || X <- List >> The limitation is annoying. For one thing, tools that transform the abstract format must be careful not to produce code such as: << begin %% Some instrumentation code. <<X>> end || X <- List >> One reason for the limitation could be that we'll get reduce/reduce conflicts if we try to allow an arbitrary expression in a bit string comprehension: binary_comprehension -> '<<' expr '||' lc_exprs '>>' : {bc,?anno('$1'),'$2','$4'}. Unfortunately, there does not seem to be an easy way to work around that problem. The best we can do is to allow 'expr_max' expressions (as in the binary syntax): binary_comprehension -> '<<' expr_max '||' lc_exprs '>>' : {bc,?anno('$1'),'$2','$4'}. That will work, but functions calls must be enclosed in parentheses: << (foo(X)) || X <- List >>