blob: 3654bb63e88e2b7c26247c8a4cb47b8cdb7e8a87 [file] [log] [blame]
---
# 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"