#
#  Copyright (c) 2020, The OpenThread Authors.
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#  3. Neither the name of the copyright holder nor the
#     names of its contributors may be used to endorse or promote products
#     derived from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#  POSSIBILITY OF SUCH DAMAGE.
#

name: Simulation 1.2

on: [push, pull_request]

jobs:

  cancel-previous-runs:
    runs-on: ubuntu-20.04
    steps:
    - uses: rokroskar/workflow-run-cleanup-action@master
      env:
        GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
      if: "github.ref != 'refs/heads/main'"

  thread-1-2:
    name: thread-1-2-${{ matrix.compiler.c }}-${{ matrix.arch }}
    runs-on: ubuntu-20.04
    env:
      CFLAGS: -${{ matrix.arch }}
      CXXFLAGS: -${{ matrix.arch }}
      LDFLAGS: -${{ matrix.arch }}
      COVERAGE: 1
      THREAD_VERSION: 1.2
      VIRTUAL_TIME: 1
      INTER_OP: 1
      CC: ${{ matrix.compiler.c }}
      CXX: ${{ matrix.compiler.cxx }}
    strategy:
      matrix:
        compiler: [{c: "gcc", cxx: "g++", gcov: "gcc"}, { c: "clang-10", cxx: "clang++-10", gcov: "llvm"}]
        arch: ["m32", "m64"]
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - name: Bootstrap
      run: |
        sudo dpkg --add-architecture i386
        sudo apt-get update
        sudo apt-get --no-install-recommends install -y clang-10 clang++-10 ninja-build python3-setuptools python3-wheel llvm lcov
        sudo apt-get --no-install-recommends install -y g++-multilib libreadline-dev:i386 libncurses-dev:i386
        python3 -m pip install -r tests/scripts/thread-cert/requirements.txt
    - name: Build
      run: |
        ./script/test build
    - name: Run
      run: |
        ulimit -c unlimited
        ./script/test prepare_coredump_upload
        ./script/test unit
        ./script/test cert_suite tests/scripts/thread-cert/v1_2_*
    - name: Check Crash
      if: ${{ failure() }}
      run: |
          CRASHED=$(./script/test check_crash | tail -1)
          [[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
          echo "CRASHED=$CRASHED" >> $GITHUB_ENV
    - uses: actions/upload-artifact@v2
      if: ${{ failure() }}
      with:
        name: thread-1-2-${{ matrix.compiler.c }}-${{ matrix.arch }}-pcaps
        path: "*.pcap"
    - uses: actions/upload-artifact@v2
      if: ${{ failure() && env.CRASHED == '1' }}
      with:
        name: core-packet-verification-thread-1-2
        path: |
          ./ot-core-dump/*
    - name: Generate Coverage
      run: |
        ./script/test generate_coverage "${{ matrix.compiler.gcov }}"
    - uses: actions/upload-artifact@v2
      with:
        name: cov-thread-1-2-${{ matrix.compiler.c }}-${{ matrix.arch }}
        path: tmp/coverage.info

  packet-verification-low-power:
    runs-on: ubuntu-20.04
    env:
      REFERENCE_DEVICE: 1
      VIRTUAL_TIME: 1
      COVERAGE: 1
      PACKET_VERIFICATION: 1
      THREAD_VERSION: 1.2
      MAC_FILTER: 1
      INTER_OP: 1
      INTER_OP_BBR: 0
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - name: Bootstrap
      run: |
        sudo rm /etc/apt/sources.list.d/* && sudo apt-get update
        sudo apt-get --no-install-recommends install -y g++-multilib python3-setuptools python3-wheel ninja-build lcov
        python3 -m pip install -r tests/scripts/thread-cert/requirements.txt
    - name: Build
      run: |
        ./script/test build
    - name: Get Thread-Wireshark
      run: |
        ./script/test get_thread_wireshark
    - name: Run
      run: |
        ulimit -c unlimited
        ./script/test prepare_coredump_upload
        for i in {1..10}
        do
          ./script/test cert_suite ./tests/scripts/thread-cert/v1_2_LowPower*.py
        done
    - name: Check Crash
      if: ${{ failure() }}
      run: |
          CRASHED=$(./script/test check_crash | tail -1)
          [[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
          echo "CRASHED=$CRASHED" >> $GITHUB_ENV
    - uses: actions/upload-artifact@v2
      if: ${{ failure() }}
      with:
        name: packet-verification-low-power-pcaps
        path: |
          *.pcap
          *.json
    - uses: actions/upload-artifact@v2
      if: ${{ failure() && env.CRASHED == '1' }}
      with:
        name: core-packet-verification-low-power
        path: |
          ./ot-core-dump/*
    - name: Generate Coverage
      run: |
        ./script/test generate_coverage gcc
    - uses: actions/upload-artifact@v2
      with:
        name: cov-packet-verification-low-power
        path: tmp/coverage.info

  packet-verification-1-1-on-1-2:
    runs-on: ubuntu-20.04
    env:
      REFERENCE_DEVICE: 1
      VIRTUAL_TIME: 1
      PACKET_VERIFICATION: 1
      THREAD_VERSION: 1.2
      MULTIPLY: 3
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - name: Bootstrap
      run: |
        sudo rm /etc/apt/sources.list.d/* && sudo apt-get update
        sudo apt-get --no-install-recommends install -y g++-multilib python3-setuptools python3-wheel ninja-build lcov
        python3 -m pip install -r tests/scripts/thread-cert/requirements.txt
    - name: Build
      run: |
        ./script/test build
    - name: Get Thread-Wireshark
      run: |
        ./script/test get_thread_wireshark
    - name: Run
      run: |
        ./script/test cert_suite ./tests/scripts/thread-cert/Cert_*.py ./tests/scripts/thread-cert/test_*.py
    - uses: actions/upload-artifact@v2
      if: ${{ failure() }}
      with:
        name: packet-verification-1.1-on-1.2-pcaps
        path: |
          *.pcap
          *.json
    - name: Generate Coverage
      run: |
        ./script/test generate_coverage gcc
    - uses: actions/upload-artifact@v2
      with:
        name: cov-packet-verification-1-1-on-1-2
        path: tmp/coverage.info

  expects:
    runs-on: ubuntu-20.04
    env:
      COVERAGE: 1
      THREAD_VERSION: 1.2
      VIRTUAL_TIME: 0
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - name: Bootstrap
      run: |
        sudo apt-get --no-install-recommends install -y expect ninja-build lcov socat
    - name: Run RCP Mode
      run: |
        ulimit -c unlimited
        ./script/test prepare_coredump_upload
        OT_OPTIONS=-DOT_READLINE=OFF OT_NODE_TYPE=rcp ./script/test build expect
    - name: Check Crash
      if: ${{ failure() }}
      run: |
          CRASHED=$(./script/test check_crash | tail -1)
          [[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
          echo "CRASHED=$CRASHED" >> $GITHUB_ENV
    - uses: actions/upload-artifact@v2
      if: ${{ failure() && env.CRASHED == '1' }}
      with:
        name: core-expect-1-2
        path: |
          ./ot-core-dump/*
    - name: Generate Coverage
      run: |
        ./script/test generate_coverage gcc
    - uses: actions/upload-artifact@v2
      with:
        name: cov-expects
        path: tmp/coverage.info

  thread-1-2-posix:
    runs-on: ubuntu-20.04
    env:
      COVERAGE: 1
      PYTHONUNBUFFERED: 1
      READLINE: readline
      THREAD_VERSION: 1.2
      OT_NODE_TYPE: rcp
      USE_MTD: 1
      VIRTUAL_TIME: 1
      INTER_OP: 1
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - name: Bootstrap
      run: |
        sudo rm /etc/apt/sources.list.d/* && sudo apt-get update
        sudo apt-get --no-install-recommends install -y libreadline6-dev g++-multilib ninja-build python3-setuptools python3-wheel llvm lcov
        python3 -m pip install -r tests/scripts/thread-cert/requirements.txt
    - name: Build
      run: |
        ./script/test build
    - name: Run
      run: |
        ulimit -c unlimited
        ./script/test prepare_coredump_upload
        ./script/test cert tests/scripts/thread-cert/v1_2_LowPower_5_3_01_SSEDAttachment.py
        ./script/test cert tests/scripts/thread-cert/v1_2_LowPower_6_1_07_PreferringARouterOverAReed.py
        ./script/test cert tests/scripts/thread-cert/v1_2_router_5_1_1.py
        ./script/test cert tests/scripts/thread-cert/v1_2_test_csl_transmission.py
        ./script/test cert tests/scripts/thread-cert/v1_2_test_enhanced_frame_pending.py
        ./script/test cert tests/scripts/thread-cert/v1_2_test_parent_selection.py
    - name: Check Crash
      if: ${{ failure() }}
      run: |
          CRASHED=$(./script/test check_crash | tail -1)
          [[ $CRASHED -eq "1" ]] && echo "Crashed!" || echo "Not crashed."
          echo "CRASHED=$CRASHED" >> $GITHUB_ENV
    - uses: actions/upload-artifact@v2
      if: ${{ failure() }}
      with:
        name: thread-1-2-posix-pcaps
        path: "*.pcap"
    - uses: actions/upload-artifact@v2
      if: ${{ failure() && env.CRASHED == '1' }}
      with:
        name: core-thread-1-2-posix
        path: |
            ./ot-core-dump/*
    - name: Generate Coverage
      run: |
        ./script/test generate_coverage gcc
    - uses: actions/upload-artifact@v2
      with:
        name: cov-thread-1-2-posix
        path: tmp/coverage.info

  upload-coverage:
    needs:
    - thread-1-2
    - packet-verification-low-power
    - packet-verification-1-1-on-1-2
    - expects
    - thread-1-2-posix
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: true
    - name: Bootstrap
      run: |
        sudo apt-get --no-install-recommends install -y lcov
    - uses: actions/download-artifact@v2
      with:
        path: coverage/
    - name: Combine Coverage
      run: |
        script/test combine_coverage
    - name: Upload Coverage
      uses: codecov/codecov-action@v1
      with:
        files: final.info
        fail_ci_if_error: true

  delete-coverage-artifacts:
    needs: upload-coverage
    if: always()
    runs-on: ubuntu-20.04
    steps:
    - uses: geekyeggo/delete-artifact@1-glob-support
      with:
        name: cov-*
        useGlob: true
