diff options
Diffstat (limited to 'test/benchmark')
34 files changed, 573 insertions, 0 deletions
diff --git a/test/benchmark/benchmark.status b/test/benchmark/benchmark.status new file mode 100644 index 0000000000..6a966743aa --- /dev/null +++ b/test/benchmark/benchmark.status @@ -0,0 +1,21 @@ +prefix benchmark + +# To mark a test as flaky, list the test name in the appropriate section +# below, without ".js", followed by ": PASS,FLAKY". Example: +# sample-test : PASS,FLAKY + +[true] # This section applies to all platforms + +[$system==win32] + +[$system==linux] + +[$system==macos] + +[$system==solaris] # Also applies to SmartOS + +[$system==freebsd] + +[$system==aix] + +[$arch==arm] diff --git a/test/benchmark/test-benchmark-assert.js b/test/benchmark/test-benchmark-assert.js new file mode 100644 index 0000000000..8a8ba02444 --- /dev/null +++ b/test/benchmark/test-benchmark-assert.js @@ -0,0 +1,21 @@ +'use strict'; + +require('../common'); + +// Minimal test for assert benchmarks. This makes sure the benchmarks aren't +// completely broken but nothing more than that. + +const runBenchmark = require('../common/benchmark'); + +runBenchmark( + 'assert', + [ + 'strict=1', + 'len=1', + 'method=', + 'n=1', + 'primitive=null', + 'size=1', + 'type=Int8Array' + ] +); diff --git a/test/benchmark/test-benchmark-async-hooks.js b/test/benchmark/test-benchmark-async-hooks.js new file mode 100644 index 0000000000..4cb6f89a8c --- /dev/null +++ b/test/benchmark/test-benchmark-async-hooks.js @@ -0,0 +1,18 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +if (!common.enoughTestMem) + common.skip('Insufficient memory for async_hooks benchmark test'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('async_hooks', + [ + 'method=trackingDisabled', + 'n=10' + ], + {}); diff --git a/test/benchmark/test-benchmark-buffer.js b/test/benchmark/test-benchmark-buffer.js new file mode 100644 index 0000000000..171f755647 --- /dev/null +++ b/test/benchmark/test-benchmark-buffer.js @@ -0,0 +1,29 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('buffers', + [ + 'aligned=true', + 'args=1', + 'buffer=fast', + 'byteLength=1', + 'charsPerLine=6', + 'encoding=utf8', + 'endian=BE', + 'len=2', + 'linesCount=1', + 'method=', + 'n=1', + 'pieces=1', + 'pieceSize=1', + 'search=@', + 'size=1', + 'source=array', + 'type=', + 'value=0', + 'withTotalLength=0' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-child-process.js b/test/benchmark/test-benchmark-child-process.js new file mode 100644 index 0000000000..365777069b --- /dev/null +++ b/test/benchmark/test-benchmark-child-process.js @@ -0,0 +1,15 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('child_process', + [ + 'dur=0', + 'n=1', + 'len=1', + 'params=1', + 'methodName=execSync', + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-cluster.js b/test/benchmark/test-benchmark-cluster.js new file mode 100644 index 0000000000..d6e3b27ee8 --- /dev/null +++ b/test/benchmark/test-benchmark-cluster.js @@ -0,0 +1,7 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('cluster', ['n=1', 'payload=string', 'sendsPerBroadcast=1']); diff --git a/test/benchmark/test-benchmark-crypto.js b/test/benchmark/test-benchmark-crypto.js new file mode 100644 index 0000000000..f24edf675f --- /dev/null +++ b/test/benchmark/test-benchmark-crypto.js @@ -0,0 +1,26 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +if (common.hasFipsCrypto) + common.skip('some benchmarks are FIPS-incompatible'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('crypto', + [ + 'algo=sha256', + 'api=stream', + 'cipher=', + 'keylen=1024', + 'len=1', + 'n=1', + 'out=buffer', + 'type=buf', + 'v=crypto', + 'writes=1', + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-dgram.js b/test/benchmark/test-benchmark-dgram.js new file mode 100644 index 0000000000..8c93cd5a0c --- /dev/null +++ b/test/benchmark/test-benchmark-dgram.js @@ -0,0 +1,17 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +// Because the dgram benchmarks use hardcoded ports, this should be in +// sequential rather than parallel to make sure it does not conflict with +// tests that choose random available ports. + +runBenchmark('dgram', ['address=true', + 'chunks=2', + 'dur=0.1', + 'len=1', + 'n=1', + 'num=1', + 'type=send']); diff --git a/test/benchmark/test-benchmark-dns.js b/test/benchmark/test-benchmark-dns.js new file mode 100644 index 0000000000..27c3271c74 --- /dev/null +++ b/test/benchmark/test-benchmark-dns.js @@ -0,0 +1,10 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +const env = Object.assign({}, process.env, + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); + +runBenchmark('dns', ['n=1', 'all=false', 'name=127.0.0.1'], env); diff --git a/test/benchmark/test-benchmark-domain.js b/test/benchmark/test-benchmark-domain.js new file mode 100644 index 0000000000..e7d8b60b71 --- /dev/null +++ b/test/benchmark/test-benchmark-domain.js @@ -0,0 +1,7 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('domain', ['n=1', 'args=0']); diff --git a/test/benchmark/test-benchmark-es.js b/test/benchmark/test-benchmark-es.js new file mode 100644 index 0000000000..47fe4ab3f9 --- /dev/null +++ b/test/benchmark/test-benchmark-es.js @@ -0,0 +1,18 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('es', + [ + 'method=', + 'count=1', + 'context=null', + 'rest=0', + 'mode=', + 'n=1', + 'encoding=ascii', + 'size=1e1' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-events.js b/test/benchmark/test-benchmark-events.js new file mode 100644 index 0000000000..06be60a84a --- /dev/null +++ b/test/benchmark/test-benchmark-events.js @@ -0,0 +1,9 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('events', + ['argc=0', 'listeners=1', 'n=1'], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-fs.js b/test/benchmark/test-benchmark-fs.js new file mode 100644 index 0000000000..7ae32fe617 --- /dev/null +++ b/test/benchmark/test-benchmark-fs.js @@ -0,0 +1,22 @@ +'use strict'; + +require('../common'); +const runBenchmark = require('../common/benchmark'); + +const tmpdir = require('../common/tmpdir'); +tmpdir.refresh(); + +runBenchmark('fs', [ + 'n=1', + 'size=1', + 'dur=0.1', + 'len=1024', + 'concurrent=1', + 'pathType=relative', + 'statType=fstat', + 'statSyncType=fstatSync', + 'encodingType=buf', + 'filesize=1024', + 'dir=.github', + 'withFileTypes=false' +], { NODE_TMPDIR: tmpdir.path, NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-http.js b/test/benchmark/test-benchmark-http.js new file mode 100644 index 0000000000..7255e655c0 --- /dev/null +++ b/test/benchmark/test-benchmark-http.js @@ -0,0 +1,34 @@ +'use strict'; + +const common = require('../common'); + +if (!common.enoughTestMem) + common.skip('Insufficient memory for HTTP benchmark test'); + +// Because the http benchmarks use hardcoded ports, this should be in sequential +// rather than parallel to make sure it does not conflict with tests that choose +// random available ports. + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('http', + [ + 'benchmarker=test-double-http', + 'c=1', + 'chunkedEnc=true', + 'chunks=0', + 'dur=0.1', + 'duplicates=1', + 'input=keep-alive', + 'key=""', + 'len=1', + 'method=write', + 'n=1', + 'res=normal', + 'type=asc', + 'value=X-Powered-By' + ], + { + NODEJS_BENCHMARK_ZERO_ALLOWED: 1, + duration: 0 + }); diff --git a/test/benchmark/test-benchmark-http2.js b/test/benchmark/test-benchmark-http2.js new file mode 100644 index 0000000000..1668a7b87f --- /dev/null +++ b/test/benchmark/test-benchmark-http2.js @@ -0,0 +1,29 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); + +if (!common.enoughTestMem) + common.skip('Insufficient memory for HTTP/2 benchmark test'); + +// Because the http benchmarks use hardcoded ports, this should be in sequential +// rather than parallel to make sure it does not conflict with tests that choose +// random available ports. + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('http2', + [ + 'benchmarker=test-double-http2', + 'clients=1', + 'length=65536', + 'n=1', + 'nheaders=0', + 'requests=1', + 'streams=1' + ], + { + NODEJS_BENCHMARK_ZERO_ALLOWED: 1, + duration: 0 + }); diff --git a/test/benchmark/test-benchmark-misc.js b/test/benchmark/test-benchmark-misc.js new file mode 100644 index 0000000000..b884152808 --- /dev/null +++ b/test/benchmark/test-benchmark-misc.js @@ -0,0 +1,16 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('misc', [ + 'concat=0', + 'dur=0.1', + 'method=', + 'n=1', + 'type=', + 'val=magyarország.icom.museum', + 'script=test/fixtures/semicolon', + 'mode=worker' +], { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-module.js b/test/benchmark/test-benchmark-module.js new file mode 100644 index 0000000000..d81936210c --- /dev/null +++ b/test/benchmark/test-benchmark-module.js @@ -0,0 +1,11 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('module', [ + 'n=1', + 'useCache=true', + 'fullPath=true' +]); diff --git a/test/benchmark/test-benchmark-napi.js b/test/benchmark/test-benchmark-napi.js new file mode 100644 index 0000000000..1a1ff23d60 --- /dev/null +++ b/test/benchmark/test-benchmark-napi.js @@ -0,0 +1,24 @@ +'use strict'; + +const common = require('../common'); + +if (common.isWindows) { + common.skip('vcbuild.bat doesn\'t build the n-api benchmarks yet'); +} + +if (!common.isMainThread) { + common.skip('addons are not supported in workers'); +} + +if (process.features.debug) { + common.skip('benchmark does not work with debug build yet'); +} +const runBenchmark = require('../common/benchmark'); + +runBenchmark('napi', + [ + 'n=1', + 'engine=v8', + 'type=String' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-net.js b/test/benchmark/test-benchmark-net.js new file mode 100644 index 0000000000..5d3d283fc7 --- /dev/null +++ b/test/benchmark/test-benchmark-net.js @@ -0,0 +1,17 @@ +'use strict'; + +require('../common'); + +// Because the net benchmarks use hardcoded ports, this should be in sequential +// rather than parallel to make sure it does not conflict with tests that choose +// random available ports. + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('net', + [ + 'dur=0', + 'len=1024', + 'type=buf' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-os.js b/test/benchmark/test-benchmark-os.js new file mode 100644 index 0000000000..836e0e6504 --- /dev/null +++ b/test/benchmark/test-benchmark-os.js @@ -0,0 +1,7 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('os', ['n=1']); diff --git a/test/benchmark/test-benchmark-path.js b/test/benchmark/test-benchmark-path.js new file mode 100644 index 0000000000..890fd7ae41 --- /dev/null +++ b/test/benchmark/test-benchmark-path.js @@ -0,0 +1,14 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('path', + [ + 'n=1', + 'path=', + 'pathext=', + 'paths=', + 'props=' + ], { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-process.js b/test/benchmark/test-benchmark-process.js new file mode 100644 index 0000000000..15cb678017 --- /dev/null +++ b/test/benchmark/test-benchmark-process.js @@ -0,0 +1,11 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('process', + [ + 'n=1', + 'type=raw' + ], { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-querystring.js b/test/benchmark/test-benchmark-querystring.js new file mode 100644 index 0000000000..77d0ac99ff --- /dev/null +++ b/test/benchmark/test-benchmark-querystring.js @@ -0,0 +1,12 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('querystring', + [ 'n=1', + 'input="there is nothing to unescape here"', + 'type=noencode' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-streams.js b/test/benchmark/test-benchmark-streams.js new file mode 100644 index 0000000000..f90838794c --- /dev/null +++ b/test/benchmark/test-benchmark-streams.js @@ -0,0 +1,13 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('streams', + [ + 'kind=duplex', + 'type=buffer', + 'n=1' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-string_decoder.js b/test/benchmark/test-benchmark-string_decoder.js new file mode 100644 index 0000000000..f2fd6abe4b --- /dev/null +++ b/test/benchmark/test-benchmark-string_decoder.js @@ -0,0 +1,10 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('string_decoder', ['chunkLen=16', + 'encoding=utf8', + 'inLen=32', + 'n=1']); diff --git a/test/benchmark/test-benchmark-timers.js b/test/benchmark/test-benchmark-timers.js new file mode 100644 index 0000000000..af3c49bd71 --- /dev/null +++ b/test/benchmark/test-benchmark-timers.js @@ -0,0 +1,13 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('timers', + [ + 'direction=start', + 'n=1', + 'type=depth', + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-tls.js b/test/benchmark/test-benchmark-tls.js new file mode 100644 index 0000000000..40c14af830 --- /dev/null +++ b/test/benchmark/test-benchmark-tls.js @@ -0,0 +1,29 @@ +'use strict'; + +const common = require('../common'); + +if (!common.hasCrypto) + common.skip('missing crypto'); + +if (!common.enoughTestMem) + common.skip('Insufficient memory for TLS benchmark test'); + +// Because the TLS benchmarks use hardcoded ports, this should be in sequential +// rather than parallel to make sure it does not conflict with tests that choose +// random available ports. + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('tls', + [ + 'concurrency=1', + 'dur=0.1', + 'n=1', + 'size=2', + 'securing=SecurePair', + 'type=asc' + ], + { + NODEJS_BENCHMARK_ZERO_ALLOWED: 1, + duration: 0 + }); diff --git a/test/benchmark/test-benchmark-url.js b/test/benchmark/test-benchmark-url.js new file mode 100644 index 0000000000..92bb34de27 --- /dev/null +++ b/test/benchmark/test-benchmark-url.js @@ -0,0 +1,23 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('url', + [ + 'method=legacy', + 'loopMethod=forEach', + 'accessMethod=get', + 'type=short', + 'searchParam=noencode', + 'href=short', + 'input=short', + 'domain=empty', + 'path=up', + 'to=ascii', + 'prop=href', + 'n=1', + 'param=one' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-util.js b/test/benchmark/test-benchmark-util.js new file mode 100644 index 0000000000..97b02bbdee --- /dev/null +++ b/test/benchmark/test-benchmark-util.js @@ -0,0 +1,18 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('util', + ['argument=false', + 'input=', + 'method=Array', + 'n=1', + 'option=none', + 'pos=start', + 'size=1', + 'type=', + 'len=1', + 'version=native'], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-v8.js b/test/benchmark/test-benchmark-v8.js new file mode 100644 index 0000000000..22861785db --- /dev/null +++ b/test/benchmark/test-benchmark-v8.js @@ -0,0 +1,12 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('v8', + [ + 'method=getHeapStatistics', + 'n=1' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-vm.js b/test/benchmark/test-benchmark-vm.js new file mode 100644 index 0000000000..79ab6a0340 --- /dev/null +++ b/test/benchmark/test-benchmark-vm.js @@ -0,0 +1,13 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('vm', + [ + 'breakOnSigint=0', + 'withSigintListener=0', + 'n=1' + ], + { NODEJS_BENCHMARK_ZERO_ALLOWED: 1 }); diff --git a/test/benchmark/test-benchmark-worker.js b/test/benchmark/test-benchmark-worker.js new file mode 100644 index 0000000000..ae9a8a6701 --- /dev/null +++ b/test/benchmark/test-benchmark-worker.js @@ -0,0 +1,23 @@ +'use strict'; + +const common = require('../common'); + +if (!common.enoughTestMem) + common.skip('Insufficient memory for Worker benchmark test'); + +// Because the worker benchmarks can run on different threads, +// this should be in sequential rather than parallel to make sure +// it does not conflict with tests that choose random available ports. + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('worker', + [ + 'n=1', + 'sendsPerBroadcast=1', + 'workers=1', + 'payload=string' + ], + { + NODEJS_BENCHMARK_ZERO_ALLOWED: 1 + }); diff --git a/test/benchmark/test-benchmark-zlib.js b/test/benchmark/test-benchmark-zlib.js new file mode 100644 index 0000000000..25b7d1a4d5 --- /dev/null +++ b/test/benchmark/test-benchmark-zlib.js @@ -0,0 +1,18 @@ +'use strict'; + +require('../common'); + +const runBenchmark = require('../common/benchmark'); + +runBenchmark('zlib', + [ + 'method=deflate', + 'n=1', + 'options=true', + 'type=Deflate', + 'inputLen=1024', + 'duration=0.001' + ], + { + 'NODEJS_BENCHMARK_ZERO_ALLOWED': 1 + }); diff --git a/test/benchmark/testcfg.py b/test/benchmark/testcfg.py new file mode 100644 index 0000000000..2c2929f610 --- /dev/null +++ b/test/benchmark/testcfg.py @@ -0,0 +1,6 @@ +import sys, os +sys.path.append(os.path.join(os.path.dirname(__file__), '..')) +import testpy + +def GetConfiguration(context, root): + return testpy.SimpleTestConfiguration(context, root, 'benchmark') |