Return-Path: X-Original-To: apmail-hadoop-common-commits-archive@www.apache.org Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6DBA610884 for ; Wed, 10 Apr 2013 08:37:58 +0000 (UTC) Received: (qmail 17423 invoked by uid 500); 10 Apr 2013 08:37:58 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 17310 invoked by uid 500); 10 Apr 2013 08:37:57 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 17293 invoked by uid 99); 10 Apr 2013 08:37:57 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Apr 2013 08:37:57 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Apr 2013 08:37:54 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id E79C323889D5; Wed, 10 Apr 2013 08:37:32 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1466384 - in /hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common: CHANGES.txt src/main/java/org/apache/hadoop/metrics2/MetricsFilter.java src/test/java/org/apache/hadoop/metrics2/filter/TestPatternFilter.java Date: Wed, 10 Apr 2013 08:37:32 -0000 To: common-commits@hadoop.apache.org From: llu@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130410083732.E79C323889D5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: llu Date: Wed Apr 10 08:37:32 2013 New Revision: 1466384 URL: http://svn.apache.org/r1466384 Log: HADOOP-9467. Metrics2 record filter should check name as well as tags. (Ganeshan Iyler via llu) Modified: hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/CHANGES.txt hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsFilter.java hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/filter/TestPatternFilter.java Modified: hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1466384&r1=1466383&r2=1466384&view=diff ============================================================================== --- hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/CHANGES.txt (original) +++ hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/CHANGES.txt Wed Apr 10 08:37:32 2013 @@ -83,6 +83,9 @@ Release 2.0.4-alpha - UNRELEASED BUG FIXES + HADOOP-9467. Metrics2 record filter should check name as well as tags. + (Ganeshan Iyler via llu) + HADOOP-9406. hadoop-client leaks dependency on JDK tools jar. (tucu) HADOOP-9301. hadoop client servlet/jsp/jetty/tomcat JARs creating conflicts in Oozie & HttpFS. (tucu) Modified: hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsFilter.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsFilter.java?rev=1466384&r1=1466383&r2=1466384&view=diff ============================================================================== --- hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsFilter.java (original) +++ hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/metrics2/MetricsFilter.java Wed Apr 10 08:37:32 2013 @@ -55,7 +55,7 @@ public abstract class MetricsFilter impl * @return true to accept; false otherwise. */ public boolean accepts(MetricsRecord record) { - return accepts(record.tags()); + return accepts(record.name()) && accepts(record.tags()); } } Modified: hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/filter/TestPatternFilter.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/filter/TestPatternFilter.java?rev=1466384&r1=1466383&r2=1466384&view=diff ============================================================================== --- hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/filter/TestPatternFilter.java (original) +++ hadoop/common/branches/branch-2.0.4-alpha/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/filter/TestPatternFilter.java Wed Apr 10 08:37:32 2013 @@ -24,7 +24,9 @@ import java.util.List; import org.apache.commons.configuration.SubsetConfiguration; import org.junit.Test; import static org.junit.Assert.*; +import static org.mockito.Mockito.*; +import org.apache.hadoop.metrics2.MetricsRecord; import org.apache.hadoop.metrics2.MetricsTag; import org.apache.hadoop.metrics2.impl.ConfigBuilder; import static org.apache.hadoop.metrics2.lib.Interns.*; @@ -38,6 +40,8 @@ public class TestPatternFilter { SubsetConfiguration empty = new ConfigBuilder().subset(""); shouldAccept(empty, "anything"); shouldAccept(empty, Arrays.asList(tag("key", "desc", "value"))); + shouldAccept(empty, mockMetricsRecord("anything", Arrays.asList( + tag("key", "desc", "value")))); } /** @@ -50,9 +54,15 @@ public class TestPatternFilter { shouldAccept(wl, "foo"); shouldAccept(wl, Arrays.asList(tag("bar", "", ""), tag("foo", "", "f"))); + shouldAccept(wl, mockMetricsRecord("foo", Arrays.asList( + tag("bar", "", ""), tag("foo", "", "f")))); shouldReject(wl, "bar"); shouldReject(wl, Arrays.asList(tag("bar", "", ""))); shouldReject(wl, Arrays.asList(tag("foo", "", "boo"))); + shouldReject(wl, mockMetricsRecord("bar", Arrays.asList( + tag("foo", "", "f")))); + shouldReject(wl, mockMetricsRecord("foo", Arrays.asList( + tag("bar", "", "")))); } /** @@ -64,9 +74,15 @@ public class TestPatternFilter { .add("p.exclude.tags", "foo:f").subset("p"); shouldAccept(bl, "bar"); shouldAccept(bl, Arrays.asList(tag("bar", "", ""))); + shouldAccept(bl, mockMetricsRecord("bar", Arrays.asList( + tag("bar", "", "")))); shouldReject(bl, "foo"); shouldReject(bl, Arrays.asList(tag("bar", "", ""), tag("foo", "", "f"))); + shouldReject(bl, mockMetricsRecord("foo", Arrays.asList( + tag("bar", "", "")))); + shouldReject(bl, mockMetricsRecord("bar", Arrays.asList( + tag("bar", "", ""), tag("foo", "", "f")))); } /** @@ -81,10 +97,18 @@ public class TestPatternFilter { .add("p.exclude.tags", "bar:b").subset("p"); shouldAccept(c, "foo"); shouldAccept(c, Arrays.asList(tag("foo", "", "f"))); + shouldAccept(c, mockMetricsRecord("foo", Arrays.asList( + tag("foo", "", "f")))); shouldReject(c, "bar"); shouldReject(c, Arrays.asList(tag("bar", "", "b"))); + shouldReject(c, mockMetricsRecord("bar", Arrays.asList( + tag("foo", "", "f")))); + shouldReject(c, mockMetricsRecord("foo", Arrays.asList( + tag("bar", "", "b")))); shouldAccept(c, "foobar"); shouldAccept(c, Arrays.asList(tag("foobar", "", ""))); + shouldAccept(c, mockMetricsRecord("foobar", Arrays.asList( + tag("foobar", "", "")))); } /** @@ -98,6 +122,8 @@ public class TestPatternFilter { .add("p.exclude.tags", "foo:f").subset("p"); shouldAccept(c, "foo"); shouldAccept(c, Arrays.asList(tag("foo", "", "f"))); + shouldAccept(c, mockMetricsRecord("foo", Arrays.asList( + tag("foo", "", "f")))); } static void shouldAccept(SubsetConfiguration conf, String s) { @@ -110,6 +136,17 @@ public class TestPatternFilter { assertTrue("accepts "+ tags, newRegexFilter(conf).accepts(tags)); } + /** + * Asserts that filters with the given configuration accept the given record. + * + * @param conf SubsetConfiguration containing filter configuration + * @param record MetricsRecord to check + */ + static void shouldAccept(SubsetConfiguration conf, MetricsRecord record) { + assertTrue("accepts " + record, newGlobFilter(conf).accepts(record)); + assertTrue("accepts " + record, newRegexFilter(conf).accepts(record)); + } + static void shouldReject(SubsetConfiguration conf, String s) { assertTrue("rejects "+ s, !newGlobFilter(conf).accepts(s)); assertTrue("rejects "+ s, !newRegexFilter(conf).accepts(s)); @@ -121,6 +158,17 @@ public class TestPatternFilter { } /** + * Asserts that filters with the given configuration reject the given record. + * + * @param conf SubsetConfiguration containing filter configuration + * @param record MetricsRecord to check + */ + static void shouldReject(SubsetConfiguration conf, MetricsRecord record) { + assertTrue("rejects " + record, !newGlobFilter(conf).accepts(record)); + assertTrue("rejects " + record, !newRegexFilter(conf).accepts(record)); + } + + /** * Create a new glob filter with a config object * @param conf the config object * @return the filter @@ -141,4 +189,19 @@ public class TestPatternFilter { f.init(conf); return f; } + + /** + * Creates a mock MetricsRecord with the given name and tags. + * + * @param name String name + * @param tags List tags + * @return MetricsRecord newly created mock + */ + private static MetricsRecord mockMetricsRecord(String name, + List tags) { + MetricsRecord record = mock(MetricsRecord.class); + when(record.name()).thenReturn(name); + when(record.tags()).thenReturn(tags); + return record; + } }