Skip to content

Commit

Permalink
Merge branch 'john/erts/cuddle-efile-suite'
Browse files Browse the repository at this point in the history
* john/erts/cuddle-efile-suite:
  efile_SUITE: Fix proc_zero_sized_files on systems with empty /proc
  • Loading branch information
jhogberg committed Apr 2, 2019
2 parents 91e6f3a + 2504570 commit 8b88a5b
Showing 1 changed file with 19 additions and 26 deletions.
45 changes: 19 additions & 26 deletions erts/emulator/test/efile_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -105,34 +105,27 @@ open_files(Name) ->
%% a /proc directory), let's read some zero sized files 500 times each, while
%% ensuring that response isn't empty << >>
proc_zero_sized_files(Config) when is_list(Config) ->
{Type, Flavor} = os:type(),
%% Some files which exist on Linux but might be missing on other systems
Inputs = ["/proc/cpuinfo",
"/proc/meminfo",
"/proc/partitions",
"/proc/swaps",
"/proc/version",
"/proc/uptime",
%% curproc is present on freebsd
"/proc/curproc/cmdline"],
case filelib:is_dir("/proc") of
false -> {skip, "/proc not found"}; % skip the test if no /proc
_ when Type =:= unix andalso Flavor =:= sunos ->
%% SunOS has a /proc, but no zero sized special files
{skip, "sunos does not have any zero sized special files"};
true ->
%% Take away files which do not exist in proc
Inputs1 = lists:filter(fun filelib:is_file/1, Inputs),

%% Fail if none of mentioned files exist in /proc, did we just get
%% a normal /proc directory without any special files?
?assertNotEqual([], Inputs1),

TestFiles0 = [%% Some files which exist on Linux but might be missing on
%% other systems
"/proc/cpuinfo",
"/proc/meminfo",
"/proc/partitions",
"/proc/swaps",
"/proc/version",
"/proc/uptime",
%% curproc is present on FreeBSD
"/proc/curproc/cmdline"],

TestFiles = [F || F <- TestFiles0, filelib:is_file(F)],

case TestFiles of
[_|_] ->
%% For 6 inputs and 500 attempts each this do run anywhere
%% between 500 and 3000 function calls.
lists:foreach(
fun(Filename) -> do_proc_zero_sized(Filename, 500) end,
Inputs1)
[do_proc_zero_sized(F, 500) || F <- TestFiles],
ok;
[] ->
{skip, "Failed to find any known zero-sized files"}
end.

%% @doc Test one file N times to also trigger possible leaking fds and memory
Expand Down

0 comments on commit 8b88a5b

Please sign in to comment.