Ensure that the test version of the command line tool is stable for benchmarking (#2076)

Some benchmark suites contain test cases that have nonreproducible
behaviour. This is mostly caused by relying on "now" when dealing
with dates or timestamps, instead of using a fixed moment. (A
notorious example is the crypto-aes.js test case of the sunspider
bechmark suite, where the heap memory consumption can vary between
34K-41K heap because of using `(new Date()).getTime()`.)

This commit renames the jerry-minimal command line tool to
jerry-test (to better reflect its purpose) and adds extra code,
which intercepts some calls to libc (`gettimeofday`, `rand`) and
pins their results to some fixed values. This makes the tool
useless in a general case but ensures stable results when
benchmarking -- for which it is mostly used.

As a side effect, the commit also changes jerry-libc by making all
libc functions weak symbols to allow their override from
application code.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
This commit is contained in:
Akos Kiss
2017-11-16 12:36:58 +01:00
committed by Dániel Bátyai
parent 7692aa9d66
commit a0db3ee5b3
9 changed files with 98 additions and 34 deletions
+3 -3
View File
@@ -64,9 +64,9 @@ if(JERRY_CMDLINE)
target_link_libraries("jerry" jerry-ext jerry-port-default)
endif()
if(JERRY_CMDLINE_MINIMAL)
jerry_create_executable("jerry-minimal" "main-unix-minimal.c")
target_link_libraries("jerry-minimal" jerry-port-default-minimal)
if(JERRY_CMDLINE_TEST)
jerry_create_executable("jerry-test" "main-unix-test.c" "benchmarking.c")
target_link_libraries("jerry-test" jerry-port-default-minimal)
endif()
if(JERRY_CMDLINE_SNAPSHOT)