From 4c04e58c2b4309a58360585e18b5ed587212c8b4 Mon Sep 17 00:00:00 2001 From: Daouda Diakite Date: Mon, 21 Oct 2024 14:57:06 +0200 Subject: [PATCH] Refactor test ci --- .github/workflows/test.yml | 194 ++++++++++-------- .../ArmoniK.Api.Client.Test/mock_test.sh | 50 ----- scripts/mock_test.sh | 42 ++++ 3 files changed, 149 insertions(+), 137 deletions(-) delete mode 100755 packages/csharp/ArmoniK.Api.Client.Test/mock_test.sh create mode 100755 scripts/mock_test.sh diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 24382feb9..7ab1773a0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,30 +11,59 @@ concurrency: cancel-in-progress: true jobs: - csharp: - name: Test C# + test: + name: Test API strategy: fail-fast: false matrix: - dotnet: - - version: '' - framework: net4.7 - - version: '' - framework: net4.8 - - version: 6.0 - framework: net6.0 - - version: 8.0 - framework: net8.0 - platform: - - os: ubuntu-latest - runtime: linux-x64 - - os: windows-2019 - runtime: windows-x64 - - os: windows-2022 - runtime: windows-x64 - handler: - - '' - - GrpcWebHandler + language: + - lang: C# + dir: csharp/ArmoniK.Api.Client.Test + cmd: dotnet test + include: + - lang: C# + dir: csharp/ArmoniK.Api.Client.Test + cmd: dotnet test + dotnet: + version: '' + framework: net4.7 + platform: + os: ubuntu-latest + runtime: linux-x64 + handler: '' + + - lang: C# + dir: csharp/ArmoniK.Api.Client.Test + cmd: dotnet test + dotnet: + version: '' + framework: net4.8 + platform: + os: windows-2019 + runtime: windows-x64 + handler: '' + + - lang: C# + dir: csharp/ArmoniK.Api.Client.Test + cmd: dotnet test + dotnet: + version: 6.0 + framework: net6.0 + platform: + os: ubuntu-latest + runtime: linux-x64 + handler: '' + + - lang: C# + dir: csharp/ArmoniK.Api.Client.Test + cmd: dotnet test + dotnet: + version: 8.0 + framework: net8.0 + platform: + os: windows-2022 + runtime: windows-x64 + handler: GrpcWebHandler exclude: - dotnet: version: '' @@ -46,43 +75,6 @@ jobs: - dotnet: version: 8.0 handler: GrpcWebHandler - endpoint: - - mock_env: - Grpc__Port: 5000 - Http__Port: 4999 - Grpc__Endpoint: http://localhost:5000 - - mock_env: - Grpc__Port: 5001 - Http__Port: 5001 - Http__Cert: certs/server1.pem - Http__Key: certs/server1.key - Grpc__Endpoint: https://localhost:5001 - Grpc__CaCert: server1-ca.pem - - mock_env: - Grpc__Port: 5002 - Http__Port: 5002 - Http__Cert: certs/server2.pem - Http__Key: certs/server2.key - Grpc__Endpoint: https://localhost:5002 - - mock_env: - Grpc__Port: 5003 - Http__Port: 5003 - Http__Cert: certs/server1.pem - Http__Key: certs/server1.key - Http__ClientCert: certs/client-ca.pem - Grpc__Endpoint: https://localhost:5003 - Grpc__CaCert: server1-ca.pem - Grpc__ClientCert: client.pem - Grpc__ClientKey: client.key - - mock_env: - Grpc__Port: 5004 - Http__Port: 5004 - Http__Cert: certs/server2.pem - Http__Key: certs/server2.key - Http__ClientCert: certs/client-ca.pem - Grpc__Endpoint: https://localhost:5004 - Grpc__ClientCert: client.pem - Grpc__ClientKey: client.key runs-on: ${{ matrix.platform.os }} steps: @@ -125,38 +117,66 @@ jobs: dotnet publish -o ../out [ -e ../out/ArmoniK.Api.Mock.exe ] || ln -s ArmoniK.Api.Mock ../out/ArmoniK.Api.Mock.exe - - name: Run Test + - name: noTLS + working-directory: packages/csharp/ + shell: bash + run: | + export Grpc__Port=5000 + export Http__Port=4999 + export Grpc__Endpoint=http://localhost:5000 + ../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }} -f ${{ matrix.dotnet.framework }} --logger "trx;LogFileName=test-results.trx"' + + - name: TLS secure + working-directory: packages/csharp/ + shell: bash + run: | + export Grpc__Port=5001 + export Http__Port=5001 + export Http__Cert=certs/server1.pem + export Http__Key=certs/server1.key + export Grpc__Endpoint=https://localhost:5001 + export Grpc__CaCert=certs/server1-ca.pem + ../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }} -f ${{ matrix.dotnet.framework }} --logger "trx;LogFileName=test-results.trx"' + + - name: TLS store + working-directory: packages/csharp/ + shell: bash + run: | + export Grpc__Port=5002 + export Http__Port=5002 + export Http__Cert=certs/server2.pem + export Http__Key=certs/server2.key + export Grpc__Endpoint=https://localhost:5002 + ../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }} -f ${{ matrix.dotnet.framework }} --logger "trx;LogFileName=test-results.trx"' + + - name: mTLS secure + working-directory: packages/csharp/ + shell: bash + run: | + export Grpc__Port=5003 + export Http__Port=5003 + export Http__Cert=certs/server1.pem + export Http__Key=certs/server1.key + export Http__ClientCert=certs/client-ca.pem + export Grpc__Endpoint=https://localhost:5003 + export Grpc__CaCert=certs/server1-ca.pem + export Grpc__ClientCert=certs/client.pem + export Grpc__ClientKey=certs/client.key + ../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }} -f ${{ matrix.dotnet.framework }} --logger "trx;LogFileName=test-results.trx"' + + - name: mTLS store working-directory: packages/csharp/ shell: bash - env: ${{ matrix.endpoint.mock_env }} run: | - export GrpcClient__HttpMessageHandler=${{ matrix.handler }} - export CertFolder="$PWD/certs" - if [ -n "$Grpc__CaCert" ]; then - export Grpc__CaCert=$CertFolder/$Grpc__CaCert - fi - if [ -n "$Grpc__ClientCert" ]; then - export Grpc__ClientCert=$CertFolder/$Grpc__ClientCert - fi - if [ -n "$Grpc__ClientKey" ]; then - export Grpc__ClientKey=$CertFolder/$Grpc__ClientKey - fi - cd ArmoniK.Api.Client.Test - mock_file="mock_env.env" - test_file="test_env.env" - mock_conf=("Grpc__Port" "Http__Port" "Http__Cert" "Http__Key" "Http__ClientCert") - test_conf=("Grpc__Endpoint" "Grpc__CaCert" "Grpc__ClientCert" "Grpc__ClientKey" "GrpcClient__HttpMessageHandler") - for var in "${test_conf[@]}"; do - if [ -n "${!var}" ]; then - echo "$var=${!var}" >> "$mock_file" - fi - done - for var in "${mock_conf[@]}"; do - if [ -n "${!var}" ]; then - echo "$var=${!var}" >> "$test_file" - fi - done - ./mock_test.sh mock_env.env test_env.env 'dotnet test -f ${{ matrix.dotnet.framework }} --logger "trx;LogFileName=test-results.trx"' + export Grpc__Port=5004 + export Http__Port=5004 + export Http__Cert=certs/server2.pem + export Http__Key=certs/server2.key + export Http__ClientCert=certs/client-ca.pem + export Grpc__Endpoint=https://localhost:5004 + export Grpc__ClientCert=certs/client.pem + export Grpc__ClientKey=certs/client.key + ../../scripts/mock_test.sh ${{ matrix.language.dir }} '${{ matrix.language.cmd }} -f ${{ matrix.dotnet.framework }} --logger "trx;LogFileName=test-results.trx"' - name: Test Report uses: dorny/test-reporter@v1 diff --git a/packages/csharp/ArmoniK.Api.Client.Test/mock_test.sh b/packages/csharp/ArmoniK.Api.Client.Test/mock_test.sh deleted file mode 100755 index 6e701a8df..000000000 --- a/packages/csharp/ArmoniK.Api.Client.Test/mock_test.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash - -if [ $# -lt 3 ]; then - echo "Usage: $0 " - exit 1 -fi - -script_path="$(dirname "${BASH_SOURCE:-$0}")" -script_dir="$(realpath "$script_path/" )" -working_dir="$(realpath "$script_path/../" )" - -MOCK_ENV=$1 -TEST_ENV=$2 -TEST_COMMAND=$3 - -if [ ! -f "$MOCK_ENV" ]; then - echo "Fichier d'environnement $MOCK_ENV introuvable" - exit 1 -fi - -if [ ! -f "$TEST_ENV" ]; then - echo "Fichier d'environnement $TEST_ENV introuvable" - exit 1 -fi - -set -a -source "$MOCK_ENV" -set +a - -cd $working_dir -set +e -set -x -./out/ArmoniK.Api.Mock.exe & - server_pid=$! - sleep 5 - -set -e - -cd $script_dir -set -a -source "$TEST_ENV" -set +a - -$TEST_COMMAND -ret=$? -exit $ret -set +e - -echo $server_pid -kill $server_pid diff --git a/scripts/mock_test.sh b/scripts/mock_test.sh new file mode 100755 index 000000000..2dccffbb9 --- /dev/null +++ b/scripts/mock_test.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +if [ $# -lt 2 ]; then + echo "Usage: $0 " + exit 1 +fi + +script_path="$(dirname "${BASH_SOURCE:-$0}")" +working_dir="$(realpath "$script_path/../packages" )" + +TEST_DIR=$1 +TEST_COMMAND=$2 + +if [ -n "$Grpc__CaCert" ]; then + export Grpc__CaCert=$working_dir/csharp/$Grpc__CaCert +fi +if [ -n "$Grpc__ClientCert" ]; then + export Grpc__ClientCert=$working_dir/csharp/$Grpc__ClientCert +fi +if [ -n "$Grpc__ClientKey" ]; then + export Grpc__ClientKey=$working_dir/csharp/$Grpc__ClientKey +fi + +cd $working_dir/csharp +set +e +set -x +./out/ArmoniK.Api.Mock.exe & + server_pid=$! + sleep 5 + +set -e + +cd $working_dir +cd $TEST_DIR + +$TEST_COMMAND +ret=$? +exit $ret +set +e + +echo $server_pid +kill $server_pid