From 3f4abe67fc54e127c01d7c2f1aa6ea762e2ad09a Mon Sep 17 00:00:00 2001 From: Kor Nielsen Date: Tue, 21 Nov 2023 13:04:26 -0800 Subject: [PATCH] Add sw-emulator workflow... --- .github/workflows/fpga.yml | 5 +- .github/workflows/fw-test-emu.yml | 98 +++++++++++++++++++++++++++ .github/workflows/nightly-release.yml | 42 ++++++++++++ 3 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/fw-test-emu.yml diff --git a/.github/workflows/fpga.yml b/.github/workflows/fpga.yml index 70ae077377..3a5888f408 100644 --- a/.github/workflows/fpga.yml +++ b/.github/workflows/fpga.yml @@ -388,9 +388,9 @@ jobs: fi if [ "${{ inputs.rom-logging }}" == "true" ] || [ -z "${{ inputs.rom-logging }}" ]; then - export CPTRA_ROM_TYPE=ROM_WITH_UART + VARS+=" CPTRA_ROM_TYPE=ROM_WITH_UART" elif [ "${{ inputs.rom-logging }}" == false ]; then - export CPTRA_ROM_TYPE=ROM_WITHOUT_UART + VARS+=" CPTRA_ROM_TYPE=ROM_WITHOUT_UART" else echo "Unexpected inputs.rom-logging: ${{ inputs.rom-logging }}" exit 1 @@ -421,6 +421,7 @@ jobs: - name: 'Upload test results' uses: actions/upload-artifact@v3 + if: success() || failure() with: name: caliptra-test-results${{ inputs.artifact-suffix }} path: | diff --git a/.github/workflows/fw-test-emu.yml b/.github/workflows/fw-test-emu.yml new file mode 100644 index 0000000000..130e6745a2 --- /dev/null +++ b/.github/workflows/fw-test-emu.yml @@ -0,0 +1,98 @@ + +name: Build and Test Firmware (in emulator) + +on: + workflow_call: + inputs: + artifact-suffix: + type: string + required: false + trng: + default: external + type: string + rom-logging: + default: true + type: boolean + +jobs: + build_and_test: + runs-on: ubuntu-22.04 + + env: + NEXTEST_VERSION: 0.9.63 + CACHE_BUSTER: f7c64774f17c + + steps: + - name: Restore cargo-nextest binary + uses: actions/cache/restore@v3 + id: nextest_bin_restore + with: + path: ~/.cargo/bin/cargo-nextest + key: nextest-bin-${{ env.NEXTEST_VERSION}}-${{ env.CACHE_BUSTER }} + + - name: Install cargo-nextest + if: steps.nextest_bin_restore.outputs.cache-hit != 'true' + run: | + cargo install cargo-nextest --version ${NEXTEST_VERSION} --locked --no-default-features --features=default-no-update + + - name: Save cargo-nextest binary + uses: actions/cache/save@v3 + if: steps.nextest_bin_restore.outputs.cache-hit != 'true' + with: + path: ~/.cargo/bin/cargo-nextest + key: ${{ steps.nextest_bin_restore.outputs.cache-primary-key }} + + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Pull dpe submodule + run: | + git submodule update --init dpe + + - name: Build firmware + run: | + mkdir /tmp/caliptra-test-firmware + cargo run -p caliptra-builder -- --all_elfs /tmp/caliptra-test-firmware + + - name: Run tests + run: | + export CALIPTRA_PREBUILT_FW_DIR=/tmp/caliptra-test-firmware + + FEATURE_FLAG= + + if [ "${{ inputs.trng }}" == "external" ] || [ -z "${{ inputs.trng }}" ]; then + echo Using external TRNG + elif [ "${{ inputs.trng }}" == "internal" ]; then + echo Using internal TRNG + FEATURE_FLAG="--features=itrng" + else + echo "Unexpected inputs.trng: ${{ inputs.rom-logging }}" + fi + + if [ "${{ inputs.rom-logging }}" == "true" ] || [ -z "${{ inputs.rom-logging }}" ]; then + export CPTRA_ROM_TYPE=ROM_WITH_UART + elif [ "${{ inputs.rom-logging }}" == false ]; then + export CPTRA_ROM_TYPE=ROM_WITHOUT_UART + else + echo "Unexpected inputs.rom-logging: ${{ inputs.rom-logging }}" + exit 1 + fi + + # Workaround https://github.com/nextest-rs/nextest/issues/267 + export LD_LIBRARY_PATH=$(rustc --print sysroot)/lib + + cargo-nextest nextest list "${FEATURE_FLAG}" --message-format json > /tmp/nextest-list.json + + cargo-nextest nextest run "${FEATURE_FLAG}" \ + --no-fail-fast \ + --profile=nightly + + - name: 'Upload test results' + uses: actions/upload-artifact@v3 + if: success() || failure() + with: + name: caliptra-test-results${{ inputs.artifact-suffix }} + path: | + /tmp/junit.xml + /tmp/nextest-list.json + diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index 8e35c5891f..2ca9f2e748 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -81,6 +81,48 @@ jobs: trng: external rom-logging: false + sw-emulator-full-suite-etrng-log: + name: sw-emulator Suite (etrng, log) +# needs: find-latest-release +# if: needs.find-latest-release.outputs.create_release + uses: ./.github/workflows/fw-test-emu.yml + with: + artifact-suffix: -sw-emulator-realtime-etrng-log + trng: external + rom-logging: true + + sw-emulator-full-suite-etrng-nolog: + name: sw-emulator Suite (etrng, nolog) +# needs: find-latest-release +# if: needs.find-latest-release.outputs.create_release + uses: ./.github/workflows/fw-test-emu.yml + with: + artifact-suffix: -sw-emulator-realtime-etrng-nolog + trng: external + rom-logging: false + + sw-emulator-full-suite-itrng-log: + name: sw-emulator Suite (itrng, log) +# needs: find-latest-release +# if: needs.find-latest-release.outputs.create_release + uses: ./.github/workflows/fw-test-emu.yml + with: + artifact-suffix: -sw-emulator-realtime-itrng-log + trng: internal + rom-logging: true + + sw-emulator-full-suite-itrng-nolog: + name: sw-emulator Suite (itrng, nolog) +# needs: find-latest-release +# if: needs.find-latest-release.outputs.create_release + uses: ./.github/workflows/fw-test-emu.yml + with: + artifact-suffix: -sw-emulator-realtime-itrng-nolog + trng: internal + rom-logging: false + + + # create-release: