Add bbsim-tests action
This is for the initial action. Workflow to follow.
Signed-off-by: Eric Ball <eball@linuxfoundation.org>
Change-Id: I70f46f6e8933a2a8a465c7b6b96767e8ee618c97
diff --git a/.github/actions/bbsim-tests/example-workflow.yaml b/.github/actions/bbsim-tests/example-workflow.yaml
new file mode 100644
index 0000000..3654bb6
--- /dev/null
+++ b/.github/actions/bbsim-tests/example-workflow.yaml
@@ -0,0 +1,362 @@
+---
+# SPDX-License-Identifier: Apache-2.0
+# SPDX-FileCopyrightText: 2025 Open Networking Foundation Contributors
+
+name: BBSim Tests Example
+
+on:
+ # Run on push to main branches
+ push:
+ branches:
+ - master
+ - "voltha-*"
+
+ # Run on pull requests
+ pull_request:
+ branches:
+ - master
+ - "voltha-*"
+
+ # Allow manual triggering with custom parameters
+ workflow_dispatch:
+ inputs:
+ branch:
+ description: "Branch to test"
+ required: true
+ default: "master"
+ type: choice
+ options:
+ - master
+ - voltha-2.15
+ workflow_type:
+ description: "Workflow to test"
+ required: true
+ default: "all"
+ type: choice
+ options:
+ - all
+ - dt
+ - att
+ - tt
+ log_level:
+ description: "Log level"
+ required: false
+ default: "WARN"
+ type: choice
+ options:
+ - DEBUG
+ - INFO
+ - WARN
+ - ERROR
+ with_monitoring:
+ description: "Enable monitoring"
+ required: false
+ default: false
+ type: boolean
+
+ # Run nightly
+ schedule:
+ - cron: "0 2 * * *" # 2 AM UTC daily
+
+jobs:
+ # -----------------------------------------------------------------------
+ # Job: DT Workflow Tests
+ # -----------------------------------------------------------------------
+ dt-tests:
+ name: DT Workflow Tests
+ runs-on: ubuntu-latest
+ timeout-minutes: 240
+ if: |
+ github.event_name == 'schedule' ||
+ (github.event_name == 'workflow_dispatch' &&
+ (github.event.inputs.workflow_type == 'dt' || github.event.inputs.workflow_type == 'all')) ||
+ github.event_name == 'push' ||
+ github.event_name == 'pull_request'
+
+ steps:
+ - name: Free up disk space
+ run: |
+ echo "Disk space before cleanup:"
+ df -h
+
+ # Remove unnecessary software
+ sudo rm -rf /usr/share/dotnet
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /usr/local/share/boost
+ sudo rm -rf "$AGENT_TOOLSDIRECTORY"
+
+ echo "Disk space after cleanup:"
+ df -h
+
+ - name: Run DT BBSim Tests
+ uses: opencord/shared-workflows/.github/actions/bbsim-tests@main
+ with:
+ branch: ${{ github.event.inputs.branch || 'master' }}
+ log-level: ${{ github.event.inputs.log_level || 'WARN' }}
+ with-monitoring: ${{ github.event.inputs.with_monitoring || false }}
+ test-targets: |
+ - target: functional-single-kind-dt
+ workflow: dt
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+
+ - name: Upload test results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: dt-test-results-${{ github.run_id }}
+ path: logs/
+ retention-days: 30
+
+ # -----------------------------------------------------------------------
+ # Job: ATT Workflow Tests
+ # -----------------------------------------------------------------------
+ att-tests:
+ name: ATT Workflow Tests
+ runs-on: ubuntu-latest
+ timeout-minutes: 240
+ if: |
+ github.event_name == 'schedule' ||
+ (github.event_name == 'workflow_dispatch' &&
+ (github.event.inputs.workflow_type == 'att' || github.event.inputs.workflow_type == 'all'))
+
+ steps:
+ - name: Free up disk space
+ run: |
+ echo "Disk space before cleanup:"
+ df -h
+
+ sudo rm -rf /usr/share/dotnet
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /usr/local/share/boost
+ sudo rm -rf "$AGENT_TOOLSDIRECTORY"
+
+ echo "Disk space after cleanup:"
+ df -h
+
+ - name: Run ATT BBSim Tests
+ uses: opencord/shared-workflows/.github/actions/bbsim-tests@main
+ with:
+ branch: ${{ github.event.inputs.branch || 'master' }}
+ log-level: ${{ github.event.inputs.log_level || 'WARN' }}
+ with-monitoring: ${{ github.event.inputs.with_monitoring || false }}
+ test-targets: |
+ - target: functional-single-kind-att
+ workflow: att
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+
+ - name: Upload test results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: att-test-results-${{ github.run_id }}
+ path: logs/
+ retention-days: 30
+
+ # -----------------------------------------------------------------------
+ # Job: TT Workflow Tests
+ # -----------------------------------------------------------------------
+ tt-tests:
+ name: TT Workflow Tests
+ runs-on: ubuntu-latest
+ timeout-minutes: 240
+ if: |
+ github.event_name == 'schedule' ||
+ (github.event_name == 'workflow_dispatch' &&
+ (github.event.inputs.workflow_type == 'tt' || github.event.inputs.workflow_type == 'all'))
+
+ steps:
+ - name: Free up disk space
+ run: |
+ echo "Disk space before cleanup:"
+ df -h
+
+ sudo rm -rf /usr/share/dotnet
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /usr/local/share/boost
+ sudo rm -rf "$AGENT_TOOLSDIRECTORY"
+
+ echo "Disk space after cleanup:"
+ df -h
+
+ - name: Run TT BBSim Tests
+ uses: opencord/shared-workflows/.github/actions/bbsim-tests@main
+ with:
+ branch: ${{ github.event.inputs.branch || 'master' }}
+ log-level: ${{ github.event.inputs.log_level || 'WARN' }}
+ with-monitoring: ${{ github.event.inputs.with_monitoring || false }}
+ test-targets: |
+ - target: functional-single-kind-tt
+ workflow: tt
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+
+ - name: Upload test results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: tt-test-results-${{ github.run_id }}
+ path: logs/
+ retention-days: 30
+
+ # -----------------------------------------------------------------------
+ # Job: Multi-workflow Tests (run multiple workflows in sequence)
+ # -----------------------------------------------------------------------
+ multi-workflow-tests:
+ name: Multi-Workflow Tests
+ runs-on: ubuntu-latest
+ timeout-minutes: 480
+ if: github.event_name == 'workflow_dispatch' && github.event.inputs.workflow_type == 'all'
+
+ steps:
+ - name: Free up disk space
+ run: |
+ echo "Disk space before cleanup:"
+ df -h
+
+ sudo rm -rf /usr/share/dotnet
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /usr/local/share/boost
+ sudo rm -rf "$AGENT_TOOLSDIRECTORY"
+
+ echo "Disk space after cleanup:"
+ df -h
+
+ - name: Run All Workflow Tests
+ uses: opencord/shared-workflows/.github/actions/bbsim-tests@main
+ with:
+ branch: ${{ github.event.inputs.branch || 'master' }}
+ log-level: ${{ github.event.inputs.log_level || 'INFO' }}
+ with-monitoring: true
+ olts: "2"
+ test-targets: |
+ - target: sanity-single-kind
+ workflow: dt
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+ - target: functional-single-kind-dt
+ workflow: dt
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+ - target: functional-single-kind-att
+ workflow: att
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+ - target: functional-single-kind-tt
+ workflow: tt
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+
+ - name: Upload test results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: multi-workflow-test-results-${{ github.run_id }}
+ path: logs/
+ retention-days: 30
+
+ # -----------------------------------------------------------------------
+ # Job: Test Gerrit Patch
+ # -----------------------------------------------------------------------
+ test-patch:
+ name: Test Gerrit Patch
+ runs-on: ubuntu-latest
+ timeout-minutes: 240
+ # Only run when triggered manually with patch information
+ if: |
+ github.event_name == 'workflow_dispatch' &&
+ github.event.inputs.gerrit_project != '' &&
+ github.event.inputs.gerrit_refspec != ''
+
+ steps:
+ - name: Free up disk space
+ run: |
+ sudo rm -rf /usr/share/dotnet
+ sudo rm -rf /opt/ghc
+ sudo rm -rf /usr/local/share/boost
+ sudo rm -rf "$AGENT_TOOLSDIRECTORY"
+
+ - name: Test Patch with BBSim
+ uses: opencord/shared-workflows/.github/actions/bbsim-tests@main
+ with:
+ branch: ${{ github.event.inputs.branch || 'master' }}
+ gerrit-project: ${{ github.event.inputs.gerrit_project }}
+ gerrit-refspec: ${{ github.event.inputs.gerrit_refspec }}
+ log-level: DEBUG
+ test-targets: |
+ - target: sanity-single-kind
+ workflow: dt
+ flags: ""
+ teardown: true
+ logging: true
+ vgcEnabled: false
+
+ - name: Upload test results
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: patch-test-results-${{ github.run_id }}
+ path: logs/
+ retention-days: 30
+
+ # -----------------------------------------------------------------------
+ # Job: Report Results
+ # -----------------------------------------------------------------------
+ report:
+ name: Test Results Summary
+ runs-on: ubuntu-latest
+ needs: [dt-tests, att-tests, tt-tests]
+ if: always()
+
+ steps:
+ - name: Download all artifacts
+ uses: actions/download-artifact@v4
+ with:
+ path: all-results
+
+ - name: Generate summary report
+ run: |
+ echo "# BBSim Test Results Summary" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo "## Test Execution" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ echo "| Job | Status |" >> $GITHUB_STEP_SUMMARY
+ echo "|-----|--------|" >> $GITHUB_STEP_SUMMARY
+ echo "| DT Tests | ${{ needs.dt-tests.result }} |" >> $GITHUB_STEP_SUMMARY
+ echo "| ATT Tests | ${{ needs.att-tests.result }} |" >> $GITHUB_STEP_SUMMARY
+ echo "| TT Tests | ${{ needs.tt-tests.result }} |" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+
+ # List available artifacts
+ echo "## Artifacts" >> $GITHUB_STEP_SUMMARY
+ echo "" >> $GITHUB_STEP_SUMMARY
+ if [ -d "all-results" ]; then
+ find all-results -type f -name "*.html" | while read file; do
+ echo "- $(basename $file)" >> $GITHUB_STEP_SUMMARY
+ done
+ fi
+
+ - name: Check overall status
+ run: |
+ if [[ "${{ needs.dt-tests.result }}" != "success" ]] || \
+ [[ "${{ needs.att-tests.result }}" != "success" && "${{ needs.att-tests.result }}" != "skipped" ]] || \
+ [[ "${{ needs.tt-tests.result }}" != "success" && "${{ needs.tt-tests.result }}" != "skipped" ]]; then
+ echo "One or more test jobs failed"
+ exit 1
+ fi
+ echo "All executed tests passed successfully"