summaryrefslogtreecommitdiff
path: root/erts/test
diff options
context:
space:
mode:
Diffstat (limited to 'erts/test')
-rw-r--r--erts/test/erl_print_SUITE.erl41
-rw-r--r--erts/test/erlexec_SUITE.erl51
-rw-r--r--erts/test/erlexec_SUITE_data/erlexec_tests.c2
-rw-r--r--erts/test/ethread_SUITE_data/ethread_tests.c36
-rw-r--r--erts/test/nt_SUITE_data/nt_info.c7
-rw-r--r--erts/test/otp_SUITE.erl27
-rw-r--r--erts/test/upgrade_SUITE.erl11
-rw-r--r--erts/test/z_SUITE.erl99
8 files changed, 176 insertions, 98 deletions
diff --git a/erts/test/erl_print_SUITE.erl b/erts/test/erl_print_SUITE.erl
index 8735d3c427..544d1a8dcb 100644
--- a/erts/test/erl_print_SUITE.erl
+++ b/erts/test/erl_print_SUITE.erl
@@ -324,6 +324,9 @@ run_case(Config, TestArgs, Fun) ->
-define(PORT_EXT, 102).
-define(PID_EXT, 103).
-define(NEW_REFERENCE_EXT, 114).
+-define(NEW_PID_EXT, $X).
+-define(NEW_PORT_EXT, $Y).
+-define(NEWER_REFERENCE_EXT, $Z).
uint32_be(Uint) when is_integer(Uint), 0 =< Uint, Uint < 1 bsl 32 ->
[(Uint bsr 24) band 16#ff,
@@ -351,13 +354,13 @@ mk_pid({NodeName, Creation}, Number, Serial) when is_atom(NodeName) ->
mk_pid({atom_to_list(NodeName), Creation}, Number, Serial);
mk_pid({NodeName, Creation}, Number, Serial) ->
case catch binary_to_term(list_to_binary([?VERSION_MAGIC,
- ?PID_EXT,
+ ?NEW_PID_EXT,
?ATOM_EXT,
uint16_be(length(NodeName)),
NodeName,
uint32_be(Number),
uint32_be(Serial),
- uint8(Creation)])) of
+ uint32_be(Creation)])) of
Pid when is_pid(Pid) ->
Pid;
{'EXIT', {badarg, _}} ->
@@ -370,12 +373,12 @@ mk_port({NodeName, Creation}, Number) when is_atom(NodeName) ->
mk_port({atom_to_list(NodeName), Creation}, Number);
mk_port({NodeName, Creation}, Number) ->
case catch binary_to_term(list_to_binary([?VERSION_MAGIC,
- ?PORT_EXT,
+ ?NEW_PORT_EXT,
?ATOM_EXT,
uint16_be(length(NodeName)),
NodeName,
uint32_be(Number),
- uint8(Creation)])) of
+ uint32_be(Creation)])) of
Port when is_port(Port) ->
Port;
{'EXIT', {badarg, _}} ->
@@ -388,33 +391,16 @@ mk_ref({NodeName, Creation}, Numbers) when is_atom(NodeName),
is_integer(Creation),
is_list(Numbers) ->
mk_ref({atom_to_list(NodeName), Creation}, Numbers);
-mk_ref({NodeName, Creation}, [Number]) when is_list(NodeName),
- is_integer(Creation),
- is_integer(Number) ->
- case catch binary_to_term(list_to_binary([?VERSION_MAGIC,
- ?REFERENCE_EXT,
- ?ATOM_EXT,
- uint16_be(length(NodeName)),
- NodeName,
- uint32_be(Number),
- uint8(Creation)])) of
- Ref when is_reference(Ref) ->
- Ref;
- {'EXIT', {badarg, _}} ->
- exit({badarg, mk_ref, [{NodeName, Creation}, [Number]]});
- Other ->
- exit({unexpected_binary_to_term_result, Other})
- end;
mk_ref({NodeName, Creation}, Numbers) when is_list(NodeName),
is_integer(Creation),
is_list(Numbers) ->
case catch binary_to_term(list_to_binary([?VERSION_MAGIC,
- ?NEW_REFERENCE_EXT,
+ ?NEWER_REFERENCE_EXT,
uint16_be(length(Numbers)),
?ATOM_EXT,
uint16_be(length(NodeName)),
NodeName,
- uint8(Creation),
+ uint32_be(Creation),
lists:map(fun (N) ->
uint32_be(N)
end,
@@ -429,11 +415,10 @@ mk_ref({NodeName, Creation}, Numbers) when is_list(NodeName),
my_cre() -> erlang:system_info(creation).
-oth_cre(0) -> 1;
-oth_cre(1) -> 2;
-oth_cre(2) -> 3;
-oth_cre(3) -> 1;
-oth_cre(N) -> exit({invalid_creation, N}).
+oth_cre(N) when N >= 0, N < (1 bsl 32) ->
+ (N rem ((1 bsl 32) - 1)) + 1;
+oth_cre(N) ->
+ exit({invalid_creation, N}).
str_1_bsl_10000() ->
"19950631168807583848837421626835850838234968318861924548520089498529438830221946631919961684036194597899331129423209124271556491349413781117593785932096323957855730046793794526765246551266059895520550086918193311542508608460618104685509074866089624888090489894838009253941633257850621568309473902556912388065225096643874441046759871626985453222868538161694315775629640762836880760732228535091641476183956381458969463899410840960536267821064621427333394036525565649530603142680234969400335934316651459297773279665775606172582031407994198179607378245683762280037302885487251900834464581454650557929601414833921615734588139257095379769119277800826957735674444123062018757836325502728323789270710373802866393031428133241401624195671690574061419654342324638801248856147305207431992259611796250130992860241708340807605932320161268492288496255841312844061536738951487114256315111089745514203313820202931640957596464756010405845841566072044962867016515061920631004186422275908670900574606417856951911456055068251250406007519842261898059237118054444788072906395242548339221982707404473162376760846613033778706039803413197133493654622700563169937455508241780972810983291314403571877524768509857276937926433221599399876886660808368837838027643282775172273657572744784112294389733810861607423253291974813120197604178281965697475898164531258434135959862784130128185406283476649088690521047580882615823961985770122407044330583075869039319604603404973156583208672105913300903752823415539745394397715257455290510212310947321610753474825740775273986348298498340756937955646638621874569499279016572103701364433135817214311791398222983845847334440270964182851005072927748364550578634501100852987812389473928699540834346158807043959118985815145779177143619698728131459483783202081474982171858011389071228250905826817436220577475921417653715687725614904582904992461028630081535583308130101987675856234343538955409175623400844887526162643568648833519463720377293240094456246923254350400678027273837755376406726898636241037491410966718557050759098100246789880178271925953381282421954028302759408448955014676668389697996886241636313376393903373455801407636741877711055384225739499110186468219696581651485130494222369947714763069155468217682876200362777257723781365331611196811280792669481887201298643660768551639860534602297871557517947385246369446923087894265948217008051120322365496288169035739121368338393591756418733850510970271613915439590991598154654417336311656936031122249937969999226781732358023111862644575299135758175008199839236284615249881088960232244362173771618086357015468484058622329792853875623486556440536962622018963571028812361567512543338303270029097668650568557157505516727518899194129711337690149916181315171544007728650573189557450920330185304847113818315407324053319038462084036421763703911550639789000742853672196280903477974533320468368795868580237952218629120080742819551317948157624448298518461509704888027274721574688131594750409732115080498190455803416826949787141316063210686391511681774304792596709376".
diff --git a/erts/test/erlexec_SUITE.erl b/erts/test/erlexec_SUITE.erl
index 628166f7a4..c210c5479b 100644
--- a/erts/test/erlexec_SUITE.erl
+++ b/erts/test/erlexec_SUITE.erl
@@ -129,21 +129,26 @@ args_file(Config) when is_list(Config) ->
" -args_file ~s#acomment~n"
"~n"
"-MiscArg7~n"
+ "-MiscArg8 'val with double space'~n"
+ "-MiscArg9 '~n'~n"
+ "-MiscArg10 \\~n\\\t~n"
"#~n"
"+\\#700~n"
+ "#~s~n"
"-extra +XtraArg6~n",
- [AFN2]),
+ [AFN2,lists:duplicate(1024*1024, $a)]),
write_file(AFN2,
- "-MiscArg3~n"
+ "-MiscArg3 \t\v\f\r\n ~n"
"+\\#300~n"
"-args_file ~s~n"
- "-MiscArg5~n"
- "+\\#500#anothercomment -MiscArg10~n"
+ "-MiscArg5 ' '~n"
+ "+\\#500#anothercomment -MiscArg11~n"
"-args_file ~s~n"
"-args_file ~s~n"
"-args_file ~s~n"
+ "# ~s~n"
"-extra +XtraArg5~n",
- [AFN3, AFN4, AFN5, AFN6]),
+ [AFN3, AFN4, AFN5, AFN6,lists:duplicate(1758, $a)]),
write_file(AFN3,
"# comment again~n"
" -MiscArg4 +\\#400 -extra +XtraArg1"),
@@ -156,33 +161,37 @@ args_file(Config) when is_list(Config) ->
write_file(AFN6, "-extra # +XtraArg10~n"),
CmdLine = "+#100 -MiscArg1 "
++ "-args_file " ++ AFN1
- ++ " +#800 -MiscArg8 -extra +XtraArg7 +XtraArg8",
+ ++ " +#800 -MiscArgCLI \\\t -extra +XtraArg7 +XtraArg8",
{Emu, Misc, Extra} = emu_args(CmdLine),
verify_args(["-#100", "-#200", "-#300", "-#400",
"-#500", "-#600", "-#700", "-#800"], Emu),
verify_args(["-MiscArg1", "-MiscArg2", "-MiscArg3", "-MiscArg4",
- "-MiscArg5", "-MiscArg6", "-MiscArg7", "-MiscArg8"],
+ "-MiscArg5", " ", "-MiscArg6", "-MiscArg7", "-MiscArg8",
+ "val with double space",
+ "-MiscArg9","\n","-MiscArg10","\n\t","-MiscArgCLI"],
Misc),
verify_args(["+XtraArg1", "+XtraArg2", "+XtraArg3", "+XtraArg4",
"+XtraArg5", "+XtraArg6", "+XtraArg7", "+XtraArg8"],
Extra),
- verify_not_args(["-MiscArg10", "-#1000", "+XtraArg10",
+ verify_not_args(["","-MiscArg11", "-#1000", "+XtraArg10",
"-MiscArg1", "-MiscArg2", "-MiscArg3", "-MiscArg4",
"-MiscArg5", "-MiscArg6", "-MiscArg7", "-MiscArg8",
+ "-MiscArg9", "-MiscArg10","-MiscArgCLI",
"+XtraArg1", "+XtraArg2", "+XtraArg3", "+XtraArg4",
"+XtraArg5", "+XtraArg6", "+XtraArg7", "+XtraArg8"],
Emu),
- verify_not_args(["-MiscArg10", "-#1000", "+XtraArg10",
+ verify_not_args(["","-MiscArg11", "-#1000", "+XtraArg10",
"-#100", "-#200", "-#300", "-#400",
"-#500", "-#600", "-#700", "-#800",
"+XtraArg1", "+XtraArg2", "+XtraArg3", "+XtraArg4",
"+XtraArg5", "+XtraArg6", "+XtraArg7", "+XtraArg8"],
Misc),
- verify_not_args(["-MiscArg10", "-#1000", "+XtraArg10",
+ verify_not_args(["","-MiscArg11", "-#1000", "+XtraArg10",
"-#100", "-#200", "-#300", "-#400",
"-#500", "-#600", "-#700", "-#800",
"-MiscArg1", "-MiscArg2", "-MiscArg3", "-MiscArg4",
- "-MiscArg5", "-MiscArg6", "-MiscArg7", "-MiscArg8"],
+ "-MiscArg5", "-MiscArg6", "-MiscArg7", "-MiscArg8",
+ "-MiscArg9","-MiscArg10","-MiscArgCLI"],
Extra),
ok.
@@ -220,8 +229,7 @@ evil_args_file(Config) when is_list(Config) ->
ANums),
Misc),
ok.
-
-
+
env(Config) when is_list(Config) ->
os:putenv("ERL_AFLAGS", "-MiscArg1 +#100 -extra +XtraArg1 +XtraArg2"),
@@ -398,10 +406,13 @@ verify_args([], _Ys) ->
ok;
verify_args(Xs, []) ->
exit({args_not_found_in_order, Xs});
-verify_args([X|Xs], [X|Ys]) ->
- verify_args(Xs, Ys);
-verify_args(Xs, [_Y|Ys]) ->
- verify_args(Xs, Ys).
+verify_args([X|Xs], [Y|Ys]) ->
+ case string:equal(string:replace(X,"\r\n","\n"),string:replace(Y,"\r\n","\n")) of
+ true ->
+ verify_args(Xs,Ys);
+ false ->
+ verify_args(Xs,[Y|Ys])
+ end.
verify_not_args(Xs, Ys) ->
lists:foreach(fun (X) ->
@@ -414,9 +425,9 @@ verify_not_args(Xs, Ys) ->
emu_args(CmdLineArgs) ->
io:format("CmdLineArgs = ~ts~n", [CmdLineArgs]),
{ok,[[Erl]]} = init:get_argument(progname),
- EmuCL = os:cmd(Erl ++ " -emu_args_exit " ++ CmdLineArgs),
- io:format("EmuCL = ~ts", [EmuCL]),
- split_emu_clt(string:lexemes(EmuCL, [$ ,$\t,$\n,[$\r,$\n]])).
+ EmuCL = os:cmd(Erl ++ " -emu_qouted_cmd_exit " ++ CmdLineArgs),
+ ct:pal("EmuCL = ~ts", [EmuCL]),
+ split_emu_clt(string:split(string:trim(EmuCL,both,"\n \""), "\" \"", all)).
split_emu_clt(EmuCLT) ->
split_emu_clt(EmuCLT, [], [], [], emu).
diff --git a/erts/test/erlexec_SUITE_data/erlexec_tests.c b/erts/test/erlexec_SUITE_data/erlexec_tests.c
index bd28d2900c..057d674a8f 100644
--- a/erts/test/erlexec_SUITE_data/erlexec_tests.c
+++ b/erts/test/erlexec_SUITE_data/erlexec_tests.c
@@ -23,7 +23,7 @@
* Author: Sverker Eriksson
*/
-#if defined (__WIN32__) || defined(VXWORKS)
+#if defined (__WIN32__)
int main() {return 0;}
#else /* UNIX only */
diff --git a/erts/test/ethread_SUITE_data/ethread_tests.c b/erts/test/ethread_SUITE_data/ethread_tests.c
index fe7f92b012..87f59f1adc 100644
--- a/erts/test/ethread_SUITE_data/ethread_tests.c
+++ b/erts/test/ethread_SUITE_data/ethread_tests.c
@@ -217,16 +217,23 @@ create_join_thread_test(void)
* Tests ethr_equal_tids.
*/
-#define ETT_THREADS 100000
+#define ETT_THREADS 1000
static ethr_tid ett_tids[3];
static ethr_mutex ett_mutex;
static ethr_cond ett_cond;
static int ett_terminate;
+static int ett_thread_go;
static void *
ett_thread(void *my_tid)
{
+ ethr_mutex_lock(&ett_mutex);
+ while (!ett_thread_go) {
+ int res = ethr_cond_wait(&ett_cond, &ett_mutex);
+ ASSERT(res == 0);
+ }
+ ethr_mutex_unlock(&ett_mutex);
ASSERT(!ethr_equal_tids(ethr_self(), ett_tids[0]));
ASSERT(ethr_equal_tids(ethr_self(), *((ethr_tid *) my_tid)));
@@ -257,18 +264,36 @@ equal_tids_test(void)
res = ethr_cond_init(&ett_cond);
ASSERT(res == 0);
ett_tids[0] = ethr_self();
+
+ ethr_mutex_lock(&ett_mutex);
+ ett_thread_go = 0;
+ ethr_mutex_unlock(&ett_mutex);
res = ethr_thr_create(&ett_tids[1], ett_thread, (void *) &ett_tids[1], NULL);
ASSERT(res == 0);
+ ethr_mutex_lock(&ett_mutex);
+ ett_thread_go = 1;
+ ethr_cond_signal(&ett_cond);
+ ethr_mutex_unlock(&ett_mutex);
+
ASSERT(ethr_equal_tids(ethr_self(), ett_tids[0]));
ASSERT(!ethr_equal_tids(ethr_self(), ett_tids[1]));
res = ethr_thr_join(ett_tids[1], NULL);
+ ethr_mutex_lock(&ett_mutex);
+ ett_thread_go = 0;
+ ethr_mutex_unlock(&ett_mutex);
+
res = ethr_thr_create(&ett_tids[2], ett_thread, (void *) &ett_tids[2], NULL);
ASSERT(res == 0);
+ ethr_mutex_lock(&ett_mutex);
+ ett_thread_go = 1;
+ ethr_cond_signal(&ett_cond);
+ ethr_mutex_unlock(&ett_mutex);
+
ASSERT(ethr_equal_tids(ethr_self(), ett_tids[0]));
ASSERT(!ethr_equal_tids(ethr_self(), ett_tids[1]));
ASSERT(!ethr_equal_tids(ethr_self(), ett_tids[2]));
@@ -294,9 +319,18 @@ equal_tids_test(void)
ASSERT(!ethr_equal_tids(ett_tids[0], ett_tids[1]));
for (i = 0; i < ETT_THREADS; i++) {
+ ethr_mutex_lock(&ett_mutex);
+ ett_thread_go = 0;
+ ethr_mutex_unlock(&ett_mutex);
+
res = ethr_thr_create(&ett_tids[2], ett_thread, (void*)&ett_tids[2], NULL);
ASSERT(res == 0);
+ ethr_mutex_lock(&ett_mutex);
+ ett_thread_go = 1;
+ ethr_cond_broadcast(&ett_cond);
+ ethr_mutex_unlock(&ett_mutex);
+
ASSERT(!ethr_equal_tids(ett_tids[0], ett_tids[2]));
ASSERT(!ethr_equal_tids(ett_tids[1], ett_tids[2]));
diff --git a/erts/test/nt_SUITE_data/nt_info.c b/erts/test/nt_SUITE_data/nt_info.c
index 8ef52cad2d..87917a1559 100644
--- a/erts/test/nt_SUITE_data/nt_info.c
+++ b/erts/test/nt_SUITE_data/nt_info.c
@@ -27,12 +27,7 @@
#include <stdlib.h>
#include <string.h>
-#if defined(VXWORKS)
-int nt_info(int argc, char **argv){
- printf("Hello Älvsjö!\n");
- return 0;
-}
-#elif !defined(__WIN32__)
+#if !defined(__WIN32__)
int main(int argc, char **argv){
printf("Hello Älvsjö!\n");
return 0;
diff --git a/erts/test/otp_SUITE.erl b/erts/test/otp_SUITE.erl
index 2372e8b9ac..3f4f3f9574 100644
--- a/erts/test/otp_SUITE.erl
+++ b/erts/test/otp_SUITE.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2000-2018. All Rights Reserved.
+%% Copyright Ericsson AB 2000-2019. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
@@ -57,8 +57,14 @@ init_per_suite(Config) ->
{error,bad_name} ->
Erts = filename:join([code:root_dir(),"erts","preloaded","ebin"]),
{ok,_} = xref:add_directory(Server, Erts, []);
- _ ->
- ok
+ LibDir ->
+ case file:read_file_info(filename:join([LibDir,"ebin"])) of
+ {error,enoent} ->
+ Erts = filename:join([LibDir, "preloaded","ebin"]),
+ {ok,_} = xref:add_directory(Server, Erts, []);
+ _ ->
+ ok
+ end
end,
[{xref_server,Server}|Config].
@@ -79,8 +85,7 @@ undefined_functions(Config) when is_list(Config) ->
[UndefS,ExcludeFrom]),
{ok,Undef0} = xref:q(Server, lists:flatten(Q)),
Undef1 = hipe_filter(Undef0),
- Undef2 = ssl_crypto_filter(Undef1),
- Undef3 = edoc_filter(Undef2),
+ Undef3 = ssl_crypto_filter(Undef1),
Undef4 = eunit_filter(Undef3),
Undef5 = dialyzer_filter(Undef4),
Undef6 = wx_filter(Undef5),
@@ -92,9 +97,9 @@ undefined_functions(Config) when is_list(Config) ->
_ ->
Fd = open_log(Config, "undefined_functions"),
foreach(fun ({MFA1,MFA2}) ->
- io:format("~s calls undefined ~s",
- [format_mfa(Server, MFA1),
- format_mfa(MFA2)]),
+ ct:pal("~s calls undefined ~s",
+ [format_mfa(Server, MFA1),
+ format_mfa(MFA2)]),
io:format(Fd, "~s ~s\n",
[format_mfa(Server, MFA1),
format_mfa(MFA2)])
@@ -157,12 +162,6 @@ ssl_crypto_filter(Undef) ->
{_,_} -> Undef
end.
-edoc_filter(Undef) ->
- %% Filter away function call that is catched.
- filter(fun({{edoc_lib,uri_get_http,1},{http,request_sync,2}}) -> false;
- (_) -> true
- end, Undef).
-
eunit_filter(Undef) ->
filter(fun({{eunit_test,wrapper_test_exported_,0},
{eunit_test,nonexisting_function,0}}) -> false;
diff --git a/erts/test/upgrade_SUITE.erl b/erts/test/upgrade_SUITE.erl
index f92c25bdb4..f4c8aae810 100644
--- a/erts/test/upgrade_SUITE.erl
+++ b/erts/test/upgrade_SUITE.erl
@@ -20,6 +20,8 @@
-compile(export_all).
+-compile(r21).
+
-include_lib("common_test/include/ct.hrl").
-include_lib("kernel/include/file.hrl").
@@ -80,7 +82,7 @@ end_per_testcase(_Case,Config) ->
ok.
all() ->
- [minor,major].
+ [minor,major,ancient_major].
%% If this is major release X, then this test performs an upgrade from
%% major release X-1 to the current release.
@@ -89,6 +91,13 @@ major(Config) ->
PreviousMajor = previous_major(Current),
upgrade_test(PreviousMajor,Current,Config).
+%% If this is major release X, then this test performs an upgrade from
+%% major release X-2 to the current release.
+ancient_major(Config) ->
+ Current = erlang:system_info(otp_release),
+ PreviousPreviousMajor = previous_major(previous_major(Current)),
+ upgrade_test(PreviousPreviousMajor,Current,Config).
+
%% If this is a patched version of major release X, then this test
%% performs an upgrade from major release X to the current release.
minor(Config) ->
diff --git a/erts/test/z_SUITE.erl b/erts/test/z_SUITE.erl
index 3097ec22e6..18a42f7c28 100644
--- a/erts/test/z_SUITE.erl
+++ b/erts/test/z_SUITE.erl
@@ -48,7 +48,7 @@ all() ->
core_files(Config) when is_list(Config) ->
case os:type() of
{win32, _} ->
- {skipped, "No idea searching for core-files on windows"};
+ win32_search(true, os:getenv("OTP_DAILY_BUILD_TOP_DIR"));
{unix, darwin} ->
core_file_search(
core_search_conf(true,
@@ -63,7 +63,7 @@ core_files(Config) when is_list(Config) ->
search_for_core_files(Dir) ->
case os:type() of
{win32, _} ->
- io:format("No idea searching for core-files on windows");
+ win32_search(false, Dir);
{unix, darwin} ->
core_file_search(core_search_conf(false, Dir, "/cores"));
_ ->
@@ -103,18 +103,7 @@ core_search_conf(RunByTS, DBTop) ->
core_search_conf(RunByTS, DBTop, false).
core_search_conf(RunByTS, DBTop, XDir) ->
- SearchDir = case is_dir(DBTop) of
- false ->
- case code:which(test_server) of
- non_existing ->
- {ok, CWD} = file:get_cwd(),
- CWD;
- TS ->
- filename:dirname(filename:dirname(TS))
- end;
- true ->
- DBTop
- end,
+ SearchDir = search_dir(DBTop),
XSearchDir = case is_dir(XDir) of
false ->
false;
@@ -130,6 +119,20 @@ core_search_conf(RunByTS, DBTop, XDir) ->
file = os:find_executable("file"),
run_by_ts = RunByTS}.
+search_dir(DBTop) ->
+ case is_dir(DBTop) of
+ false ->
+ case code:which(test_server) of
+ non_existing ->
+ {ok, CWD} = file:get_cwd(),
+ CWD;
+ TS ->
+ filename:dirname(filename:dirname(TS))
+ end;
+ true ->
+ DBTop
+ end.
+
file_inspect(#core_search_conf{file = File}, Core) ->
FRes0 = os:cmd(File ++ " " ++ Core),
FRes = case string:split(FRes0, Core) of
@@ -186,15 +189,14 @@ dump_core(#core_search_conf{ cerl = false }, _) ->
dump_core(_, {ignore, _Core}) ->
ok;
dump_core(#core_search_conf{ cerl = Cerl }, Core) ->
- Dump = case test_server:is_debug() of
- true ->
- os:cmd(Cerl ++ " -debug -dump " ++ Core);
- _ ->
- os:cmd(Cerl ++ " -dump " ++ Core)
- end,
+ Dump = case erlang:system_info(build_type) of
+ opt ->
+ os:cmd(Cerl ++ " -dump " ++ Core);
+ Type ->
+ os:cmd(lists:concat([Cerl," -",Type," -dump ",Core]))
+ end,
ct:log("~ts~n~n~ts",[Core,Dump]).
-
format_core(Conf, {ignore, Core}) ->
format_core(Conf, Core, "[ignored] ");
format_core(Conf, Core) ->
@@ -230,17 +232,24 @@ core_file_search(#core_search_conf{search_dir = Base,
extra_search_dir = XBase,
cerl = Cerl,
run_by_ts = RunByTS} = Conf) ->
- case {Cerl,test_server:is_debug()} of
+ case {Cerl,erlang:system_info(build_type)} of
{false,_} -> ok;
- {_,true} ->
+ {_,opt} ->
catch io:format("A cerl script that probably can be used for "
- "inspection of emulator cores:~n ~s -debug~n",
+ "inspection of emulator cores:~n ~s~n",
[Cerl]);
- _ ->
+ {_,Type} ->
catch io:format("A cerl script that probably can be used for "
- "inspection of emulator cores:~n ~s~n",
- [Cerl])
+ "inspection of emulator cores:~n ~s -emu_type ~p~n",
+ [Cerl,Type])
end,
+
+ case os:getenv("DOCKER_BUILD_INFO") of
+ false -> ok;
+ Info ->
+ io:format(Info)
+ end,
+
io:format("Searching for core-files in: ~s~s~n",
[case XBase of
false -> "";
@@ -321,3 +330,39 @@ core_file_search(#core_search_conf{search_dir = Base,
_ -> Res
end
end.
+
+win32_search(RunByTS, DBTop) ->
+ case os:getenv("WSLENV") of
+ false when RunByTS ->
+ {skipped, "No idea searching for core-files on old windows"};
+ false ->
+ io:format("No idea searching for core-files on old windows");
+ _ ->
+ win32_search_2(RunByTS, DBTop)
+ end.
+
+win32_search_2(true, DBTop0) ->
+ DBTop = search_dir(DBTop0),
+ Dir = "c:/ldisk/daily_build",
+ io:format("Find and move 'dmp' files in: ~s to ~s~n",[Dir, DBTop]),
+ case filelib:wildcard("*.dmp", Dir) of
+ [] -> ok;
+ Dumps ->
+ %% We move the "daily" dmp files to this test-run
+ Str = lists:flatten(["Core-files found:", lists:join($\s, lists:reverse(Dumps))]),
+ Rename = fun(File) ->
+ FP = filename:join(Dir, File),
+ _ = file:rename(FP, filename:join(DBTop, File))
+ end,
+ [Rename(File) || File <- Dumps],
+ ct:fail(Str)
+ end;
+win32_search_2(false, _DBTop0) ->
+ DBTop = search_dir("c:/ldisk/daily_build"),
+ io:format("Search for 'dmp' files in: ~s~n",[DBTop]),
+ case filelib:wildcard("*.dmp", DBTop) of
+ [] -> "Core-files found: Ignored core-files found:";
+ Dumps ->
+ io:format("The dmp files must be removed manually\n", []),
+ lists:flatten(["Core-files found:", lists:join($\s, lists:reverse(Dumps))])
+ end.