aboutsummaryrefslogtreecommitdiffstats
path: root/lib/test_server/src
AgeCommit message (Collapse)Author
2013-02-07[test_server] Add error printouts in case writing to test case html log failsSiri Hansen
Errors are printed to unexpected_io log.
2013-02-04[test_server] Don't write unicode strings to latin1 log filesSiri Hansen
The unicode update of test_server for R16A introduced a few potential errors when logging to files. Sometimes ~tp or ~ts was used for formatting also when writing to files that were not opened with the {encoding,utf8} option. If then the argument contained unicode characters above 255, the file descriptor would crash. This has been corrected by the following modifications: * Since the 'unexpected_io' log file is used only when the test case HTML file is not available (e.g. between test cases), this file is now also a HTML file and as other test_server HTML logs it is always UTF-8 encoded * Since it is possible to change which information is going to which log file (with test_server_ctrl:set_levels/3), we do not have full control over which information is written to which file. This means that any printout could be written to the 'major' log file (suite.log), which was earlier encoded as latin1. To avoid crashing this file descriptor due to unicode strings, the 'major' log file is now also encoded in UTF-8 (possible incopatibility). * The cross_cover.info file is no longer a text file which can be read with file:consult/1, instead it is written as a pure binary file using term_to_binary when writing and binary_to_term when reading. * The encoding of the file named 'last_name', which only content is the path to the last run.<timestamp> directory, is now dependent on the file name mode of the VM. If file names are expected to be unicode, then the 'last_name' file is UTF-8 encoded, else it is latin1 encoded. Also, ~tp is changed back to ~p unless it is somehow likely that the argument includes strings. It is not obvious that this is the correct thing to do, but some decission had to be taken...
2013-01-25Merge branch 'siri/unicode'Siri Hansen
* siri/unicode: [test_server] Don't escape : and @ in test log links [test_server] Don't create latin1 filenames if filename mode is utf8 [test_server] Ensure correct encoding in header for erl2html2:convert [common_test] Update common test modules to handle unicode [ts] Use unicode:characters_to_list/2 instead of binary_to_list/1 [test_server] Add tests for unicode support [test_server] Write link target with correct encoding in erl2html2 [test_server] Update test_server to handle unicode Update preloaded init.beam Make arguments given with -s option to erl aware of file name encoding OTP-10702 OTP-10783
2013-01-25Update copyright yearsBjörn-Egil Dahlberg
2013-01-25[test_server] Don't escape : and @ in test log linksSiri Hansen
If escaping :, then links of type "file:///c:/ldisk..." will not work. Escaping @ does not create any problems, but the link becomes harder to read and most modern browsers can handle this.
2013-01-25[test_server] Ensure correct encoding in header for erl2html2:convertSiri Hansen
When running under framework common_test, the encoding statement in the HTML header of the file generated with erl2html2:convert would sometimes be faulty. This has been corrected.
2013-01-25[ts] Use unicode:characters_to_list/2 instead of binary_to_list/1Siri Hansen
When reading text files with file:read_file/1, assume that the file has the default encding (epp:default_encoding()) and covert the binary to string by unicode:characters_to_list(Bin,DefaultEncoding) instead of binary_to_list(Bin) as before.
2013-01-25[test_server] Write link target with correct encoding in erl2html2Siri Hansen
If the encoding of the source file was utf-8, then the link target could be faulty encoded in the resulting HTML file. This has been corrected.
2013-01-25[test_server] Update test_server to handle unicodeSiri Hansen
* Use UTF-8 encoding for all HTML files, except the HTML version of the test suite generated with erl2html2:convert, which will have the same encoding as the original test suite (.erl) file. * Encode link targets in HTML files, allowing both special characters like "/", "&", "?" etc, and latin1 or unicode characters. * Use unicode modifier 't' with ~s and ~p when appropriate. * Use unicode:characters_to_list and unicode:characters_to_binary for conversion between binaries and strings instead of binary_to_list and list_to_binary.
2013-01-23Turn warnings to errors on selected applicationsBjörn Gustavsson
2013-01-22Merge branch 'lh/forget-mnemosyne/OTP-10729'Fredrik Gustafsson
* lh/forget-mnemosyne/OTP-10729: Remove what remains of the Mnemosyne code Remove support for the query keyword and query expressions
2013-01-18Merge branch 'nox/enable-silent-rules/OTP-10726'Björn-Egil Dahlberg
* nox/enable-silent-rules/OTP-10726: Implement ./otp_build configure --enable-silent-rules
2013-01-16Remove what remains of the Mnemosyne codeLoïc Hoguin
2013-01-15Implement ./otp_build configure --enable-silent-rulesAnthony Ramine
With silent rules, the output of make is less verbose and compilation warnings are easier to spot. Silent rules are disabled by default and can be disabled or enabled at will by make V=0 and make V=1.
2013-01-10Merge branch 'siri/cross-cover/OTP-9870'Siri Hansen
* siri/cross-cover/OTP-9870: [test_server] Don't use print/3 in cross_cover_analyse [common_test] Add documentation for cross cover analysis [common_test] Add test case for cross cover mechanism [test_server] Update documentation about cross cover [test_server] Add test of code cover mechanism [test_server,common_test] Fix cross cover mechansim
2013-01-09test_server: Remove support for packagesBjörn Gustavsson
2013-01-09Merge branch 'siri/cover/new-bugs-r16/OTP-10638'Siri Hansen
* siri/cover/new-bugs-r16/OTP-10638: [cover] Cleanup by stopping cover between tests [common_test] Stop cover on slave node after node is terminated [test_server] Stop cover on node after node is terminated [cover] Fix timing dependent bug in cover_SUITE:reconnect [cover] Remove stopped node also from lost_nodes list [cover] Don't mark stopped node as lost
2013-01-02[test_server] Add Unicode support to module listingHans Bolinder
Code written by Siri Hansen.
2012-12-20[test_server] Stop cover on node after node is terminatedSiri Hansen
Before terminating slave nodes, test_server calls cover:flush/1 to fetch data from the node without actually stopping cover on this node. If cover is not stopped for the node and a new node with the same name is started, then cover will be started on the new node. To avoid this test_server now calls cover:stop/1 after the slave node is terminated.
2012-12-13[test_server] Don't use print/3 in cross_cover_analyseSiri Hansen
Cross cover analysis is executed outside the scope of test_server_ctrl, i.e. test_server_ctrl is not necessarily started. This may cause test_server_ctrl:print/3 to hang. Instead use io:fwrite directly (as it was before).
2012-12-04[test_server,common_test] Fix cross cover mechansimSiri Hansen
Update the interface for cross cover analysis (collection of cover data over multiple tests) so it can be used via common_test and directly with test server. The concept of 'application' in the cross cover interface is removed and replaced with an arbitrary Tag=atom() which identifies a test run.
2012-11-26Merge branch 'bjorn/ct/separate-io-server/OTP-10101'Björn Gustavsson
* bjorn/ct/separate-io-server/OTP-10101: Fix race condition in test_server_io
2012-11-26Merge branch 'maint'Raimo Niskanen
2012-11-26Fix erroneous skipping for jinterface, erl_interface and icRaimo Niskanen
2012-11-21Merge branch 'siri/test_server/erl2html-indent-problem/OTP-9710'Siri Hansen
* siri/test_server/erl2html-indent-problem/OTP-9710: [test_server] Minimize memory usage in erl2html2:convert/[2,3] [test_server] Fix erl2html2.erl to handle badly indented files
2012-11-20[test_server] Minimize memory usage in erl2html2:convert/[2,3]Siri Hansen
Reading form by form and line by line, instead of reading the complete file in one go.
2012-11-19[test_server] Fix erl2html2.erl to handle badly indented filesSiri Hansen
Line numbering of erlang files that were not correctly indented could be wrong after coverting to html with erl2html2:convert/[2,3]. This has been corrected. This commit also fixes the following: * There are now link targets for each line and not only for each 10th line - meaning that links from test logs are now to the exact line, and not to the last number for which N rem 10 == 0. * there will only be one link target per function, i.e. the faulty link targets for function clauses are removed. * link targets for function now includes the arity (e.g. func/1 has a link target "func-1") And some tests are added.
2012-11-19Fix race condition in test_server_ioBjörn Gustavsson
In test_server_io:gc/1 we collect the group leaders for all processes. We must handle the case that a process has died after processes/0 was called and process_info(P, group_leader) is called.
2012-11-19Merge branch 'siri/test_server/break-in-end_per_testcase/OTP-10046'Siri Hansen
* siri/test_server/break-in-end_per_testcase/OTP-10046: [test_server] Cancel timetrap for break in end_per_testcase
2012-11-16[test_server] Cancel timetrap for break in end_per_testcaseSiri Hansen
Any call to test_server:break/1 should cancel all active timetramps. In some cases, Suite:end_per_testcase/2 is executed on a different process than the test case itself, and if test_server:break/1 would be called from there, the timetraps would not be cancelled. This has been corrected.
2012-11-15Merge branch 'maint'Siri Hansen
2012-11-14[test_server] Recognize and ignore info_reports for ct connectionsSiri Hansen
test_server_h will now recognize info_reports written by ct connection handlers (according to the description in cth_conn_log) and ignore them as they will be completely handled by by ct_conn_log_h. Earlier test_server_h would print a tag (testcase name) before forwarding the report to error_logger_tty_h. This would cause lots of tags in the log with no info report following (since error_logger_tty_h did not handle them).
2012-11-08Merge branch 'bjorn/ct/minor-corrections'Björn Gustavsson
* bjorn/ct/minor-corrections: test_server_io: Correct a few comments Handle ct:abort_current_testcase/1 when executing parallel groups Make sure that "Cover analysing..." is written to stdout Make sure that "Testing..." is not written if testing has finished
2012-11-08Remove stale support for remote target nodesBjörn Gustavsson
The support for remote target nodes has not worked in a long time. We are unlikely to ever need remot target node support and if we'll need it will be easier to start over from scratch.
2012-11-07test_server_io: Correct a few commentsBjörn Gustavsson
2012-11-07Handle ct:abort_current_testcase/1 when executing parallel groupsBjörn Gustavsson
ct:abort_current_testcase/1 (which is a wrapper for the function with the same name in test_server_ctrl) would not work as expected when a group with parallel test cases was executing. Essentially, the abort_current_testcase message would be ignored until the group has finished and would then abort the end_per_group testcase for the group. Since there is no unique current testcase when a parallel group is executing, we must handle the abort_current_testcase message and return an error tuple. Also fix the bug that test_server_ctrl:abort_current_testcase/1 would always return 'ok'.
2012-11-07Make sure that "Cover analysing..." is written to stdoutBjörn Gustavsson
If it is written with io:fwrite/2 it will be written to the unexpected_io log, where it will not be of any use.
2012-11-07Make sure that "Testing..." is not written if testing has finishedBjörn Gustavsson
When writing messages to stdout, all messages are prefixed with "Testing" followed by the name of the test suite. We don't want to write that prefix if testing has stopped.
2012-11-07[test_server] Skip test cases if init_per_group fails in user timetrapSiri Hansen
'user_timetrap_error' was not detected during any "conf init function" except init_per_suite, so if e.g. init_per_group failed with user_timetrap_error, then the test cases in the group would not be skipped. This has been corrected.
2012-11-07[test_server] Add Config to run_test_case_msgloop/1 from the startSiri Hansen
Earlier, #st.config was set to undefined when entering this loop. Then it was updated when the test case itself started. This means that if the test case process crashed during test case initiation, the parent process would not know the Config. This commit saves the initial Config value in the parent process (run_test_case_msgloop/1) from the start.
2012-11-02Merge branch 'maint'Lukas Larsson
* maint: Skip ct_netconf tests if there is no crypto Migrate timers from test_server to ct interface Update tests to run with an oldshell emulator Move crypto check so that tc is skipped and not failed Update for new version of ppc compilation chain Verify that ebin folder of applications exists Conflicts: lib/asn1/test/asn1_SUITE.erl lib/kernel/test/interactive_shell_SUITE.erl
2012-10-31Merge branch 'siri/cover-tests'Siri Hansen
* siri/cover-tests: (21 commits) [common_test] Extend timer for flushing error logger [cover] Allow reconnection if node has been disconnected or down [cover] Don't kill remote nodes when connection to main node is lost [test_server] Add option {start_cover,false} to test_server:start_node Use code:lib_dir instead of code:which to get application directory [common_test] Add test for OTP-9956 Include all kernel modules in code coverage analysis [common_test] Add test suite for code coverage support [common_test, test_server] Don't flush cover if cover is not running [common_test] Add option cover_stop [test_server] Allow cross cover analysis when testing through common_test [test_server] Start cover in test_server:wait_for_node [test_server] Multiply timers with timetrap_scale_factor when starting nodes Include all stdlib modules in code coverage analysis [test_server] Include all test_server modules in code coverage analysis Skip epp_SUITE:otp_8911 if cover is running [common_test] Start cover on slave nodes if running cover tests [common_test] Don't stop cover before stopping slave node [test_server] Don't stop cover after test is finished [cover] Add support for test_server ... OTP-10427
2012-10-30[test_server] Add option {start_cover,false} to test_server:start_nodeSiri Hansen
By default the test server will start cover on all nodes when the test is run with code coverage analysis. To make sure cover is not started on a new node, this option can be set. This can be useful if the test itself starts cover or if the new node for some reason can not run cover compiled code.
2012-10-30[common_test] Add option cover_stopSiri Hansen
By default, test_server will always stop cover (and thus load back the non cover compiled original beam files) after a test with code coverage analysis is completed. The new option allows the common_test user to specify that cover shall not be stopped. This can be useful if there are processes still running old code, i.e. processes that have not done any fully qualified function call after the cover compilation, since loading the original code then will kill those processes. This is only recommended if the erlang node is to be stopped after the test run, or if cover can be manually stopped.
2012-10-30[test_server] Allow cross cover analysis when testing through common_testSiri Hansen
The cross cover analysis functionality in test_server was broken since OTP converted to running daily tests through common_test. This has been corrected.
2012-10-30[test_server] Start cover in test_server:wait_for_nodeSiri Hansen
Without this change, there is no support in test_server for starting cover on a node started with option {wait,false}.
2012-10-30[test_server] Multiply timers with timetrap_scale_factor when starting nodesSiri Hansen
In test_server_ctrl:start_node and wait_for_node, the timer in controller_call was not multiplied by the timetrap_scale_factor. This caused unexpected behaviour since the scale factor was used furhter down the the code, and timeout would happen in unexpected order when cover was running.
2012-10-30[test_server] Don't stop cover after test is finishedSiri Hansen
This commit removes all calls to cover:stop from test_server. This is to avoid crash in some processes due to old code. The correction shall be further refined for general use. There will, for instance, be an option to turn off cover:stop/0 after completed test run, so the default behaviour is backwards compatible.
2012-10-26Simplify managment of test_server_locBjörn Gustavsson
Before line numbers were included in exceptions (in R15), there were parse transforms and macros that would keep the test_server_loc process dictionary variable updated; therefore there is a mod_loc/1 function that will normalize the representation of locations. Simplify the code as following: * 'test_server_loc' should always contain a list with one or more tuples. ({M,F} or {M,F,Line}) * At the beginning of each test case, set 'test_server_loc' to [{Module,Func}] of the the currently executing test case. * Stop updating 'test_server_loc', except when an exception occurs. (It used to be updated when running 'init_per_testcase' and so on.) * Remove the mod_loc/1 function.
2012-10-26Keep the information about the current test case consistentBjörn Gustavsson
Three pieces of information could be out of sync in testcase supervisor process at the time when a timetrap occurred: * test_server_loc (process dictionary) - may indicate that a framework function is executing * test_server_init_or_end_conf (process dictionary) - indicates whether init_per_testcase or end_per_testcase is executing * The current configuration (#st.config) - set using a synchronous call There could be in a crash in spawn_fw_call/7 because the current configuration was not defined when it was expected to. To avoid the problem, introduce set_tc_state/2 (and a corresponding message) to allow setting both an indication what the testcase is executing (e.g. init_per_testcase, framework call, and so on), and the current configuration. Use only that information to handle a timetrap timeout (and aborted testcase and the other reasons for the testcase process to terminate). Completely remove test_server_init_or_end_conf.