changeset 973:8e48b96c25e2

runners: partially match the benchmarks with non-anchored regular expressions. Contributed-by: Bernd Eckenfels <b.eckenfels@seeburger.de>
author shade
date Fri, 22 Aug 2014 11:44:10 +0400
parents 0d74d2f85299
children 1fe1a9936fa8
files jmh-core/src/main/java/org/openjdk/jmh/runner/BenchmarkList.java jmh-core/src/test/java/org/openjdk/jmh/runner/TestBenchmarkList.java jmh-core/src/test/resources/org/openjdk/jmh/runner/MicroBenchmarks
diffstat 3 files changed, 91 insertions(+), 36 deletions(-) [+]
line wrap: on
line diff
--- a/jmh-core/src/main/java/org/openjdk/jmh/runner/BenchmarkList.java	Wed Aug 20 16:23:00 2014 +0400
+++ b/jmh-core/src/main/java/org/openjdk/jmh/runner/BenchmarkList.java	Fri Aug 22 11:44:10 2014 +0400
@@ -85,7 +85,7 @@
     }
 
     /**
-     * Gets all the micro benchmarks that matches the given regexp, sorted
+     * Gets all the micro benchmarks that matches the given regexp, sorted.
      *
      * @param out Output the messages here
      * @param regexps  List of regexps to match against
@@ -109,7 +109,7 @@
             excludePatterns.add(Pattern.compile(regexp));
         }
 
-        // find all benchmarks matching pattern
+        // find all benchmarks containing pattern
         SortedSet<BenchmarkListEntry> result = new TreeSet<BenchmarkListEntry>();
         try {
             for (Reader r : getReaders()) {
@@ -129,12 +129,12 @@
                         BenchmarkListEntry br = new BenchmarkListEntry(line);
 
                         for (Pattern pattern : includePatterns) {
-                            if (pattern.matcher(br.getUsername()).matches()) {
+                            if (pattern.matcher(br.getUsername()).find()) {
                                 boolean exclude = false;
 
                                 // excludes override
                                 for (Pattern excludePattern : excludePatterns) {
-                                    if (excludePattern.matcher(line).matches()) {
+                                    if (excludePattern.matcher(line).find()) {
                                         out.verbosePrintln("Excluding " + br.getUsername() + ", matches " + excludePattern);
 
                                         exclude = true;
--- a/jmh-core/src/test/java/org/openjdk/jmh/runner/TestBenchmarkList.java	Wed Aug 20 16:23:00 2014 +0400
+++ b/jmh-core/src/test/java/org/openjdk/jmh/runner/TestBenchmarkList.java	Fri Aug 22 11:44:10 2014 +0400
@@ -25,13 +25,13 @@
 package org.openjdk.jmh.runner;
 
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.openjdk.jmh.runner.format.OutputFormat;
 import org.openjdk.jmh.runner.format.OutputFormatFactory;
 import org.openjdk.jmh.runner.options.VerboseMode;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
@@ -41,7 +41,6 @@
 /**
  * Tests for BenchmarkList
  */
-@Ignore
 public class TestBenchmarkList {
 
     private static BenchmarkList list;
@@ -73,14 +72,40 @@
     }
 
     @Test
-    public void testListFindSingle() throws Exception {
-        // check find without excldues
+    public void testListFindSingleByPattern() throws Exception {
+        // check find without excludes
         excludes.clear();
         Set<BenchmarkListEntry> micros = list.find(out, ".*Hash.*", excludes);
         assertEquals(7, micros.size());
     }
 
     @Test
+    public void testListFindSingleBySubstring() throws Exception {
+        // check find without excludes
+        excludes.clear();
+        Set<BenchmarkListEntry> micros = list.find(out, "Hash", excludes);
+        assertEquals(7, micros.size());
+    }
+
+    @Test
+    public void testListFindSingleByTypical() throws Exception {
+        // check find without excludes
+        excludes.clear();
+        // this would be a typical partial pattern with . abuse case
+        Set<BenchmarkListEntry> micros = list.find(out, "jbb05.GeneratedSPECjbb2005HashMap", excludes);
+        assertEquals(5, micros.size());
+    }
+
+    @Test
+    public void testListFindAnchored() throws Exception {
+        // check find without excludes
+        excludes.clear();
+        // matches only: org.openjdk.jmh.runner.TestMicro.dummy
+        Set<BenchmarkListEntry> micros = list.find(out, "^org\\.openjdk.*\\.dummy$", excludes);
+        assertEquals(1, micros.size());
+    }
+
+    @Test
     public void testListFindSingleWithExcludes() throws Exception {
         // check find with excludes
         excludes.clear();
@@ -90,6 +115,41 @@
     }
 
     @Test
+    public void testListFindAllWithSubstringExclude() throws Exception {
+        // check find with excludes
+        excludes.clear();
+        excludes.add("oracle");
+        Set<BenchmarkListEntry> micros = list.find(out, "", excludes);
+        assertEquals(10, micros.size());
+    }
+
+    @Test
+    public void testListFindAllWithEmpty() throws Exception {
+        // will get modified
+        List<String> emptyIncludes = new ArrayList<String>();
+        excludes.clear();
+        Set<BenchmarkListEntry> micros = list.find(out, emptyIncludes, excludes);
+        assertEquals(20, micros.size());
+    }
+
+    @Test
+    public void testListFindIncludeList() throws Exception {
+        // check find with excludes
+        excludes.clear();
+        List<String> includes = Arrays.asList("^oracle", ".*openjmh.*");
+        Set<BenchmarkListEntry> micros = list.find(out, includes, excludes);
+        assertEquals(10, micros.size());
+    }
+
+    @Test
+    public void testListFindWithIncludesAndExcludes() throws Exception {
+        excludes.clear();
+        excludes.add(".*Int.*");
+        Set<BenchmarkListEntry> micros = list.find(out, ".*Concurrent.*", excludes);
+        assertEquals(2, micros.size());
+    }
+
+    @Test
     public void testListIsSorted() throws Exception {
         // micros should be sorted
         excludes.clear();
@@ -98,12 +158,4 @@
         BenchmarkListEntry first = micros.iterator().next();
         assertTrue("oracle.micro.benchmarks.api.java.util.concurrent.GeneratedMaps.testConcurrentHashMap".equals(first.getUsername()));
     }
-
-    @Test
-    public void testListGetWithIncludesAndExcludes() throws Exception {
-        excludes.clear();
-        excludes.add(".*Int.*");
-        Set<BenchmarkListEntry> micros = list.find(out, ".*Concurrent.*", excludes);
-        assertEquals(2, micros.size());
-    }
 }
--- a/jmh-core/src/test/resources/org/openjdk/jmh/runner/MicroBenchmarks	Wed Aug 20 16:23:00 2014 +0400
+++ b/jmh-core/src/test/resources/org/openjdk/jmh/runner/MicroBenchmarks	Fri Aug 22 11:44:10 2014 +0400
@@ -22,23 +22,26 @@
 #    questions.
 #
 
-oracle.micro.benchmarks.api.java.util.concurrent.NormalMaps.testConcurrentHashMap, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetInt, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetIntGC, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetInteger, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005ResizedHashMapGetInt, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005ResizedHashMapGetInteger, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.sjent.GeneratedPrintBase64.printBase64Binary_128bytes, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.sjent.GeneratedPrintBase64.printBase64Binary_32bytes, xxx, AverageTime, 1=
-oracle.micro.benchmarks.app.sjent.GeneratedPrintBase64.printBase64Binary_512bytes, xxx, AverageTime, 1=
-oracle.micro.benchmarks.api.java.util.concurrent.GeneratedMaps.testConcurrentHashMap, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.dummy, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.dummyWarm, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.dummyWarmOnly, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.dummySetupPayload, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.boom_Exception, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.boom_Error, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.boom_Throwable, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestMicro.blackholed, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestBrokenMicro.dummyPayload, xxx, AverageTime, 1=
-org.openjdk.jmh.runner.TestExceptionThrowingMicro.ouch, xxx, AverageTime, 1=
+
+oracle.micro.benchmarks.api.java.util.concurrent.NormalMaps.testConcurrentHashMap===,===oracle.micro.benchmarks.api.java.util.concurrent.generated.NormalMaps.testConcurrentHashMap===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.api.java.util.concurrent.NormalMaps.testConcurrentHashMap===,===oracle.micro.benchmarks.api.java.util.concurrent.generated.NormalMaps.testConcurrentHashMapThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetInt===,===oracle.micro.benchmarks.app.jbb05.generated.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetIntThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetIntGC===,===oracle.micro.benchmarks.app.jbb05.generated.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetIntGCThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetInteger===,===oracle.micro.benchmarks.app.jbb05.generated.GeneratedSPECjbb2005HashMap.jbb2005HashMapGetIntegerThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005ResizedHashMapGetInt===,===oracle.micro.benchmarks.app.jbb05.generated.GeneratedSPECjbb2005HashMap.jbb2005ResizedHashMapGetIntThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.jbb05.GeneratedSPECjbb2005HashMap.jbb2005ResizedHashMapGetInteger===,===oracle.micro.benchmarks.app.jbb05.generated.GeneratedSPECjbb2005HashMap.jbb2005ResizedHashMapGetIntegerThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.sjent.GeneratedPrintBase64.printBase64Binary_128bytes===,===oracle.micro.benchmarks.app.sjent.generated.GeneratedPrintBase64.printBase64Binary_128bytesThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.sjent.GeneratedPrintBase64.printBase64Binary_32bytes===,===oracle.micro.benchmarks.app.sjent.generated.GeneratedPrintBase64.printBase64Binary_32bytesThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.app.sjent.GeneratedPrintBase64.printBase64Binary_512bytes===,===oracle.micro.benchmarks.app.sjent.generated.GeneratedPrintBase64.printBase64Binary_512bytesThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+oracle.micro.benchmarks.api.java.util.concurrent.GeneratedMaps.testConcurrentHashMap===,===oracle.micro.benchmarks.api.java.util.concurrent.generated.GeneratedMaps.testConcurrentHashMapThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+
+org.openjdk.jmh.runner.TestMicro.dummy===,===org.openjdk.jmh.runner.generated.TestMicro.dummyThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestMicro.dummyWarm===,===org.openjdk.jmh.runner.generated.TestMicro.dummyWarmThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestMicro.dummyWarmOnly===,===org.openjdk.jmh.runner.generated.TestMicro.dummyWarmOnlyThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestMicro.dummySetupPayload===,===org.openjdk.jmh.runner.generated.TestMicro.dummySetupPayloadThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestMicro.boom_Exception===,===org.openjdk.jmh.runner.generated.TestMicro.boom_ExceptionThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestMicro.boom_Error===,===org.openjdk.jmh.runner.generated.TestMicro.boom_ErrorThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestMicro.boom_Throwable===,===org.openjdk.jmh.runner.generated.TestMicro.boom_ThrowableThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestMicro.blackholed===,===org.openjdk.jmh.runner.generated.TestMicro.blackholedThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestBrokenMicro.dummyPayload===,===org.openjdk.jmh.runner.generated.TestBrokenMicro.dummyPayloadThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]
+org.openjdk.jmh.runner.TestExceptionThrowingMicro.ouch===,===org.openjdk.jmh.runner.generated.TestExceptionThrowingMicro.ouchThroughput===,===AverageTime===,===1====,===[4]===,===[5]===,===[1 s]===,===[]===,===[5]===,===[4 s]===,===[]===,===[1]===,===[]===,===[]===,===[]===,===[]===,===[]===,===[prefixLen===SEP-K===0===SEP-V===10===SEP-V===100===SEP-V======PAIR-SEP===]===,===[NANOSECONDS]===,===[]