@@ -108,23 +108,31 @@ timeout_t_() ->
108
108
" while(. < 42; . * 2)" ),
109
109
TO = fun () -> {error , {timeout , _ }} = jq :process_json (Program , " -2" , 10 ) end ,
110
110
OK = fun () -> {ok , [<<" 64" >>]} = jq :process_json (Program , " 2" , 10000 ) end ,
111
- NrOfSubProcesses = 30 ,
111
+ NrOfSubProcesses = 10 ,
112
112
TimeoutAndThenNot =
113
113
fun () ->
114
114
OK (),
115
115
TO (),
116
116
OK (),
117
117
Parent = self (),
118
+ ct :pal (" Starting concurrent processes that will timeout. Implementation module ~p " , [jq :implementation_module ()]),
118
119
Pids = [ spawn_link (fun () ->
120
+ % ct:pal("Starting process ~p ~p", [X, self()]),
119
121
OK (),
120
122
TO (),
121
123
OK (),
122
124
Parent ! self () end ) ||
123
- _ <- lists :seq (1 , NrOfSubProcesses )],
124
- timer :sleep (500 ),
125
- lists :sum ([ receive X -> 1 end || X <- Pids ])
125
+ X <- lists :seq (1 , NrOfSubProcesses )],
126
+ ct :pal (" Starting to wait for processes" ),
127
+ Sum = lists :sum ([ begin
128
+ % erlang:display({'Process finnished timeout', X}),
129
+ receive X -> 1 end
130
+ end || X <- Pids ]),
131
+ ct :pal (" Done with concurrent timeout test" ),
132
+ Sum
126
133
end ,
127
- {timeout , 60 , [
134
+ % % Timout setting does not seem to be working on Mac OS (a bug?)
135
+ {timeout , 3000 , [
128
136
? _assertMatch ({ok , [<<" 64" >>]},
129
137
jq :process_json (Program , " 2" , 10000 ))
130
138
, ? _assertMatch ({ok , [<<" 64" >>]},
@@ -323,6 +331,7 @@ port_program_valgrind_test_() ->
323
331
-endif .
324
332
325
333
setup_nif () ->
334
+ ct :pal (" Setup NIF, Schedulers online ~p " , [erlang :system_info (schedulers_online )]),
326
335
PrevImpMod = jq :implementation_module (),
327
336
jq :set_implementation_module (jq_nif ),
328
337
PrevImpMod .
@@ -337,6 +346,7 @@ trigger_global_gc() ->
337
346
338
347
339
348
cleanup_nif (PrevImpMod ) ->
349
+ ct :pal (" Cleanup NIF ~p " , [erlang :system_info (schedulers_online )]),
340
350
% % For some reason this seems to clean up NIF resources that are previously
341
351
% % passed to timer:apply_after in the parameters list
342
352
trigger_global_gc (),
@@ -348,7 +358,7 @@ cleanup_nif(PrevImpMod) ->
348
358
receive timeout_done -> ok end ,
349
359
OuterSelf ! fixed
350
360
end ,
351
- NrOfSpawns = 1000 ,
361
+ NrOfSpawns = 150 ,
352
362
[spawn (TimerFun ) || _ <- lists :seq (1 , NrOfSpawns )],
353
363
[receive fixed -> ok end || _ <- lists :seq (1 , NrOfSpawns )],
354
364
trigger_global_gc (),
@@ -357,11 +367,13 @@ cleanup_nif(PrevImpMod) ->
357
367
jq :set_implementation_module (PrevImpMod ).
358
368
359
369
setup_port () ->
370
+ ct :pal (" Setup Port, Schedulers online ~p " , [erlang :system_info (schedulers_online )]),
360
371
PrevImpMod = jq :implementation_module (),
361
372
jq :set_implementation_module (jq_port ),
362
373
PrevImpMod .
363
374
364
375
cleanup_port (PrevImpMod ) ->
376
+ ct :pal (" Cleanup Port" ),
365
377
application :stop (jq ),
366
378
jq :set_implementation_module (PrevImpMod ).
367
379
0 commit comments