File 0521-kernel-Run-large_file-tests-in-a-peer-node.patch of Package erlang
From 9e4ed45dfb8364803d2bb9128b214cf80be0ba3f Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Wed, 19 Oct 2022 12:01:34 +0200
Subject: [PATCH 5/9] kernel: Run large_file tests in a peer node
Sometimes the OOM killer comes along and terminates
these tests, so we spawn a node to do the tests so that
the OOM killer does not cancel all remaining tests.
---
lib/kernel/test/file_SUITE.erl | 39 +++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 15 deletions(-)
diff --git a/lib/kernel/test/file_SUITE.erl b/lib/kernel/test/file_SUITE.erl
index cefb5e1ff2..3759ef1c22 100644
--- a/lib/kernel/test/file_SUITE.erl
+++ b/lib/kernel/test/file_SUITE.erl
@@ -4840,28 +4840,37 @@ do_run_large_file_test(Config, Run, Name0) ->
Name = filename:join(proplists:get_value(priv_dir, Config),
?MODULE_STRING ++ Name0),
+ %% We run the test in a peer node in case the OOM killer
+ {ok, Peer, Node} = ?CT_PEER(),
+
+ erpc:call(Node, application, ensure_all_started, [os_mon]),
+
%% Set up a process that will delete this file.
Tester = self(),
Deleter =
- spawn(
- fun() ->
- Mref = erlang:monitor(process, Tester),
- receive
- {'DOWN',Mref,_,_,_} -> ok;
- {Tester,done} -> ok
- end,
- ?FILE_MODULE:delete(Name)
- end),
+ spawn(
+ fun() ->
+ Mref = erlang:monitor(process, Tester),
+ receive
+ {'DOWN',Mref,_,_,_} -> ok;
+ {Tester,done} -> ok
+ end,
+ ?FILE_MODULE:delete(Name)
+ end),
%% Run the test case.
- Res = Run(Name),
+ try
+ Res = erpc:call(Node, fun() -> Run(Name) end),
- %% Delete file and finish deleter process.
- Mref = erlang:monitor(process, Deleter),
- Deleter ! {Tester,done},
- receive {'DOWN',Mref,_,_,_} -> ok end,
+ %% Delete file and finish deleter process.
+ Mref = erlang:monitor(process, Deleter),
+ Deleter ! {Tester,done},
+ receive {'DOWN',Mref,_,_,_} -> ok end,
- Res.
+ Res
+ after
+ peer:stop(Peer)
+ end.
disc_free(Path) ->
Data = disksup:get_disk_data(),
--
2.35.3