@@ -235,129 +235,22 @@ end_per_group(_, Config) ->
235
235
Config .
236
236
237
237
% %--------------------------------------------------------------------
238
- init_per_testcase (_TestCase , Config ) ->
238
+ init_per_testcase (TestCase , Config ) ->
239
239
ssh :stop (),
240
240
ssh :start (),
241
- {ok , TestLogHandlerRef } = ssh_test_lib :add_log_handler (),
242
241
ssh_test_lib :verify_sanity_check (Config ),
243
- [{ log_handler_ref , TestLogHandlerRef } | Config ] .
242
+ ssh_test_lib : add_log_handler ( TestCase , Config ) .
244
243
245
244
end_per_testcase (TestCase , Config ) ->
246
245
{ok , Events } = ssh_test_lib :get_log_events (
247
246
proplists :get_value (log_handler_ref , Config )),
248
247
EventCnt = length (Events ),
249
- {ok , InterestingEventCnt } = analyze_events (Events , EventCnt ),
248
+ {ok , InterestingEventCnt } = ssh_test_lib : analyze_events (Events , EventCnt ),
250
249
VerificationResult = verify_events (TestCase , InterestingEventCnt ),
251
- ssh_test_lib :rm_log_handler (),
250
+ ssh_test_lib :rm_log_handler (TestCase ),
252
251
ssh :stop (),
253
252
VerificationResult .
254
253
255
- analyze_events (_ , 0 ) ->
256
- {ok , 0 };
257
- analyze_events (Events , EventNumber ) when EventNumber > 0 ->
258
- {ok , Cnt } = print_interesting_events (Events , 0 ),
259
- case Cnt > 0 of
260
- true ->
261
- ct :comment (" (logger stats) interesting: ~p boring: ~p " ,
262
- [Cnt , EventNumber - Cnt ]);
263
- _ ->
264
- ct :comment (" (logger stats) boring: ~p " ,
265
- [length (Events )])
266
- end ,
267
- AllEventsSummary = lists :flatten ([process_event (E ) || E <- Events ]),
268
- ct :log (" ~n Total logger events: ~p~n All events:~n~s " , [EventNumber , AllEventsSummary ]),
269
- {ok , Cnt }.
270
-
271
- process_event (#{msg := {report ,
272
- #{label := Label ,
273
- report := [{supervisor , Supervisor },
274
- {Status , Properties }]}},
275
- level := Level }) ->
276
- format_event1 (Label , Supervisor , Status , Properties , Level );
277
- process_event (#{msg := {report ,
278
- #{label := Label ,
279
- report := [{supervisor , Supervisor },
280
- {errorContext , _ErrorContext },
281
- {reason , {Status , _ReasonDetails }},
282
- {offender , Properties }]}},
283
- level := Level }) ->
284
- format_event1 (Label , Supervisor , Status , Properties , Level );
285
- process_event (#{msg := {report ,
286
- #{label := Label ,
287
- report := [{supervisor , Supervisor },
288
- {errorContext , _ErrorContext },
289
- {reason , Status },
290
- {offender , Properties }]}},
291
- level := Level }) ->
292
- format_event1 (Label , Supervisor , Status , Properties , Level );
293
- process_event (#{msg := {report ,
294
- #{label := Label ,
295
- report := [Properties , []]}},
296
- level := Level }) ->
297
- {status , Status } = get_value (status , Properties ),
298
- {pid , Pid } = get_value (pid , Properties ),
299
- Id = get_value (registered_name , Properties ),
300
- {initial_call , {M , F , Args }} = get_value (initial_call , Properties ),
301
- io_lib :format (" [~44s ] ~6s ~30s ~20s ~30s ~20s :~10s (~40s )~n " ,
302
- [io_lib :format (" ~p " , [E ]) ||
303
- E <- [Pid , Level , Label , Status , Id , M , F , Args ]]);
304
- process_event (#{msg := {report ,
305
- #{label := Label ,
306
- name := Pid ,
307
- reason := {Reason , _Stack = [{M , F , Args , Location } | _ ]}}},
308
- level := Level }) ->
309
- io_lib :format (" [~44s ] ~6s ~30s ~20s ~30s ~20s :~10s (~40s ) ~30s~n " ,
310
- [io_lib :format (" ~p " , [E ]) ||
311
- E <- [Pid , Level , Label , Reason , undefined , M , F , Args , Location ]]);
312
- process_event (#{msg := {report ,
313
- #{label := Label ,
314
- format := Format ,
315
- args := Args }},
316
- meta := #{pid := Pid },
317
- level := Level }) ->
318
- io_lib :format (" [~44s ] ~6s ~30s ~150s~n " ,
319
- [io_lib :format (" ~p " , [E ]) ||
320
- E <- [Pid , Level , Label ]] ++ [io_lib :format (Format , Args )]);
321
- process_event (E ) ->
322
- io_lib :format (" ~n ||RAW event||~n~p~n " , [E ]).
323
-
324
- format_event1 (Label , Supervisor , Status , Properties , Level ) ->
325
- {pid , Pid } = get_value (pid , Properties ),
326
- Id = get_value (id , Properties ),
327
- {M , F , Args } = get_mfa_value (Properties ),
328
- RestartType = get_value (restart_type , Properties ),
329
- Significant = get_value (significant , Properties ),
330
- io_lib :format (" [~30s <- ~10s ] ~6s ~30s ~20s ~30s ~20s :~10s (~40s ) ~20s ~25s~n " ,
331
- [io_lib :format (" ~p " , [E ]) ||
332
- E <- [Supervisor , Pid , Level , Label , Status , Id , M , F , Args ,
333
- Significant , RestartType ]]).
334
-
335
- get_mfa_value (Properties ) ->
336
- case get_value (mfargs , Properties ) of
337
- {mfargs , MFA } ->
338
- MFA ;
339
- false ->
340
- {mfa , MFA } = get_value (mfa , Properties ),
341
- MFA
342
- end .
343
-
344
- get_value (Key , List ) ->
345
- case lists :keyfind (Key , 1 , List ) of
346
- R = false ->
347
- ct :log (" Key ~p not found in~n~p " , [Key , List ]),
348
- R ;
349
- R -> R
350
- end .
351
-
352
- print_interesting_events ([], Cnt ) ->
353
- {ok , Cnt };
354
- print_interesting_events ([#{level := Level } = Event | Tail ], Cnt )
355
- when Level /= info , Level /= notice , Level /= debug ->
356
- ct :log (" ------------~n Interesting event found:~n~p~n ==========~n " , [Event ]),
357
- print_interesting_events (Tail , Cnt + 1 );
358
- print_interesting_events ([_ |Tail ], Cnt ) ->
359
- print_interesting_events (Tail , Cnt ).
360
-
361
254
verify_events (_TestCase , 0 ) -> ok ;
362
255
verify_events (no_sensitive_leak , 1 ) -> ok ;
363
256
verify_events (max_channels_option , 3 ) -> ok ;
@@ -1647,7 +1540,8 @@ kex_error(Config) ->
1647
1540
{preferred_algorithms ,[{kex ,[Kex1 ]}]}
1648
1541
]),
1649
1542
Ref = make_ref (),
1650
- ok = ssh_log_h :add_fun (kex_error ,
1543
+ HandlerId = kex_error2 , % % avoid conflict with ssh_test_lib log handler
1544
+ ok = ssh_log_h :add_fun (HandlerId ,
1651
1545
fun (#{msg := {report ,#{format := Fmt ,args := As ,label := {error_logger ,_ }}}}, Pid ) ->
1652
1546
true = (erlang :process_info (Pid ) =/= undefined ), % remove handler if we are dead
1653
1547
Pid ! {Ref , lists :flatten (io_lib :format (Fmt ,As ))};
@@ -1657,7 +1551,7 @@ kex_error(Config) ->
1657
1551
end ,
1658
1552
self ()),
1659
1553
Cleanup = fun () ->
1660
- ok = logger :remove_handler (kex_error ),
1554
+ ok = logger :remove_handler (HandlerId ),
1661
1555
ok = logger :set_primary_config (level , Level )
1662
1556
end ,
1663
1557
try
@@ -1670,7 +1564,7 @@ kex_error(Config) ->
1670
1564
])
1671
1565
of
1672
1566
_ ->
1673
- ok = logger :remove_handler (kex_error ),
1567
+ ok = logger :remove_handler (HandlerId ),
1674
1568
ct :fail (" expected failure" , [])
1675
1569
catch
1676
1570
error :{badmatch ,{error ," Key exchange failed" }} ->
@@ -1796,7 +1690,7 @@ no_sensitive_leak(Config) ->
1796
1690
end ,
1797
1691
1798
1692
% % Install the test handler:
1799
- Hname = no_sensitive_leak ,
1693
+ Hname = no_sensitive_leak2 , % % avoid conflict with ssh_test_lib log handler
1800
1694
ok = ssh_log_h :add_fun (Hname ,
1801
1695
fun (#{msg := {report ,#{report := Rep }}}, Pid ) ->
1802
1696
true = (erlang :process_info (Pid , status ) =/= undefined ), % remove handler if we are dead
0 commit comments