benchmark: add filter option for benchmark
authorYosuke Furukawa <yosuke.furukawa@gmail.com>
Sat, 17 Jan 2015 15:33:07 +0000 (00:33 +0900)
committerBen Noordhuis <info@bnoordhuis.nl>
Sat, 17 Jan 2015 16:13:07 +0000 (17:13 +0100)
Before:

    # common.js executes all tests in net directory.
    $ ./iojs common.js net

After:

    # common.js executes only "dgram" tests in net directory.
    $ ./iojs common.js net dgram

PR-URL: https://github.com/iojs/io.js/pull/488
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
benchmark/common.js

index 825bfb4..a6a1d87 100644 (file)
@@ -7,8 +7,9 @@ exports.PORT = process.env.PORT || 12346;
 // If this is the main module, then run the benchmarks
 if (module === require.main) {
   var type = process.argv[2];
+  var testFilter = process.argv[3];
   if (!type) {
-    console.error('usage:\n ./iojs benchmark/common.js <type>');
+    console.error('usage:\n ./iojs benchmark/common.js <type> [testFilter]');
     process.exit(1);
   }
 
@@ -17,6 +18,19 @@ if (module === require.main) {
   var tests = fs.readdirSync(dir);
   var spawn = require('child_process').spawn;
 
+  if (testFilter) {
+    var filteredTests = tests.filter(function(item){
+      if (item.lastIndexOf(testFilter) >= 0) {
+        return item;
+      }
+    });
+    if (filteredTests.length === 0) {
+      console.error(`${testFilter} is not found in \n ${tests.join('  \n')}`);
+      return;
+    }
+    tests = filteredTests;
+  }
+
   runBenchmarks();
 }