summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul J. Davis <paul.joseph.davis@gmail.com>2020-02-06 10:21:13 -0600
committerjiangph <jiangph@cn.ibm.com>2020-02-10 09:21:05 +0800
commitb06ded582e20bc5763a2da952805ac2afc611a68 (patch)
tree404604fce8aa7e2e3bbfee9f06f17037ac690481
parent5ad9d78dd27b133117d752c934f02a06e212974d (diff)
downloadcouchdb-b06ded582e20bc5763a2da952805ac2afc611a68.tar.gz
Force OOM error
This changes the couchjs OOM test so that it will trigger more reliably on SpiderMonkey 60. It appears that newer SpiderMonkeys are better at conserving memory usage which takes this test longer to trigger.
-rw-r--r--src/couch/test/eunit/couch_js_tests.erl24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/couch/test/eunit/couch_js_tests.erl b/src/couch/test/eunit/couch_js_tests.erl
index d3d92a288..cd6452cf9 100644
--- a/src/couch/test/eunit/couch_js_tests.erl
+++ b/src/couch/test/eunit/couch_js_tests.erl
@@ -15,9 +15,12 @@
-define(FUNC, <<
+ "var state = [];\n"
"function(doc) {\n"
" var val = \"0123456789ABCDEF\";\n"
- " while(true) {emit(val, val);}\n"
+ " for(var i = 0; i < 165535; i++) {\n"
+ " state.push([val, val]);\n"
+ " }\n"
"}\n"
>>).
@@ -30,7 +33,7 @@ couch_js_test_() ->
fun test_util:start_couch/0,
fun test_util:stop_couch/1,
[
- fun should_exit_on_oom/0
+ {timeout, 60000, fun should_exit_on_oom/0}
]
}
}.
@@ -39,7 +42,16 @@ couch_js_test_() ->
should_exit_on_oom() ->
Proc = couch_query_servers:get_os_process(<<"javascript">>),
true = couch_query_servers:proc_prompt(Proc, [<<"add_fun">>, ?FUNC]),
- ?assertThrow(
- {os_process_error, {exit_status, 1}},
- couch_query_servers:proc_prompt(Proc, [<<"map_doc">>, <<"{}">>])
- ).
+ trigger_oom(Proc).
+
+trigger_oom(Proc) ->
+ Status = try
+ couch_query_servers:proc_prompt(Proc, [<<"map_doc">>, <<"{}">>]),
+ continue
+ catch throw:{os_process_error, {exit_status, 1}} ->
+ done
+ end,
+ case Status of
+ continue -> trigger_oom(Proc);
+ done -> ok
+ end.