2424import org .apache .commons .configuration .SubsetConfiguration ;
2525import org .junit .Test ;
2626import static org .junit .Assert .*;
27+ import static org .mockito .Mockito .*;
2728
29+ import org .apache .hadoop .metrics2 .MetricsRecord ;
2830import org .apache .hadoop .metrics2 .MetricsTag ;
2931import org .apache .hadoop .metrics2 .impl .ConfigBuilder ;
3032import static org .apache .hadoop .metrics2 .lib .Interns .*;
@@ -38,6 +40,8 @@ public class TestPatternFilter {
3840 SubsetConfiguration empty = new ConfigBuilder ().subset ("" );
3941 shouldAccept (empty , "anything" );
4042 shouldAccept (empty , Arrays .asList (tag ("key" , "desc" , "value" )));
43+ shouldAccept (empty , mockMetricsRecord ("anything" , Arrays .asList (
44+ tag ("key" , "desc" , "value" ))));
4145 }
4246
4347 /**
@@ -50,9 +54,15 @@ public class TestPatternFilter {
5054 shouldAccept (wl , "foo" );
5155 shouldAccept (wl , Arrays .asList (tag ("bar" , "" , "" ),
5256 tag ("foo" , "" , "f" )));
57+ shouldAccept (wl , mockMetricsRecord ("foo" , Arrays .asList (
58+ tag ("bar" , "" , "" ), tag ("foo" , "" , "f" ))));
5359 shouldReject (wl , "bar" );
5460 shouldReject (wl , Arrays .asList (tag ("bar" , "" , "" )));
5561 shouldReject (wl , Arrays .asList (tag ("foo" , "" , "boo" )));
62+ shouldReject (wl , mockMetricsRecord ("bar" , Arrays .asList (
63+ tag ("foo" , "" , "f" ))));
64+ shouldReject (wl , mockMetricsRecord ("foo" , Arrays .asList (
65+ tag ("bar" , "" , "" ))));
5666 }
5767
5868 /**
@@ -64,9 +74,15 @@ public class TestPatternFilter {
6474 .add ("p.exclude.tags" , "foo:f" ).subset ("p" );
6575 shouldAccept (bl , "bar" );
6676 shouldAccept (bl , Arrays .asList (tag ("bar" , "" , "" )));
77+ shouldAccept (bl , mockMetricsRecord ("bar" , Arrays .asList (
78+ tag ("bar" , "" , "" ))));
6779 shouldReject (bl , "foo" );
6880 shouldReject (bl , Arrays .asList (tag ("bar" , "" , "" ),
6981 tag ("foo" , "" , "f" )));
82+ shouldReject (bl , mockMetricsRecord ("foo" , Arrays .asList (
83+ tag ("bar" , "" , "" ))));
84+ shouldReject (bl , mockMetricsRecord ("bar" , Arrays .asList (
85+ tag ("bar" , "" , "" ), tag ("foo" , "" , "f" ))));
7086 }
7187
7288 /**
@@ -81,10 +97,18 @@ public class TestPatternFilter {
8197 .add ("p.exclude.tags" , "bar:b" ).subset ("p" );
8298 shouldAccept (c , "foo" );
8399 shouldAccept (c , Arrays .asList (tag ("foo" , "" , "f" )));
100+ shouldAccept (c , mockMetricsRecord ("foo" , Arrays .asList (
101+ tag ("foo" , "" , "f" ))));
84102 shouldReject (c , "bar" );
85103 shouldReject (c , Arrays .asList (tag ("bar" , "" , "b" )));
104+ shouldReject (c , mockMetricsRecord ("bar" , Arrays .asList (
105+ tag ("foo" , "" , "f" ))));
106+ shouldReject (c , mockMetricsRecord ("foo" , Arrays .asList (
107+ tag ("bar" , "" , "b" ))));
86108 shouldAccept (c , "foobar" );
87109 shouldAccept (c , Arrays .asList (tag ("foobar" , "" , "" )));
110+ shouldAccept (c , mockMetricsRecord ("foobar" , Arrays .asList (
111+ tag ("foobar" , "" , "" ))));
88112 }
89113
90114 /**
@@ -98,6 +122,8 @@ public class TestPatternFilter {
98122 .add ("p.exclude.tags" , "foo:f" ).subset ("p" );
99123 shouldAccept (c , "foo" );
100124 shouldAccept (c , Arrays .asList (tag ("foo" , "" , "f" )));
125+ shouldAccept (c , mockMetricsRecord ("foo" , Arrays .asList (
126+ tag ("foo" , "" , "f" ))));
101127 }
102128
103129 static void shouldAccept (SubsetConfiguration conf , String s ) {
@@ -110,6 +136,17 @@ static void shouldAccept(SubsetConfiguration conf, List<MetricsTag> tags) {
110136 assertTrue ("accepts " + tags , newRegexFilter (conf ).accepts (tags ));
111137 }
112138
139+ /**
140+ * Asserts that filters with the given configuration accept the given record.
141+ *
142+ * @param conf SubsetConfiguration containing filter configuration
143+ * @param record MetricsRecord to check
144+ */
145+ static void shouldAccept (SubsetConfiguration conf , MetricsRecord record ) {
146+ assertTrue ("accepts " + record , newGlobFilter (conf ).accepts (record ));
147+ assertTrue ("accepts " + record , newRegexFilter (conf ).accepts (record ));
148+ }
149+
113150 static void shouldReject (SubsetConfiguration conf , String s ) {
114151 assertTrue ("rejects " + s , !newGlobFilter (conf ).accepts (s ));
115152 assertTrue ("rejects " + s , !newRegexFilter (conf ).accepts (s ));
@@ -120,6 +157,17 @@ static void shouldReject(SubsetConfiguration conf, List<MetricsTag> tags) {
120157 assertTrue ("rejects " + tags , !newRegexFilter (conf ).accepts (tags ));
121158 }
122159
160+ /**
161+ * Asserts that filters with the given configuration reject the given record.
162+ *
163+ * @param conf SubsetConfiguration containing filter configuration
164+ * @param record MetricsRecord to check
165+ */
166+ static void shouldReject (SubsetConfiguration conf , MetricsRecord record ) {
167+ assertTrue ("rejects " + record , !newGlobFilter (conf ).accepts (record ));
168+ assertTrue ("rejects " + record , !newRegexFilter (conf ).accepts (record ));
169+ }
170+
123171 /**
124172 * Create a new glob filter with a config object
125173 * @param conf the config object
@@ -141,4 +189,19 @@ public static RegexFilter newRegexFilter(SubsetConfiguration conf) {
141189 f .init (conf );
142190 return f ;
143191 }
192+
193+ /**
194+ * Creates a mock MetricsRecord with the given name and tags.
195+ *
196+ * @param name String name
197+ * @param tags List<MetricsTag> tags
198+ * @return MetricsRecord newly created mock
199+ */
200+ private static MetricsRecord mockMetricsRecord (String name ,
201+ List <MetricsTag > tags ) {
202+ MetricsRecord record = mock (MetricsRecord .class );
203+ when (record .name ()).thenReturn (name );
204+ when (record .tags ()).thenReturn (tags );
205+ return record ;
206+ }
144207}
0 commit comments