From a834288096aa35260a34dbbf951dc7b0a4f64307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1niel=20B=C3=A1tyai?= Date: Wed, 7 Aug 2019 18:34:45 +0200 Subject: [PATCH] Speed-up Travis builds (#3008) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR reduces the time it takes for Travis to complete the checks. The following changes are made: - Disabled LTO for test builds - Merged Debugger tests into x86-64 Conformance tests - Moved the INIT_FINI unittests into the regular unittests - Merged SonarQube and Coverity Scan tasks - Re-arranged some of the tasks JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu --- .travis.yml | 75 ++++++++++++++++++++-------------------------- tools/run-tests.py | 50 +++++++++++++++++-------------- 2 files changed, 59 insertions(+), 66 deletions(-) diff --git a/.travis.yml b/.travis.yml index cab08d151..7314503bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,9 +20,9 @@ matrix: apt: packages: [doxygen, cppcheck, vera++] - - name: "Linux/x86-64 Build & Correctness Tests" + - name: "Linux/x86-64 Build, Correctness & Debugger Tests" env: - - OPTS="--quiet --jerry-tests --jerry-test-suite" + - OPTS="--quiet --jerry-tests --jerry-test-suite --jerry-debugger" - name: "Linux/x86 (cpointer-32bit) Build & Correctness Tests" env: @@ -55,22 +55,14 @@ matrix: apt: packages: [gcc-multilib] - - name: "Unit Tests" - env: - - OPTS="--unittests" - - - name: "Unit Tests (INIT_FINI)" - env: - - OPTS="--unittests --buildoptions=--cmake-param=-DFEATURE_INIT_FINI=ON" - - - name: "Debugger Tests" - env: - - OPTS="--jerry-debugger" - - name: "Conformance Tests" env: - OPTS="--test262" + - name: "Unit Tests" + env: + - OPTS="--unittests" + - name: "ASAN Tests" env: # Skipping maximum stack usage related tests due to 'detect_stack_use_after_return=1' ASAN option. @@ -95,30 +87,6 @@ matrix: sources: ubuntu-toolchain-r-test packages: [gcc-5, gcc-5-multilib] - - name: "Coverity Scan" - env: - # Declaration of the encrypted COVERITY_SCAN_TOKEN, created via the - # "travis encrypt" command using the project repo's public key. - - secure: "V7BdXv3FCVkFGEfKfWto6I+Sytou1zTCGyn49xurkBfKNsG/3vbkXfsbK1m6lCZxmY7W/1odpfjixpAPZgy2L4FgPZK6/UyVvC8pIFjDOubcEniN48haleSvm/ZFPLDifxDL2+VVFtK1oRYPtDBzzSoUCcfwovgk+Wy+tSBnhnyRLqO/WaI6PqFof7ECYMTRlJVjioZARVP4YmkBruIPmGDdR/3EvwowlxfuiFoPheix61ug4x3tpTBW2qWgvFjDyCZXFz4pJrBQPTAIbyKMxHcBykJjl9eR+dWAOsvE1Uw48tFOJxjKDfUttVQUPsyKFllmcCVS0fDYB5pzZOmRUPxJmox1jt8J1FY85Ri1PGY0THBPM2H7to4Yf2418Y3539epbN8p+79dwaM7e2OiJ2owukbWI7PoNqIz5DV5zxpIKsOQfeWuNLJOgsBePEIU7lz133Si/2d5W/7If46B1d+hZRBJfSYksgDqDU6G/voZkPf0K5bKe2O2BxiIW1DYk4yQ1ecZAkqGjZ8jG3zYGMG3mSF4VyuU4UGFG1Pg8fw7Ap5zuHxSVY1H9dtu4T6JQG3aj/x1omlzfw48DjgkwxVhf7Xvl3yfR7pzydYheLX3MZYtcVo7rWnglZFZoUjWDK1StbmzsvPftvwWtoDTWlzo4xeSXhahSJvJyc4U8Wc=" - addons: - coverity_scan: - project: - name: "jerryscript-project/jerryscript" - description: "Ultra-lightweight JavaScript engine for the Internet of Things." - notification_email: rsipka.uszeged@partner.samsung.com - build_command: "tools/build.py --clean" - branch_pattern: master - script: skip # Changed to nop, Coverity Scan has already built the project by the time 'script' stage is reached. - - - name: "SonarQube" - addons: - sonarcloud: - organization: "jerryscript-project" - script: tools/check-sonarqube.sh - cache: - directories: - - '${HOME}/.sonar/cache' - - name: "ESP8266 Build Test" install: make -f ./targets/esp8266/Makefile.travis install-noapt script: make -f ./targets/esp8266/Makefile.travis script @@ -137,6 +105,13 @@ matrix: install: make -f ./targets/mbedos5/Makefile.travis install script: make -f ./targets/mbedos5/Makefile.travis script + - name: "Zephyr/Arduino 101 Build Test" + install: make -f ./targets/zephyr/Makefile.travis install-noapt + script: make -f ./targets/zephyr/Makefile.travis script + addons: + apt: + packages: [gperf, dfu-util, device-tree-compiler, python3-ply, python3-pip] + - name: "NuttX/STM32F4 Build Test" install: make -f targets/nuttx-stm32f4/Makefile.travis install-noapt script: make -f targets/nuttx-stm32f4/Makefile.travis script @@ -163,12 +138,26 @@ matrix: install: make -f ./targets/tizenrt-artik053/Makefile.travis install script: make -f ./targets/tizenrt-artik053/Makefile.travis script - - name: "Zephyr/Arduino 101 Build Test" - install: make -f ./targets/zephyr/Makefile.travis install-noapt - script: make -f ./targets/zephyr/Makefile.travis script + - name: "Coverity Scan & SonarQube" + env: + # Declaration of the encrypted COVERITY_SCAN_TOKEN, created via the + # "travis encrypt" command using the project repo's public key. + - secure: "V7BdXv3FCVkFGEfKfWto6I+Sytou1zTCGyn49xurkBfKNsG/3vbkXfsbK1m6lCZxmY7W/1odpfjixpAPZgy2L4FgPZK6/UyVvC8pIFjDOubcEniN48haleSvm/ZFPLDifxDL2+VVFtK1oRYPtDBzzSoUCcfwovgk+Wy+tSBnhnyRLqO/WaI6PqFof7ECYMTRlJVjioZARVP4YmkBruIPmGDdR/3EvwowlxfuiFoPheix61ug4x3tpTBW2qWgvFjDyCZXFz4pJrBQPTAIbyKMxHcBykJjl9eR+dWAOsvE1Uw48tFOJxjKDfUttVQUPsyKFllmcCVS0fDYB5pzZOmRUPxJmox1jt8J1FY85Ri1PGY0THBPM2H7to4Yf2418Y3539epbN8p+79dwaM7e2OiJ2owukbWI7PoNqIz5DV5zxpIKsOQfeWuNLJOgsBePEIU7lz133Si/2d5W/7If46B1d+hZRBJfSYksgDqDU6G/voZkPf0K5bKe2O2BxiIW1DYk4yQ1ecZAkqGjZ8jG3zYGMG3mSF4VyuU4UGFG1Pg8fw7Ap5zuHxSVY1H9dtu4T6JQG3aj/x1omlzfw48DjgkwxVhf7Xvl3yfR7pzydYheLX3MZYtcVo7rWnglZFZoUjWDK1StbmzsvPftvwWtoDTWlzo4xeSXhahSJvJyc4U8Wc=" addons: - apt: - packages: [gperf, dfu-util, device-tree-compiler, python3-ply, python3-pip] + coverity_scan: + project: + name: "jerryscript-project/jerryscript" + description: "Ultra-lightweight JavaScript engine for the Internet of Things." + notification_email: rsipka.uszeged@partner.samsung.com + build_command: "tools/build.py --clean" + branch_pattern: master + sonarcloud: + organization: "jerryscript-project" + # Coverity Scan has already built the project by the time 'script' stage is reached. + script: tools/check-sonarqube.sh + cache: + directories: + - '${HOME}/.sonar/cache' fast_finish: true diff --git a/tools/run-tests.py b/tools/run-tests.py index 8b9837401..4cde0269a 100755 --- a/tools/run-tests.py +++ b/tools/run-tests.py @@ -33,6 +33,7 @@ Options.__new__.__defaults__ = ([], [], False) def skip_if(condition, desc): return desc if condition else False +OPTIONS_COMMON = ['--lto=off'] OPTIONS_PROFILE_MIN = ['--profile=minimal'] OPTIONS_PROFILE_ES51 = [] # NOTE: same as ['--profile=es5.1'] OPTIONS_PROFILE_ES2015 = ['--profile=es2015-subset'] @@ -48,64 +49,67 @@ OPTIONS_DOCTESTS = ['--doctests=on', '--jerry-cmdline=off', '--error-messages=on # Test options for unittests JERRY_UNITTESTS_OPTIONS = [ Options('unittests-es2015_subset', - OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES2015), + OPTIONS_COMMON + OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES2015), Options('unittests-es2015_subset-debug', - OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES2015 + OPTIONS_DEBUG), + OPTIONS_COMMON + OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES2015 + OPTIONS_DEBUG), Options('doctests-es2015_subset', - OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES2015), + OPTIONS_COMMON + OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES2015), Options('doctests-es2015_subset-debug', - OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES2015 + OPTIONS_DEBUG), + OPTIONS_COMMON + OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES2015 + OPTIONS_DEBUG), Options('unittests-es5.1', - OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES51), + OPTIONS_COMMON + OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES51), Options('unittests-es5.1-debug', - OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG), + OPTIONS_COMMON + OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG), Options('doctests-es5.1', - OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES51), + OPTIONS_COMMON + OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES51), Options('doctests-es5.1-debug', - OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG) + OPTIONS_COMMON + OPTIONS_DOCTESTS + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG), + Options('unittests-es5.1-debug-init-fini', + OPTIONS_COMMON + OPTIONS_UNITTESTS + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG + + ['--cmake-param=-DFEATURE_INIT_FINI=ON']), ] # Test options for jerry-tests JERRY_TESTS_OPTIONS = [ + Options('jerry_tests-es2015_subset-debug', + OPTIONS_COMMON + OPTIONS_PROFILE_ES2015 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT), Options('jerry_tests-es5.1', - OPTIONS_PROFILE_ES51 + OPTIONS_STACK_LIMIT), + OPTIONS_COMMON + OPTIONS_PROFILE_ES51 + OPTIONS_STACK_LIMIT), Options('jerry_tests-es5.1-snapshot', - OPTIONS_PROFILE_ES51 + OPTIONS_SNAPSHOT + OPTIONS_STACK_LIMIT, + OPTIONS_COMMON + OPTIONS_PROFILE_ES51 + OPTIONS_SNAPSHOT + OPTIONS_STACK_LIMIT, ['--snapshot']), Options('jerry_tests-es5.1-debug', - OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT), + OPTIONS_COMMON + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT), Options('jerry_tests-es5.1-debug-snapshot', - OPTIONS_PROFILE_ES51 + OPTIONS_SNAPSHOT + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT, + OPTIONS_COMMON + OPTIONS_PROFILE_ES51 + OPTIONS_SNAPSHOT + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT, ['--snapshot']), Options('jerry_tests-es5.1-debug-cpointer_32bit', - OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT + OPTIONS_COMMON + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT + ['--cpointer-32bit=on', '--mem-heap=1024']), Options('jerry_tests-es5.1-debug-external_context', - OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT + ['--external-context=on']), - Options('jerry_tests-es2015_subset-debug', - OPTIONS_PROFILE_ES2015 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT), + OPTIONS_COMMON + OPTIONS_PROFILE_ES51 + OPTIONS_DEBUG + OPTIONS_STACK_LIMIT + ['--external-context=on']), ] # Test options for jerry-test-suite JERRY_TEST_SUITE_OPTIONS = JERRY_TESTS_OPTIONS[:] JERRY_TEST_SUITE_OPTIONS.extend([ Options('jerry_test_suite-minimal', - OPTIONS_PROFILE_MIN), + OPTIONS_COMMON + OPTIONS_PROFILE_MIN), Options('jerry_test_suite-minimal-snapshot', - OPTIONS_PROFILE_MIN + OPTIONS_SNAPSHOT, + OPTIONS_COMMON + OPTIONS_PROFILE_MIN + OPTIONS_SNAPSHOT, ['--snapshot']), Options('jerry_test_suite-minimal-debug', - OPTIONS_PROFILE_MIN + OPTIONS_DEBUG), + OPTIONS_COMMON + OPTIONS_PROFILE_MIN + OPTIONS_DEBUG), Options('jerry_test_suite-minimal-debug-snapshot', - OPTIONS_PROFILE_MIN + OPTIONS_SNAPSHOT + OPTIONS_DEBUG, + OPTIONS_COMMON + OPTIONS_PROFILE_MIN + OPTIONS_SNAPSHOT + OPTIONS_DEBUG, ['--snapshot']), Options('jerry_test_suite-es2015_subset', - OPTIONS_PROFILE_ES2015), + OPTIONS_COMMON + OPTIONS_PROFILE_ES2015), Options('jerry_test_suite-es2015_subset-snapshot', - OPTIONS_PROFILE_ES2015 + OPTIONS_SNAPSHOT, + OPTIONS_COMMON + OPTIONS_PROFILE_ES2015 + OPTIONS_SNAPSHOT, ['--snapshot']), Options('jerry_test_suite-es2015_subset-debug-snapshot', - OPTIONS_PROFILE_ES2015 + OPTIONS_SNAPSHOT + OPTIONS_DEBUG, + OPTIONS_COMMON + OPTIONS_PROFILE_ES2015 + OPTIONS_SNAPSHOT + OPTIONS_DEBUG, ['--snapshot']), ])