diff --git a/.github/workflows/async.yml b/.github/workflows/async.yml new file mode 100644 index 000000000..cb0407538 --- /dev/null +++ b/.github/workflows/async.yml @@ -0,0 +1,25 @@ +name: Async Tests + +on: + workflow_call: + +jobs: + make_check: + strategy: + matrix: + config: [ + # Add new configs here + '--enable-asynccrypt --enable-all --enable-dtls13', + ] + name: make check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + name: Checkout wolfSSL + + - name: Test wolfSSL async + run: | + ./async-check.sh setup + ./configure ${{ matrix.config }} + make check + diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7eb9b9d05..a7944f9dc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,6 +18,8 @@ jobs: uses: ./.github/workflows/docker-OpenWrt.yml os-check: uses: ./.github/workflows/os-check.yml + async: + uses: ./.github/workflows/async.yml stunnel: uses: ./.github/workflows/stunnel.yml openvpn: diff --git a/async-check.sh b/async-check.sh index 3d70ddee8..206fd4ff6 100755 --- a/async-check.sh +++ b/async-check.sh @@ -5,62 +5,30 @@ # This script creates symbolic links to the required asynchronous # file for using the asynchronous simulator and make check # -# $ ./async-check [keep] +# $ ./async-check [keep|clean|setup] # # - keep: (default off) ./async and links kept around for inspection +# - clean: (default off) only cleanup existing ./async and links +# - setup: (default off) only setup ./async and links but don't run config +# or make # +ASYNC_REPO=https://github.com/wolfSSL/wolfAsyncCrypt.git + function Usage() { - printf '\n%s\n' "Usage: $0 [keep]" - printf '\n%s\n\n' "Where \"keep\" means keep (default off) async files around for inspection" + printf '\n%s\n\n' "Usage: $0 [keep|clean|setup]" + printf '%s\n' "Where \"keep\" means keep (default off) async files around for inspection" + printf '%s\n' "Where \"clean\" means only clean (default off) the async files" + printf '%s\n\n' "Where \"setup\" means only setup (default off) the async files" printf '%s\n' "EXAMPLE:" printf '%s\n' "---------------------------------" printf '%s\n' "./async-check.sh keep" + printf '%s\n' "./async-check.sh clean" + printf '%s\n' "./async-check.sh setup" printf '%s\n\n' "---------------------------------" } -ASYNC_REPO=git@github.com:wolfSSL/wolfAsyncCrypt.git -#ASYNC_REPO=../wolfAsyncCrypt - -# Optionally keep async files -if [ "x$1" == "xkeep" ]; then KEEP="yes"; else KEEP="no"; fi - - -if [ -d ./async ]; -then - echo "\n\nUsing existing async repo\n\n" -else - # make a clone of the wolfAsyncCrypt repository - git clone --depth 1 $ASYNC_REPO async - [ $? -ne 0 ] && echo "\n\nCouldn't checkout the wolfAsyncCrypt repository\n\n" && exit 1 -fi - -# setup auto-conf -./autogen.sh - - -# link files -ln -s -F ../../async/wolfcrypt/src/async.c ./wolfcrypt/src/async.c -ln -s -F ../../async/wolfssl/wolfcrypt/async.h ./wolfssl/wolfcrypt/async.h -ln -s -F ../../../../async/wolfcrypt/src/port/intel/quickassist.c ./wolfcrypt/src/port/intel/quickassist.c -ln -s -F ../../../../async/wolfcrypt/src/port/intel/quickassist_mem.c ./wolfcrypt/src/port/intel/quickassist_mem.c -ln -s -F ../../../../async/wolfcrypt/src/port/intel/README.md ./wolfcrypt/src/port/intel/README.md -ln -s -F ../../../../async/wolfssl/wolfcrypt/port/intel/quickassist.h ./wolfssl/wolfcrypt/port/intel/quickassist.h -ln -s -F ../../../../async/wolfssl/wolfcrypt/port/intel/quickassist_mem.h ./wolfssl/wolfcrypt/port/intel/quickassist_mem.h -ln -s -F ../../../../async/wolfcrypt/src/port/cavium/cavium_nitrox.c ./wolfcrypt/src/port/cavium/cavium_nitrox.c -ln -s -F ../../../../async/wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h ./wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h -ln -s -F ../../../../async/wolfcrypt/src/port/cavium/README.md ./wolfcrypt/src/port/cavium/README.md - - -./configure --enable-asynccrypt --enable-all -make check -[ $? -ne 0 ] && echo "\n\nMake check failed. Debris left for analysis." && exit 1 - - -# Clean up -popd -if [ "x$KEEP" == "xno" ]; -then +function CleanUp() { unlink ./wolfcrypt/src/async.c unlink ./wolfssl/wolfcrypt/async.h unlink ./wolfcrypt/src/port/intel/quickassist.c @@ -77,4 +45,69 @@ then # restore original README.md files git checkout -- wolfcrypt/src/port/cavium/README.md git checkout -- wolfcrypt/src/port/intel/README.md +} + +function LinkFiles() { + # link files + ln -s -f ../../async/wolfcrypt/src/async.c ./wolfcrypt/src/async.c + ln -s -f ../../async/wolfssl/wolfcrypt/async.h ./wolfssl/wolfcrypt/async.h + ln -s -f ../../../../async/wolfcrypt/src/port/intel/quickassist.c ./wolfcrypt/src/port/intel/quickassist.c + ln -s -f ../../../../async/wolfcrypt/src/port/intel/quickassist_mem.c ./wolfcrypt/src/port/intel/quickassist_mem.c + ln -s -f ../../../../async/wolfcrypt/src/port/intel/README.md ./wolfcrypt/src/port/intel/README.md + ln -s -f ../../../../async/wolfssl/wolfcrypt/port/intel/quickassist.h ./wolfssl/wolfcrypt/port/intel/quickassist.h + ln -s -f ../../../../async/wolfssl/wolfcrypt/port/intel/quickassist_mem.h ./wolfssl/wolfcrypt/port/intel/quickassist_mem.h + ln -s -f ../../../../async/wolfcrypt/src/port/cavium/cavium_nitrox.c ./wolfcrypt/src/port/cavium/cavium_nitrox.c + ln -s -f ../../../../async/wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h ./wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h + ln -s -f ../../../../async/wolfcrypt/src/port/cavium/README.md ./wolfcrypt/src/port/cavium/README.md +} + +if [ "$#" -gt 1 ]; then + Usage + exit 1 fi + +KEEP=no +ONLY_SETUP=no + +case "x$1" in + "xkeep") + KEEP=yes + ;; + "xclean") + CleanUp + exit 0 + ;; + "xsetup") + ONLY_SETUP=yes + ;; + *) + Usage + exit 1 + ;; +esac + +# Fail on any error in script from now on +set -e + +if [ -d ./async ]; +then + echo "\n\nUsing existing async repo\n\n" +else + # make a clone of the wolfAsyncCrypt repository + git clone --depth 1 $ASYNC_REPO async +fi + +# setup auto-conf +./autogen.sh +LinkFiles +if [ "x$ONLY_SETUP" == "xno" ]; +then + ./configure --enable-asynccrypt --enable-all + make check + # Clean up + if [ "x$KEEP" == "xno" ]; + then + CleanUp + fi +fi +