# Copyright (c) 2020-2021 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: Tests

on:
    push:
    pull_request:
    workflow_dispatch:

concurrency:
    group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name ==
        'pull_request' && github.event.number) || (github.event_name ==
        'workflow_dispatch' && github.run_number) || github.sha }}
    cancel-in-progress: true

jobs:
    test_suites_linux:
        name: Test Suites - Linux
        timeout-minutes: 120

        strategy:
            matrix:
                build_variant: [no-ble-tsan]
                chip_tool: ["", -same-event-loop]
        env:
            BUILD_VARIANT: ${{matrix.build_variant}}
            CHIP_TOOL_VARIANT: ${{matrix.chip_tool}}
            TSAN_OPTIONS: "halt_on_error=1 suppressions=scripts/tests/chiptest/tsan-linux-suppressions.txt"

        if: github.actor != 'restyled-io[bot]'
        runs-on: ubuntu-latest

        container:
            image: connectedhomeip/chip-build:0.5.56
            options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
                net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1"

        steps:
            - uses: Wandalen/wretry.action@v1.0.11
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      submodules: true
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            - name: Try to ensure the directories for core dumping exist and we
                  can write them.
              run: |
                  mkdir /tmp/cores || true
                  sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true
                  mkdir objdir-clone || true
            - name: Bootstrap
              timeout-minutes: 10
              run: scripts/build/gn_bootstrap.sh
            - name: Uploading bootstrap logs
              uses: actions/upload-artifact@v2
              if: ${{ always() }} && ${{ !env.ACT }}
              with:
                  name: bootstrap-logs-linux-${{ matrix.build_variant }}${{ matrix.chip_tool }}
                  path: |
                      .environment/gn_out/.ninja_log
                      .environment/pigweed-venv/*.log
            - name: Build Apps
              timeout-minutes: 30
              run: |
                  ./scripts/run_in_build_env.sh \
                     "./scripts/build/build_examples.py \
                        --target linux-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT} \
                        --target linux-x64-all-clusters-${BUILD_VARIANT}-test-group \
                        --target linux-x64-door-lock-${BUILD_VARIANT} \
                        --target linux-x64-tv-app-${BUILD_VARIANT} \
                        build \
                        --copy-artifacts-to objdir-clone \
                     "
            - name: Run Tests
              timeout-minutes: 30
              run: |
                  ./scripts/run_in_build_env.sh \
                  "./scripts/tests/run_test_suite.py \
                     --chip-tool ./out/linux-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT}/chip-tool \
                     run \
                     --iterations 1 \
                     --all-clusters-app ./out/linux-x64-all-clusters-${BUILD_VARIANT}-test-group/chip-all-clusters-app \
                     --door-lock-app ./out/linux-x64-door-lock-${BUILD_VARIANT}/chip-door-lock-app \
                     --tv-app ./out/linux-x64-tv-app-${BUILD_VARIANT}/chip-tv-app \
                  "
            - name: Uploading core files
              uses: actions/upload-artifact@v2
              if: ${{ failure() }} && ${{ !env.ACT }}
              with:
                  name: crash-core-linux-${{ matrix.build_variant }}${{ matrix.chip_tool }}
                  path: /tmp/cores/
                  # Cores are big; don't hold on to them too long.
                  retention-days: 5
            - name: Uploading objdir for debugging
              uses: actions/upload-artifact@v2
              if: ${{ failure() }} && ${{ !env.ACT }}
              with:
                  name: crash-objdir-linux-${{ matrix.build_variant }}${{ matrix.chip_tool }}
                  path: objdir-clone/
                  # objdirs are big; don't hold on to them too long.
                  retention-days: 5
    test_suites_darwin:
        name: Test Suites - Darwin
        timeout-minutes: 120

        strategy:
            matrix:
                build_variant: [no-ble-tsan, no-ble-asan]
                chip_tool: ["", -same-event-loop]
        env:
            BUILD_VARIANT: ${{matrix.build_variant}}
            CHIP_TOOL_VARIANT: ${{matrix.chip_tool}}
            TSAN_OPTIONS: "halt_on_error=1"

        if: github.actor != 'restyled-io[bot]'
        runs-on: macos-latest

        steps:
            - uses: Wandalen/wretry.action@v1.0.11
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      submodules: true
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            - name: Setup Environment
              # coreutils for stdbuf
              run: brew install openssl pkg-config coreutils
            - name:
                  Try to ensure the directories for core dumping and diagnostic
                  log collection exist and we can write them.
              run: |
                  sudo chown ${USER} /cores || true
                  mkdir -p ~/Library/Logs/DiagnosticReports || true
                  mkdir objdir-clone || true
            - name: Fix pkgconfig link
              working-directory: /usr/local/lib/pkgconfig
              run: |
                  pwd
                  ls -la /usr/local/Cellar/
                  ls -la /usr/local/Cellar/openssl@1.1
                  OPEN_SSL_VERSION=`ls -la /usr/local/Cellar/openssl@1.1 | cat | tail -n1 | awk '{print $NF}'`
                  ln -s /usr/local/Cellar/openssl@1.1/$OPEN_SSL_VERSION/lib/pkgconfig/* .
            - name: Bootstrap
              timeout-minutes: 25
              run: scripts/build/gn_bootstrap.sh
            - name: Uploading bootstrap logs
              uses: actions/upload-artifact@v2
              if: ${{ always() }} && ${{ !env.ACT }}
              with:
                  name: bootstrap-logs-darwin-${{ matrix.build_variant }}${{ matrix.chip_tool }}
                  path: |
                      .environment/gn_out/.ninja_log
                      .environment/pigweed-venv/*.log
            - name: Build Apps
              timeout-minutes: 30
              run: |
                  ./scripts/run_in_build_env.sh \
                     "./scripts/build/build_examples.py \
                        --target darwin-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT} \
                        --target darwin-x64-all-clusters-${BUILD_VARIANT} \
                        build \
                        --copy-artifacts-to objdir-clone \
                     "
            - name: Run Tests
              timeout-minutes: 45
              run: |
                  ./scripts/run_in_build_env.sh \
                  "./scripts/tests/run_test_suite.py \
                     --chip-tool ./out/darwin-x64-chip-tool-${BUILD_VARIANT}${CHIP_TOOL_VARIANT}/chip-tool \
                     --target-skip-glob '{TestGroupMessaging,DL_*,TV_*}' \
                     run \
                     --iterations 1 \
                     --all-clusters-app ./out/darwin-x64-all-clusters-${BUILD_VARIANT}/chip-all-clusters-app \
                  "
            - name: Uploading core files
              uses: actions/upload-artifact@v2
              if: ${{ failure() }} && ${{ !env.ACT }}
              with:
                  name: crash-core-darwin-${{ matrix.build_variant }}${{ matrix.chip_tool }}
                  path: /cores/
                  # Cores are big; don't hold on to them too long.
                  retention-days: 5
            - name: Uploading diagnostic logs
              uses: actions/upload-artifact@v2
              if: ${{ failure() }} && ${{ !env.ACT }}
              with:
                  name: crash-log-darwin-${{ matrix.build_variant }}${{ matrix.chip_tool }}
                  path: ~/Library/Logs/DiagnosticReports/
            - name: Uploading objdir for debugging
              uses: actions/upload-artifact@v2
              if: ${{ failure() }} && ${{ !env.ACT }}
              with:
                  name: crash-objdir-darwin-${{ matrix.build_variant }}${{ matrix.chip_tool }}
                  path: objdir-clone/
                  # objdirs are big; don't hold on to them too long.
                  retention-days: 5
