image: "flowdalic/debian-testing-dev:1.17" before_script: - ulimit -a - nproc - | readarray TOOLS <<EOF c++ cc clang clang++ clang-tidy doxygen g++ gcc include-what-you-use meson nasm valgrind EOF for tool in ${TOOLS[@]}; do echo -n "$tool version: " $tool --version done cache: paths: - subprojects/packagecache variables: BUILDDTYPE: debugoptimized CC: gcc CXX: g++ EXTRA_NINJA_ARGS: -v stages: - smoke-test - test .meson-test: artifacts: paths: - build-*/meson-logs when: on_failure reports: junit: build-*/meson-logs/testlog.junit.xml smoke-test-suite: extends: - .meson-test stage: smoke-test script: make smoke-test-suite fast-static-analysis: stage: smoke-test script: make fast-static-analysis variables: EMPER_IO: "true" iwyu: stage: smoke-test script: IWYU_TOOL="${CI_PROJECT_DIR}/tools/iwyu_tool.py" make iwyu variables: EMPER_IO: "true" clang-tidy: stage: smoke-test script: make tidy variables: EMPER_IO: "true" .test: extends: - .meson-test stage: test script: - make test .gcc: variables: CC: gcc CXX: g++ .clang: variables: CC: clang CXX: clang++ .emper-ws-scheduling: variables: EMPER_DEFAULT_SCHEDULING_STRATEGY: "work_stealing" .emper-laws-scheduling: variables: EMPER_DEFAULT_SCHEDULING_STRATEGY: "locality_aware_work_stealing" .emper-worker-no-sleep: variables: EMPER_WORKER_SLEEP: 'false' .emper-stats: variables: EMPER_STATS: 'true' .emper-userspace-rcu: variables: EMPER_USERSPACE_RCU: 'true' .emper-pipe-sleep-strategy: variables: EMPER_WORKER_SLEEP_STRATEGY: 'pipe' .emper-no-completer: variables: EMPER_IO_COMPLETER_BEHAVIOR: 'none' .emper-single-uring: variables: EMPER_IO_SINGLE_URING: 'true' .emper-io-stealing: variables: EMPER_IO_STEALING: 'true' .emper-lockless-cq: variables: EMPER_IO_LOCKLESS_CQ: 'true' .default-library-static: variables: EMPER_DEFAULT_LIBRARY: 'static' .clang-sanitizer: extends: - .clang - .default-library-static variables: # Clang's sanitizers require undefined symbols to be allowed when # linking. See also: # - https://github.com/mesonbuild/meson/issues/764 # - https://mesonbuild.com/Builtin-options.html EMPER_B_LUNDEF: 'false' .clang-sanitizer-undefined: extends: - .clang-sanitizer variables: EMPER_B_SANITIZE: 'undefined' #.clang-sanitizer-memory: # extends: # - .clang-sanitizer # variables: # EMPER_B_SANITIZE: 'memory' #.sanitizer-address: # extends: # - .default-library-static # variables: # EMPER_B_SANITIZE: 'address' .release-build: variables: BUILDTYPE: release .debug-build: variables: BUILDTYPE: debug .worker-wakeup-strategy-all: variables: EMPER_WORKER_WAKEUP_STRATEGY: "all" .emper-worker-wakeup-strategy-throttle: variables: EMPER_WORKER_WAKEUP_STRATEGY: "throttle" .do-not-log-timestamp: variables: EMPER_LOG_TIMESTAMP: "none" .locked-ws-queues: variables: EMPER_LOCKED_WS_QUEUE: "true" .futex-wakeup-semaphore: variables: EMPER_WAKEUP_SEMAPHORE_IMPLEMENTATION: "futex" .locked-wakeup-semaphore: variables: EMPER_WAKEUP_SEMAPHORE_IMPLEMENTATION: "locked" .set-affinity-on-block: variables: EMPER_SET_AFFINITY_ON_BLOCK: 'true' test-gcc: extends: - .test - .gcc test-gcc-release: extends: - test-gcc - .release-build test-gcc-debug: extends: - test-gcc - .debug-build test-clang: extends: - .test - .clang test-clang-release: extends: - test-clang - .release-build test-clang-debug: extends: - test-clang - .debug-build test-worker-no-sleep: extends: - .test - .emper-worker-no-sleep test-with-stats: extends: - .test - .emper-stats test-with-userspace-rcu: extends: - .test - .emper-userspace-rcu test-clang-sanitizer-undefined: extends: - .test - .clang-sanitizer-undefined #test-clang-sanitizer-memory: # extends: # - .test # - .clang-sanitizer-memory #test-clang-sanitizer-address: # extends: # - .test # - .clang # - .sanitizer-address test-laws: extends: - .test - .emper-laws-scheduling test-laws-release: extends: - test-laws - .release-build test-worker-wakeup-strategy-all: extends: - .test - .worker-wakeup-strategy-all test-worker-wakeup-strategy-throttle: extends: - .test - .emper-worker-wakeup-strategy-throttle test-do-not-log-timestamp: extends: - .test - .do-not-log-timestamp test-locked-ws-queues: extends: - .test - .locked-ws-queues test-futex-wakeup-semaphore: extends: - .test - .futex-wakeup-semaphore test-locked-wakeup-semaphore: extends: - .test - .locked-wakeup-semaphore test-set-affinity-on-block: extends: - .test - .set-affinity-on-block test-mmapped-log: extends: - .meson-test script: make && EMPER_LOG_FILE=emper.log make test test-single-uring: extends: - .test - .emper-single-uring test-pipe-sleep-strategy: extends: - .test - .emper-pipe-sleep-strategy test-pipe-sleep-strategy-no-completer: extends: - .test - .emper-pipe-sleep-strategy - .emper-no-completer test-lockless-cq: extends: - .test - .emper-lockless-cq test-io-stealing: extends: - .test - .emper-io-stealing test-lockless-io-stealing: extends: - .test - .emper-io-stealing - .emper-lockless-cq test-io-stealing-pipe-no-completer: extends: - .test - .emper-pipe-sleep-strategy - .emper-no-completer - .emper-io-stealing test-io-stealing-pipe-no-completer-lockless: extends: - .test - .emper-pipe-sleep-strategy - .emper-no-completer - .emper-io-stealing - .emper-lockless-cq