19
19
-include_lib (" escalus/include/escalus.hrl" ).
20
20
-include_lib (" common_test/include/ct.hrl" ).
21
21
-include_lib (" exml/include/exml.hrl" ).
22
+ -include_lib (" eunit/include/eunit.hrl" ).
23
+
24
+ -define (i2l (I ), integer_to_list (I )).
25
+ -define (a2l (A ), atom_to_list (A )).
26
+ -define (eq (Expected , Actual ), ? assertEqual (Expected , Actual )).
22
27
23
28
-import (mongoose_helper , [auth_modules /0 ]).
24
29
@@ -40,7 +45,8 @@ all() ->
40
45
{group , last },
41
46
{group , private },
42
47
{group , stanza },
43
- {group , stats }
48
+ {group , stats },
49
+ {group , maintenance }
44
50
]
45
51
end .
46
52
@@ -53,7 +59,8 @@ groups() ->
53
59
{last , [sequence ], last ()},
54
60
{private , [sequence ], private ()},
55
61
{stanza , [sequence ], stanza ()},
56
- {stats , [sequence ], stats ()}
62
+ {stats , [sequence ], stats ()},
63
+ {maintenance , [sequence ], maintenance ()}
57
64
].
58
65
59
66
accounts () -> [change_password , check_password_hash , check_password ,
@@ -76,6 +83,8 @@ stanza() -> [send_message, send_stanza].
76
83
77
84
stats () -> [stats_global , stats_host ].
78
85
86
+ maintenance () -> [loglevels ].
87
+
79
88
suite () ->
80
89
escalus :suite ().
81
90
@@ -592,6 +601,32 @@ stats_host(Config) ->
592
601
{" 0\n " , 0 } = ejabberdctl (" stats_host" , [" onlineusers" , SecDomain ], Config )
593
602
end ).
594
603
604
+ % %-----------------------------------------------------------------
605
+ % % mongooseimctl maintenance commands (start, started, stop, ...)
606
+ % %-----------------------------------------------------------------
607
+
608
+ loglevels (C ) ->
609
+ % % setup
610
+ NC = escalus_ejabberd :setup_option (server_loglevel (), C ),
611
+ try
612
+ [ loglevel (C , Level , Atom )
613
+ || {Level , Atom } <- [{0 , none },
614
+ {1 , critical },
615
+ {2 , error },
616
+ {3 , warning },
617
+ {4 , info },
618
+ {5 , debug }] ]
619
+ after
620
+ % % cleanup
621
+ escalus_ejabberd :reset_option (server_loglevel (), NC )
622
+ end .
623
+
624
+ loglevel (C , Level , Atom ) ->
625
+ Control = escalus_config :get_config (ctl_path , C ),
626
+ ok = escalus_ejabberd :rpc (ejabberd_loglevel , set , [Level ]),
627
+ Result = os :cmd ([Control , " " , " get_loglevel" ]),
628
+ ? eq (textual_loglevel (Level , Atom ), Result ).
629
+
595
630
% %-----------------------------------------------------------------
596
631
% % Helpers
597
632
% %-----------------------------------------------------------------
@@ -709,3 +744,12 @@ match_roster(ItemsValid, Items) ->
709
744
false
710
745
end , ItemsTokens )
711
746
end , ItemsValid ).
747
+
748
+ textual_loglevel (Level , Atom ) ->
749
+ lists :flatten ([? i2l (Level ), $\t , ? a2l (Atom ), $\n ]).
750
+
751
+ server_loglevel () ->
752
+ {server_loglevel ,
753
+ fun () -> element (1 , escalus_ejabberd :rpc (ejabberd_loglevel , get , [])) end ,
754
+ fun (Level ) -> escalus_ejabberd :rpc (ejabberd_loglevel , set , [Level ]) end ,
755
+ 4 }.
0 commit comments