Skip to content

Commit

Permalink
Refactor test ci
Browse files Browse the repository at this point in the history
  • Loading branch information
ddiakiteaneo committed Oct 22, 2024
1 parent e191590 commit 4c04e58
Show file tree
Hide file tree
Showing 3 changed files with 149 additions and 137 deletions.
194 changes: 107 additions & 87 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: ''
Expand All @@ -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:
Expand Down Expand Up @@ -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
Expand Down
50 changes: 0 additions & 50 deletions packages/csharp/ArmoniK.Api.Client.Test/mock_test.sh

This file was deleted.

42 changes: 42 additions & 0 deletions scripts/mock_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/bash

if [ $# -lt 2 ]; then
echo "Usage: $0 <test_dir> <test_command>"
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

0 comments on commit 4c04e58

Please sign in to comment.