From 667ab68406e40003e30c546123c130ea299c433f Mon Sep 17 00:00:00 2001 From: alexlianides <114772744+alexlianides@users.noreply.github.com> Date: Thu, 18 Jul 2024 13:19:50 -0700 Subject: [PATCH] Dotnet test worfklows (#14) * dotnet test workflows * updated test trigger * remove keep app open for python integration tests * updated build commands * updated pathing * updated deploy-debugshim arguments and dotnet test command * updated commads for deploy and install-depedencies * debug logs * removing tree command * updated names for testing * remove push trigger * removed extra publish action * move install steps prior to tests --------- Co-authored-by: alianides --- .../run-integrationTests-dotnet.yaml | 157 ++++++++++++++++++ .../workflows/test-spacefx-client-dotnet.yaml | 36 ++++ .../integrationTest.py | 3 - 3 files changed, 193 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/run-integrationTests-dotnet.yaml create mode 100644 .github/workflows/test-spacefx-client-dotnet.yaml diff --git a/.github/workflows/run-integrationTests-dotnet.yaml b/.github/workflows/run-integrationTests-dotnet.yaml new file mode 100644 index 0000000..332f82b --- /dev/null +++ b/.github/workflows/run-integrationTests-dotnet.yaml @@ -0,0 +1,157 @@ +name: test-template-spacefx-client-dotnet +on: + workflow_call: + inputs: + WORKFLOW_AGENT: + description: 'The agent to run the job on' + required: true + type: string + app_name: + description: 'The name of the app to test' + default: spacesdk-client + type: string + secrets: + GIT_HUB_USER_NAME: + required: true + GIT_HUB_USER_TOKEN: + required: true + SETUP_REPO_URL: + required: true + + +jobs: + build-and-test: + name: test-spacefx-client-dotnet-${{ inputs.WORKFLOW_AGENT }} + runs-on: ${{ inputs.WORKFLOW_AGENT }} + permissions: + contents: read + issues: read + checks: write + pull-requests: write + + steps: + - uses: microsoft/azure-orbital-space-sdk-github-actions/composite-actions/initialize@main + with: + GIT_HUB_USER_NAME: ${{ secrets.GIT_HUB_USER_NAME }} + GIT_HUB_USER_TOKEN: ${{ secrets.GIT_HUB_USER_TOKEN }} + SETUP_REPO_URL: ${{ secrets.SETUP_REPO_URL }} + + - uses: microsoft/azure-orbital-space-sdk-github-actions/composite-actions/install-publish-dependencies@main + if: inputs.WORKFLOW_AGENT == 'spacesdk-ubuntu-2204LTS-arm64' + + ## Build the Service's Devcontainer and wait for pods to spin up (unnecessary when devcontainer up composite action is available) + - name: Build Devcontainer + shell: bash + run: | + devcontainer up --workspace-folder ${PWD} \ + --workspace-mount-consistency cached \ + --id-label devcontainer.local_folder=${PWD} \ + --default-user-env-probe loginInteractiveShell \ + --build-no-cache \ + --remove-existing-container \ + --mount type=volume,source=vscode,target=/vscode,external=true \ + --update-remote-user-uid-default on \ + --mount-workspace-git-root true + echo $? + + pod_status=$(k3s kubectl get pods -n payload-app -l app=${{ inputs.app_name }} --output=json | jq -r '.items[0].status.phase') + + while [[ -z "$pod_status" || "$pod_status" != "Running" ]]; do + echo "Checking pod statuses..." + pod_status=$(k3s kubectl get pods -n payload-app -l app=${{ inputs.app_name }} --output=json | jq -r '.items[0].status.phase') + + if [[ -z "$pod_status" || "$pod_status" != "Running" ]]; then + echo "One or both pods are not 'Running'. POD: '$pod_status' ..." + k3s kubectl get pods -A + sleep 5 # Wait for 5 seconds before checking again + fi + done + + - name: Build Projects + shell: bash + run: | + [[ ! -f /var/spacedev/tmp/${{ inputs.app_name }}/container_info.json ]] && echo "container_info.json not found. Dev container start up failed" && exit 1 + echo "Calculating container name from container_info.json..." + DEV_CONTAINER_NAME=$(jq -r "${PWD}/.git/logs/${{ inputs.app_name }}.log.stdout" + exec 2>&1 + + k3s kubectl exec -n payload-app deploy/${{ inputs.app_name }} -- bash -c "/workspace/${{ inputs.app_name }}/.git/spacefx-dev/dotnet/dotnet test --verbosity detailed /workspace/${{ inputs.app_name }}/test/integrationTests/bin/Debug/net6.0/integrationTests.dll --logger \"junit;LogFileName=/workspace/${{ inputs.app_name }}/.git/test-results.xml\"" + ) & + + client_pid=$! + + echo "Waiting for the integration test host to finish..." + + client_pid_return_code=0 + wait "$client_pid" + client_pid_return_code=$? + + echo "Client process complete with return code: $client_pid_return_code" + + echo "Outputting logs from the integration test client..." + cat ${PWD}/.git/logs/${{ inputs.app_name }}.log.stdout + echo "" + echo "--------------------" + echo "" + + if [[ ! -f "${PWD}/.git/test-results.xml" ]]; then + echo "Test results file not found." + exit 1 + fi + + if [[ $client_pid_return_code -gt 0 ]]; then + echo "Integration tests failed. Exiting with code 1." + exit 1 + fi + + echo "Test results found." + + # moving test-results.xml to the root of the workspace + mv .git/test-results.xml ${PWD} + + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action/linux@v2 + if: always() + with: + junit_files: test-results.xml \ No newline at end of file diff --git a/.github/workflows/test-spacefx-client-dotnet.yaml b/.github/workflows/test-spacefx-client-dotnet.yaml new file mode 100644 index 0000000..be5369b --- /dev/null +++ b/.github/workflows/test-spacefx-client-dotnet.yaml @@ -0,0 +1,36 @@ +name: test-spacefx-client-dotnet +on: + workflow_dispatch: + pull_request: + branches: [ main ] + +jobs: + test-spacefx-client-dotnet-amd64: + permissions: + contents: read + issues: read + checks: write + pull-requests: write + + uses: ./.github/workflows/run-integrationTests-dotnet.yaml + with: + WORKFLOW_AGENT: ubuntu-latest + secrets: + GIT_HUB_USER_NAME: ${{ secrets.GIT_HUB_USER_NAME }} + GIT_HUB_USER_TOKEN: ${{ secrets.GIT_HUB_USER_TOKEN }} + SETUP_REPO_URL: ${{ secrets.SETUP_REPO_URL }} + + test-spacefx-client-dotnet-arm64: + permissions: + contents: read + issues: read + checks: write + pull-requests: write + + uses: ./.github/workflows/run-integrationTests-dotnet.yaml + with: + WORKFLOW_AGENT: spacesdk-ubuntu-2204LTS-arm64 + secrets: + GIT_HUB_USER_NAME: ${{ secrets.GIT_HUB_USER_NAME }} + GIT_HUB_USER_TOKEN: ${{ secrets.GIT_HUB_USER_TOKEN }} + SETUP_REPO_URL: ${{ secrets.SETUP_REPO_URL }} \ No newline at end of file diff --git a/test/integrationTests_python/integrationTest.py b/test/integrationTests_python/integrationTest.py index 3620976..37c4ae7 100644 --- a/test/integrationTests_python/integrationTest.py +++ b/test/integrationTests_python/integrationTest.py @@ -119,9 +119,6 @@ def main(): link_service() logging_service() - logger.info("Debugging complete! Keeping application open...") - spacefx.client.keep_app_open() - if __name__ == '__main__': main()