1%% 2%% %CopyrightBegin% 3%% 4%% Copyright Ericsson AB 2018. All Rights Reserved. 5%% 6%% Licensed under the Apache License, Version 2.0 (the "License"); 7%% you may not use this file except in compliance with the License. 8%% You may obtain a copy of the License at 9%% 10%% http://www.apache.org/licenses/LICENSE-2.0 11%% 12%% Unless required by applicable law or agreed to in writing, software 13%% distributed under the License is distributed on an "AS IS" BASIS, 14%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15%% See the License for the specific language governing permissions and 16%% limitations under the License. 17%% 18%% %CopyrightEnd% 19%% 20-module(logger_filters_SUITE). 21 22-compile(export_all). 23 24-include_lib("common_test/include/ct.hrl"). 25-include_lib("kernel/include/logger.hrl"). 26 27-define(ndlog, 28 #{level=>info,msg=>{"Line: ~p",[?LINE]},meta=>#{}}). 29-define(dlog(Domain), 30 #{level=>info,msg=>{"Line: ~p",[?LINE]},meta=>#{domain=>Domain}}). 31-define(llog(Level), 32 #{level=>Level,msg=>{"Line: ~p",[?LINE]},meta=>#{}}). 33-define(plog, 34 #{level=>info, 35 msg=>{report,#{label=>{?MODULE,progress}}}, 36 meta=>#{line=>?LINE}}). 37-define(rlog(Node), 38 #{level=>info, 39 msg=>{"Line: ~p",[?LINE]}, 40 meta=>#{gl=>rpc:call(Node,erlang,whereis,[user])}}). 41 42-define(TRY(X), my_try(fun() -> X end)). 43 44suite() -> 45 [{timetrap,{seconds,30}}]. 46 47init_per_suite(Config) -> 48 Config. 49 50end_per_suite(_Config) -> 51 ok. 52 53init_per_group(_Group, Config) -> 54 Config. 55 56end_per_group(_Group, _Config) -> 57 ok. 58 59init_per_testcase(_TestCase, Config) -> 60 Config. 61 62end_per_testcase(Case, Config) -> 63 try apply(?MODULE,Case,[cleanup,Config]) 64 catch error:undef -> ok 65 end, 66 ok. 67 68groups() -> 69 []. 70 71all() -> 72 [domain, 73 level, 74 progress, 75 remote_gl]. 76 77domain(_Config) -> 78 L1 = logger_filters:domain(L1=?dlog([]),{log,super,[]}), 79 stop = logger_filters:domain(?dlog([]),{stop,super,[]}), 80 L2 = logger_filters:domain(L2=?dlog([]),{log,sub,[]}), 81 stop = logger_filters:domain(?dlog([]),{stop,sub,[]}), 82 L3 = logger_filters:domain(L3=?dlog([]),{log,equal,[]}), 83 stop = logger_filters:domain(?dlog([]),{stop,equal,[]}), 84 ignore = logger_filters:domain(?dlog([]),{log,not_equal,[]}), 85 ignore = logger_filters:domain(?dlog([]),{stop,not_equal,[]}), 86 ignore = logger_filters:domain(?dlog([]),{log,undefined,[]}), 87 ignore = logger_filters:domain(?dlog([]),{stop,undefined,[]}), 88 89 L4 = logger_filters:domain(L4=?dlog([a]),{log,super,[a,b]}), 90 stop = logger_filters:domain(?dlog([a]),{stop,super,[a,b]}), 91 ignore = logger_filters:domain(?dlog([a]),{log,sub,[a,b]}), 92 ignore = logger_filters:domain(?dlog([a]),{stop,sub,[a,b]}), 93 ignore = logger_filters:domain(?dlog([a]),{log,equal,[a,b]}), 94 ignore = logger_filters:domain(?dlog([a]),{stop,equal,[a,b]}), 95 L5 = logger_filters:domain(L5=?dlog([a]),{log,not_equal,[a,b]}), 96 stop = logger_filters:domain(?dlog([a]),{stop,not_equal,[a,b]}), 97 ignore = logger_filters:domain(?dlog([a]),{log,undefined,[a,b]}), 98 ignore = logger_filters:domain(?dlog([a]),{stop,undefined,[a,b]}), 99 100 ignore = logger_filters:domain(?dlog([a,b]),{log,super,[a]}), 101 ignore = logger_filters:domain(?dlog([a,b]),{stop,super,[a]}), 102 L6 = logger_filters:domain(L6=?dlog([a,b]),{log,sub,[a]}), 103 stop = logger_filters:domain(?dlog([a,b]),{stop,sub,[a]}), 104 ignore = logger_filters:domain(?dlog([a,b]),{log,equal,[a]}), 105 ignore = logger_filters:domain(?dlog([a,b]),{stop,equal,[a]}), 106 L7 = logger_filters:domain(L7=?dlog([a,b]),{log,not_equal,[a]}), 107 stop = logger_filters:domain(?dlog([a,b]),{stop,not_equal,[a]}), 108 ignore = logger_filters:domain(?dlog([a,b]),{log,undefined,[a]}), 109 ignore = logger_filters:domain(?dlog([a,b]),{stop,undefined,[a]}), 110 111 ignore = logger_filters:domain(?ndlog,{log,super,[a]}), 112 ignore = logger_filters:domain(?ndlog,{stop,super,[a]}), 113 ignore = logger_filters:domain(?ndlog,{log,sub,[a]}), 114 ignore = logger_filters:domain(?ndlog,{stop,sub,[a]}), 115 ignore = logger_filters:domain(?ndlog,{log,equal,[a]}), 116 ignore = logger_filters:domain(?ndlog,{stop,equal,[a]}), 117 L8 = logger_filters:domain(L8=?ndlog,{log,not_equal,[a]}), 118 stop = logger_filters:domain(?ndlog,{stop,not_equal,[a]}), 119 L9 = logger_filters:domain(L9=?ndlog,{log,undefined,[a]}), 120 stop = logger_filters:domain(?ndlog,{stop,undefined,[a]}), 121 122 L10 = logger_filters:domain(L10=?dlog([a,b,c,d]),{log,super,[a,b,c,d]}), 123 stop = logger_filters:domain(?dlog([a,b,c,d]),{stop,super,[a,b,c,d]}), 124 L11 = logger_filters:domain(L11=?dlog([a,b,c,d]),{log,sub,[a,b,c,d]}), 125 stop = logger_filters:domain(?dlog([a,b,c,d]),{stop,sub,[a,b,c,d]}), 126 L12 = logger_filters:domain(L12=?dlog([a,b,c,d]),{log,equal,[a,b,c,d]}), 127 stop = logger_filters:domain(?dlog([a,b,c,d]),{stop,equal,[a,b,c,d]}), 128 ignore = logger_filters:domain(?dlog([a,b,c,d]),{log,not_equal,[a,b,c,d]}), 129 ignore = logger_filters:domain(?dlog([a,b,c,d]),{stop,not_equal,[a,b,c,d]}), 130 ignore = logger_filters:domain(?dlog([a,b,c,d]),{log,undefined,[a,b,c,d]}), 131 ignore = logger_filters:domain(?dlog([a,b,c,d]),{stop,undefined,[a,b,c,d]}), 132 133 %% A domain field in meta which is not a list is allowed by the 134 %% filter, but since MatchDomain is always a list of atoms, only 135 %% Action=not_equal can ever match. 136 ignore = logger_filters:domain(?dlog(dummy),{log,super,[a,b,c,d]}), 137 ignore = logger_filters:domain(?dlog(dummy),{stop,super,[a,b,c,d]}), 138 ignore = logger_filters:domain(?dlog(dummy),{log,sub,[a,b,c,d]}), 139 ignore = logger_filters:domain(?dlog(dummy),{stop,sub,[a,b,c,d]}), 140 ignore = logger_filters:domain(?dlog(dummy),{log,equal,[a,b,c,d]}), 141 ignore = logger_filters:domain(?dlog(dummy),{stop,equal,[a,b,c,d]}), 142 L13 = logger_filters:domain(L13=?dlog(dummy),{log,not_equal,[a,b,c,d]}), 143 stop = logger_filters:domain(?dlog(dummy),{stop,not_equal,[a,b,c,d]}), 144 ignore = logger_filters:domain(?dlog(dummy),{log,undefined,[a,b,c,d]}), 145 ignore = logger_filters:domain(?dlog(dummy),{stop,undefined,[a,b,c,d]}), 146 147 {error,badarg} = ?TRY(logger_filters:domain(?ndlog,bad)), 148 {error,badarg} = ?TRY(logger_filters:domain(?ndlog,{bad,super,[]})), 149 {error,badarg} = ?TRY(logger_filters:domain(?ndlog,{log,bad,[]})), 150 {error,badarg} = ?TRY(logger_filters:domain(?ndlog,{log,super,bad})), 151 152 ok. 153 154level(_Config) -> 155 ignore = logger_filters:level(?llog(info),{log,lt,info}), 156 ignore = logger_filters:level(?llog(info),{stop,lt,info}), 157 ignore = logger_filters:level(?llog(info),{log,gt,info}), 158 ignore = logger_filters:level(?llog(info),{stop,gt,info}), 159 L1 = logger_filters:level(L1=?llog(info),{log,lteq,info}), 160 stop = logger_filters:level(?llog(info),{stop,lteq,info}), 161 L2 = logger_filters:level(L2=?llog(info),{log,gteq,info}), 162 stop = logger_filters:level(?llog(info),{stop,gteq,info}), 163 L3 = logger_filters:level(L3=?llog(info),{log,eq,info}), 164 stop = logger_filters:level(?llog(info),{stop,eq,info}), 165 ignore = logger_filters:level(?llog(info),{log,neq,info}), 166 ignore = logger_filters:level(?llog(info),{stop,neq,info}), 167 168 ignore = logger_filters:level(?llog(error),{log,lt,info}), 169 ignore = logger_filters:level(?llog(error),{stop,lt,info}), 170 L4 = logger_filters:level(L4=?llog(error),{log,gt,info}), 171 stop = logger_filters:level(?llog(error),{stop,gt,info}), 172 ignore = logger_filters:level(?llog(error),{log,lteq,info}), 173 ignore = logger_filters:level(?llog(error),{stop,lteq,info}), 174 L5 = logger_filters:level(L5=?llog(error),{log,gteq,info}), 175 stop = logger_filters:level(?llog(error),{stop,gteq,info}), 176 ignore = logger_filters:level(?llog(error),{log,eq,info}), 177 ignore = logger_filters:level(?llog(error),{stop,eq,info}), 178 L6 = logger_filters:level(L6=?llog(error),{log,neq,info}), 179 stop = logger_filters:level(?llog(error),{stop,neq,info}), 180 181 L7 = logger_filters:level(L7=?llog(info),{log,lt,error}), 182 stop = logger_filters:level(?llog(info),{stop,lt,error}), 183 ignore = logger_filters:level(?llog(info),{log,gt,error}), 184 ignore = logger_filters:level(?llog(info),{stop,gt,error}), 185 L8 = logger_filters:level(L8=?llog(info),{log,lteq,error}), 186 stop = logger_filters:level(?llog(info),{stop,lteq,error}), 187 ignore = logger_filters:level(?llog(info),{log,gteq,error}), 188 ignore = logger_filters:level(?llog(info),{stop,gteq,error}), 189 ignore = logger_filters:level(?llog(info),{log,eq,error}), 190 ignore = logger_filters:level(?llog(info),{stop,eq,error}), 191 L9 = logger_filters:level(L9=?llog(info),{log,neq,error}), 192 stop = logger_filters:level(?llog(info),{stop,neq,error}), 193 194 {error,badarg} = ?TRY(logger_filters:level(?llog(info),bad)), 195 {error,badarg} = ?TRY(logger_filters:level(?llog(info),{bad,eq,info})), 196 {error,badarg} = ?TRY(logger_filters:level(?llog(info),{log,bad,info})), 197 {error,badarg} = ?TRY(logger_filters:level(?llog(info),{log,eq,bad})), 198 199 ok. 200 201progress(_Config) -> 202 L1 = logger_filters:progress(L1=?plog,log), 203 stop = logger_filters:progress(?plog,stop), 204 ignore = logger_filters:progress(?ndlog,log), 205 ignore = logger_filters:progress(?ndlog,stop), 206 207 {error,badarg} = ?TRY(logger_filters:progress(?plog,bad)), 208 209 ok. 210 211remote_gl(_Config) -> 212 {ok,Node} = test_server:start_node(?FUNCTION_NAME,slave,[]), 213 L1 = logger_filters:remote_gl(L1=?rlog(Node),log), 214 stop = logger_filters:remote_gl(?rlog(Node),stop), 215 ignore = logger_filters:remote_gl(?ndlog,log), 216 ignore = logger_filters:remote_gl(?ndlog,stop), 217 218 {error,badarg} = ?TRY(logger_filters:remote_gl(?rlog(Node),bad)), 219 ok. 220 221remote_gl(cleanup,_Config) -> 222 [test_server:stop_node(N) || N<-nodes()]. 223 224%%%----------------------------------------------------------------- 225%%% Called by macro ?TRY(X) 226my_try(Fun) -> 227 try Fun() catch C:R -> {C,R} end. 228