1# 2# Copyright (c) 2023, The OpenThread Authors. 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions are met: 7# 1. Redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer. 9# 2. Redistributions in binary form must reproduce the above copyright 10# notice, this list of conditions and the following disclaimer in the 11# documentation and/or other materials provided with the distribution. 12# 3. Neither the name of the copyright holder nor the 13# names of its contributors may be used to endorse or promote products 14# derived from this software without specific prior written permission. 15# 16# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26# POSSIBILITY OF SUCH DAMAGE. 27# 28 29name: Unit 30 31on: 32 push: 33 branches-ignore: 34 - 'dependabot/**' 35 pull_request: 36 branches: 37 - 'main' 38 39concurrency: 40 group: ${{ github.workflow }}-${{ github.event.pull_request.number || (github.repository == 'openthread/openthread' && github.run_id) || github.ref }} 41 cancel-in-progress: true 42 43permissions: # added using https://github.com/step-security/secure-workflows 44 contents: read 45 46jobs: 47 48 tcplp-buffering: 49 runs-on: ubuntu-24.04 50 steps: 51 - name: Harden Runner 52 uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 53 with: 54 egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 55 56 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 57 with: 58 submodules: true 59 - name: Build 60 run: make -C third_party/tcplp/lib/test/ 61 - name: Run 62 run: third_party/tcplp/lib/test/test_all 63 64 unit-tests: 65 runs-on: ubuntu-22.04 66 env: 67 COVERAGE: 1 68 steps: 69 - name: Harden Runner 70 uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 71 with: 72 egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 73 74 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 75 with: 76 submodules: true 77 - name: Bootstrap 78 run: | 79 sudo apt-get update 80 sudo apt-get --no-install-recommends install -y ninja-build lcov 81 - name: Build Simulation 82 run: ./script/cmake-build simulation -DOT_BUILD_GTEST=ON -DOT_BORDER_ROUTING=ON -DOT_BORDER_ROUTING_DHCP6_PD=ON 83 - name: Test Simulation 84 run: cd build/simulation && ninja test 85 - name: Build Multipan Simulation 86 run: ./script/cmake-build simulation -DOT_BUILD_GTEST=ON -DOT_MULTIPAN_TEST=ON 87 - name: Test Multipan Simulation 88 run: cd build/simulation && ninja test 89 - name: Build NCP Simulation 90 run: ./script/cmake-build simulation -DOT_BUILD_GTEST=OFF -DOT_MTD=OFF -DOT_RCP=OFF -DOT_APP_CLI=OFF -DOT_APP_RCP=OFF \ 91 -DOT_BORDER_ROUTING=ON -DOT_NCP_INFRA_IF=ON -DOT_SRP_SERVER=ON -DOT_NCP_DNSSD=ON -DOT_PLATFORM_DNSSD=ON 92 - name: Test NCP Simulation 93 run: cd build/simulation && ninja test 94 - name: Build POSIX 95 run: ./script/cmake-build posix 96 - name: Test POSIX 97 run: cd build/posix && ninja test 98 - name: Generate Coverage 99 run: | 100 ./script/test generate_coverage gcc 101 - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 102 with: 103 name: cov-unit-tests 104 path: tmp/coverage.info 105 retention-days: 1 106 107 upload-coverage: 108 needs: unit-tests 109 runs-on: ubuntu-24.04 110 steps: 111 - name: Harden Runner 112 uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 113 with: 114 egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs 115 116 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 117 with: 118 submodules: true 119 - name: Bootstrap 120 run: | 121 sudo apt-get --no-install-recommends install -y lcov 122 - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 123 with: 124 path: coverage/ 125 pattern: cov-* 126 merge-multiple: true 127 - name: Combine Coverage 128 run: | 129 script/test combine_coverage 130 - name: Upload Coverage 131 uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v5.4.0 132 env: 133 CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 134 with: 135 files: final.info 136 fail_ci_if_error: true 137