1
1
mirror of https://github.com/henrydcase/pqc.git synced 2024-11-22 23:48:58 +00:00
pqcrypto/.circleci/config.yml
Thom Wiggers 78a65d6ec9 Parallel tests (#206)
* Do tests with pytest to run them in parallel

* attempt to handle merge commits better for PR test path

Similar to how we solved this for travis

* Clean up imports

* don't run valgrind if not specified slow_test

* Fix functest after initializer rename

* upload tests results as junit

* Upload test-common files since #200 got merged

* Catch test results upload failure
2019-07-29 10:38:25 +02:00

214 lines
6.3 KiB
YAML

version: 2.1
.emulated_job: &defaultjob
machine: true
steps:
- checkout
- run: &checkouttask
name: Pull submodules
command: |
git submodule init
git submodule update
git checkout $CIRCLECI_BRANCH
git reset --hard $CIRCLECI_SHA1
- run:
name: Install the emulation handlers
command: docker run --rm --privileged multiarch/qemu-user-static:register --reset
- run:
name: Run the tests in a container
command: |
docker run -e CI=true -e PQCLEAN_ONLY_DIFF=1 -e PQCLEAN_SKIP_SCHEMES=sphincs-haraka-128f-robust,sphincs-haraka-192s-robust,sphincs-sha256-128f-robust,sphincs-sha256-192s-robust,sphincs-shake256-128f-robust,sphincs-shake256-192s-robust,sphincs-haraka-128f-simple,sphincs-haraka-192s-simple,sphincs-sha256-128f-simple,sphincs-sha256-192s-simple,sphincs-shake256-128f-simple,sphincs-shake256-192s-simple,sphincs-haraka-128s-robust,sphincs-haraka-256f-robust,sphincs-sha256-128s-robust,sphincs-sha256-256f-robust,sphincs-shake256-128s-robust,sphincs-shake256-256f-robust,sphincs-haraka-128s-simple,sphincs-haraka-256f-simple,sphincs-sha256-128s-simple,sphincs-sha256-256f-simple,sphincs-shake256-128s-simple,sphincs-shake256-256f-simple,sphincs-haraka-192f-robust,sphincs-haraka-256s-robust,sphincs-sha256-192f-robust,sphincs-sha256-256s-robust,sphincs-shake256-192f-robust,sphincs-shake256-256s-robust,sphincs-haraka-192f-simple,sphincs-haraka-256s-simple,sphincs-sha256-192f-simple,sphincs-sha256-256s-simple,sphincs-shake256-192f-simple,sphincs-shake256-256s-simple --rm -v `pwd`:`pwd` -w `pwd` "pqclean/ci-container:$ARCH" /bin/bash -c "
uname -a &&
export CC=${CC} &&
pip3 install -r requirements.txt &&
mkdir test-results &&
cd test && python3 -m pytest --verbose --junitxml=test-results/pytest/results.xml --numprocesses=auto"
no_output_timeout: 2h
- store_test_results:
path: test-results
.native_job: &nativejob
docker:
- image: pqclean/ci-container:$ARCH
steps:
- checkout
- run:
<<: *checkouttask
- run:
name: Run tests
command: |
export CC=${CC}
export PQCLEAN_ONLY_DIFF=1
export PQCLEAN_SKIP_SCHEMES=sphincs-haraka-128f-robust,sphincs-haraka-192s-robust,sphincs-sha256-128f-robust,sphincs-sha256-192s-robust,sphincs-shake256-128f-robust,sphincs-shake256-192s-robust,sphincs-haraka-128f-simple,sphincs-haraka-192s-simple,sphincs-sha256-128f-simple,sphincs-sha256-192s-simple,sphincs-shake256-128f-simple,sphincs-shake256-192s-simple,sphincs-haraka-128s-robust,sphincs-haraka-256f-robust,sphincs-sha256-128s-robust,sphincs-sha256-256f-robust,sphincs-shake256-128s-robust,sphincs-shake256-256f-robust,sphincs-haraka-128s-simple,sphincs-haraka-256f-simple,sphincs-sha256-128s-simple,sphincs-sha256-256f-simple,sphincs-shake256-128s-simple,sphincs-shake256-256f-simple,sphincs-haraka-192f-robust,sphincs-haraka-256s-robust,sphincs-sha256-192f-robust,sphincs-sha256-256s-robust,sphincs-shake256-192f-robust,sphincs-shake256-256s-robust,sphincs-haraka-192f-simple,sphincs-haraka-256s-simple,sphincs-sha256-192f-simple,sphincs-sha256-256s-simple,sphincs-shake256-192f-simple,sphincs-shake256-256s-simple
pip3 install -r requirements.txt
mkdir test-results
cd test
python3 -m pytest --verbose --junitxml=test-results/pytest/results.xml --numprocesses=auto
no_output_timeout: 2h
- store_test_results:
path: test-results
jobs:
arm64-gcc:
<<: *defaultjob
environment:
CC: gcc
ARCH: arm64
arm64-clang:
<<: *defaultjob
environment:
CC: clang
ARCH: arm64
arm32-gcc:
<<: *defaultjob
environment:
CC: gcc
ARCH: armhf
arm32-clang:
<<: *defaultjob
environment:
CC: clang
ARCH: armhf
ppc-clang:
<<: *defaultjob
environment:
CC: clang
ARCH: unstable-ppc
ppc-gcc:
<<: *defaultjob
environment:
CC: gcc
ARCH: unstable-ppc
amd64-gcc:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
amd64-clang:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
i386-gcc:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
i386-clang:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
# These are for the scheduled builds
arm64-gcc-slow:
<<: *defaultjob
environment:
CC: gcc
ARCH: arm64
RUN_SLOW: 1
arm64-clang-slow:
<<: *defaultjob
environment:
CC: clang
ARCH: arm64
RUN_SLOW: 1
arm32-gcc-slow:
<<: *defaultjob
environment:
CC: gcc
ARCH: armhf
RUN_SLOW: 1
arm32-clang-slow:
<<: *defaultjob
environment:
CC: clang
ARCH: armhf
RUN_SLOW: 1
ppc-clang-slow:
<<: *defaultjob
environment:
CC: clang
ARCH: unstable-ppc
RUN_SLOW: 1
ppc-gcc-slow:
<<: *defaultjob
environment:
CC: gcc
ARCH: unstable-ppc
RUN_SLOW: 1
amd64-gcc-slow:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
RUN_SLOW: 1
amd64-clang-slow:
<<: *nativejob
environment:
CC: gcc
ARCH: amd64
RUN_SLOW: 1
i386-gcc-slow:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
RUN_SLOW: 1
i386-clang-slow:
<<: *nativejob
environment:
CC: gcc
ARCH: i386
RUN_SLOW: 1
workflows:
version: 2
build:
jobs:
- arm64-gcc:
requires:
- amd64-gcc
- arm64-clang:
requires:
- amd64-clang
- arm32-gcc:
requires:
- i386-gcc
- arm32-clang:
requires:
- i386-clang
- ppc-gcc:
requires:
- arm32-gcc
- ppc-clang:
requires:
- arm32-clang
- amd64-gcc
- amd64-clang
- i386-gcc
- i386-clang
scheduled:
triggers:
- schedule:
cron: "0 5 * * *"
filters:
branches:
only: master
jobs:
- arm64-gcc-slow
- arm64-gcc-slow
- arm64-clang-slow
- arm32-gcc-slow
- arm32-clang-slow
- ppc-gcc-slow
- ppc-clang-slow
- amd64-gcc-slow
- amd64-clang-slow
- i386-gcc-slow
- i386-clang-slow
# vim: set ft=yaml ts=2 sw=2 tw=0 et :
# vim: set ft=yaml ts=2 sw=2 tw=0 et :