23
23
import org .elasticsearch .common .logging .Loggers ;
24
24
import org .elasticsearch .test .junit .annotations .TestLogging ;
25
25
import org .junit .runner .Description ;
26
+ import org .junit .runner .Result ;
26
27
import org .junit .runner .notification .RunListener ;
27
28
28
29
import java .util .HashMap ;
41
42
public class LoggingListener extends RunListener {
42
43
43
44
private Map <String , String > previousLoggingMap ;
45
+ private Map <String , String > previousClassLoggingMap ;
46
+ private Map <String , String > previousPackageLoggingMap ;
47
+
48
+ @ Override
49
+ public void testRunStarted (Description description ) throws Exception {
50
+ previousPackageLoggingMap = processTestLogging ( description .getTestClass ().getPackage ().getAnnotation (TestLogging .class ));
51
+ previousClassLoggingMap = processTestLogging (description .getAnnotation (TestLogging .class ));
52
+ }
53
+
54
+ @ Override
55
+ public void testRunFinished (Result result ) throws Exception {
56
+ previousClassLoggingMap = reset (previousClassLoggingMap );
57
+ previousPackageLoggingMap = reset (previousPackageLoggingMap );
58
+ }
44
59
45
60
@ Override
46
61
public void testStarted (Description description ) throws Exception {
47
- TestLogging testLogging = description .getAnnotation (TestLogging .class );
48
- if (testLogging != null ) {
49
- this .previousLoggingMap = new HashMap <String , String >();
50
- String [] loggersAndLevels = testLogging .value ().split ("," );
51
- for (String loggerAndLevel : loggersAndLevels ) {
52
- String [] loggerAndLevelArray = loggerAndLevel .split (":" );
53
- if (loggerAndLevelArray .length >=2 ) {
54
- String loggerName = loggerAndLevelArray [0 ];
55
- String level = loggerAndLevelArray [1 ];
56
- ESLogger esLogger = resolveLogger (loggerName );
57
- this .previousLoggingMap .put (loggerName , esLogger .getLevel ());
58
- esLogger .setLevel (level );
59
- }
60
- }
61
- }
62
+ final TestLogging testLogging = description .getAnnotation (TestLogging .class );
63
+ previousLoggingMap = processTestLogging (testLogging );
62
64
}
63
65
64
66
@ Override
65
67
public void testFinished (Description description ) throws Exception {
66
- if (this .previousLoggingMap != null ) {
67
- for (Map .Entry <String , String > previousLogger : previousLoggingMap .entrySet ()) {
68
- ESLogger esLogger = resolveLogger (previousLogger .getKey ());
69
- esLogger .setLevel (previousLogger .getValue ());
70
- }
71
- this .previousLoggingMap = null ;
72
- }
68
+ previousLoggingMap = reset (previousLoggingMap );
73
69
}
74
70
75
71
private static ESLogger resolveLogger (String loggerName ) {
@@ -78,4 +74,33 @@ private static ESLogger resolveLogger(String loggerName) {
78
74
}
79
75
return Loggers .getLogger (loggerName );
80
76
}
77
+
78
+ private Map <String , String > processTestLogging (TestLogging testLogging ) {
79
+ if (testLogging == null ) {
80
+ return null ;
81
+ }
82
+ Map <String , String > map = new HashMap <String , String >();
83
+ final String [] loggersAndLevels = testLogging .value ().split ("," );
84
+ for (String loggerAndLevel : loggersAndLevels ) {
85
+ String [] loggerAndLevelArray = loggerAndLevel .split (":" );
86
+ if (loggerAndLevelArray .length >=2 ) {
87
+ String loggerName = loggerAndLevelArray [0 ];
88
+ String level = loggerAndLevelArray [1 ];
89
+ ESLogger esLogger = resolveLogger (loggerName );
90
+ map .put (loggerName , esLogger .getLevel ());
91
+ esLogger .setLevel (level );
92
+ }
93
+ }
94
+ return map ;
95
+ }
96
+
97
+ private Map <String , String > reset (Map <String , String > map ) {
98
+ if (map != null ) {
99
+ for (Map .Entry <String , String > previousLogger : map .entrySet ()) {
100
+ ESLogger esLogger = resolveLogger (previousLogger .getKey ());
101
+ esLogger .setLevel (previousLogger .getValue ());
102
+ }
103
+ }
104
+ return null ;
105
+ }
81
106
}
0 commit comments