Skip to content

Commit

Permalink
test 8
Browse files Browse the repository at this point in the history
  • Loading branch information
thnkslprpt committed Sep 28, 2024
1 parent a05fc30 commit 82af056
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 252 deletions.
110 changes: 3 additions & 107 deletions .github/workflows/build-run-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,112 +4,8 @@ on:
push:
pull_request:

# jobs:
# build-run:
# name: Build and run with startup msg verification
# uses: nasa/cFS/.github/workflows/build-run-app.yml@main


# need this next
# Force bash to apply pipefail option so pipeline failures aren't masked
defaults:
run:
shell: bash

jobs:
# Checks for duplicate actions. Skips push actions if there is a matching or
# duplicate pull-request action.
checks-for-duplicates:
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
should_skip: ${{ steps.skip_check.outputs.should_skip }}
steps:
- id: skip_check
uses: fkirc/skip-duplicate-actions@master
with:
concurrent_skipping: 'same_content'
skip_after_successful_duplicate: 'true'
do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]'

build-and-run:
needs: checks-for-duplicates
if: ${{ needs.checks-for-duplicates.outputs.should_skip != 'true' || contains(github.ref, 'main') }}
name: Build and run app, confirm startup message
runs-on: ubuntu-20.04

steps:
- name: Set up environment variables
# Apps typically use lowercase targets and uppercase names, this logic is fragile but works
run: |
echo "APP_UPPER=$(echo ${{ inputs.app-name }} | sed 's/[a-z]/\U&/g')" >> $GITHUB_ENV
echo "APP_LOWER=$(echo ${{ inputs.app-name }} | sed 's/[A-Z]/\L&/g')" >> $GITHUB_ENV
- name: Set up start string for verification
run: |
if [[ "${{ inputs.startup-string }}" == '' ]]; then
echo "START_STRING=$APP_UPPER Initialized." >> $GITHUB_ENV
else
echo "START_STRING=${{ inputs.startup-string }}" >> $GITHUB_ENV
fi
- name: Checkout Bundle Main
uses: actions/checkout@v4
with:
submodules: true
repository: nasa/cFS

- name: Checkout Repo
uses: actions/checkout@v4
with:
path: apps/${{ env.APP_LOWER }}

- name: Copy Files
run: |
cp ./cfe/cmake/Makefile.sample Makefile
cp -r ./cfe/cmake/sample_defs sample_defs
# - name: Add To Build
# run: |
# sed -i "/list(APPEND MISSION_GLOBAL_APPLIST/a list(APPEND MISSION_GLOBAL_APPLIST $APP_LOWER)" sample_defs/targets.cmake

# - name: Add To Startup
# run: |
# sed -i "1i CFE_APP, $APP_LOWER, ${APP_UPPER}_AppMain, $APP_UPPER, 80, 16384, 0x0, 0;" sample_defs/cpu1_cfe_es_startup.scr
# cat sample_defs/cpu1_cfe_es_startup.scr

- name: Make install
run: make SIMULATION=native BUILDTYPE=release OMIT_DEPRECATED=true install

- name: Run cFS
working-directory: ./build/exe/cpu1
run: |
./core-cpu1 > ../../../cFS_startup_cpu1.txt &
sleep 30
../host/cmdUtil --endian=LE --pktid=0x1806 --cmdcode=2 --half=0x0002
- name: Archive results
uses: actions/upload-artifact@v4
with:
name: cFS_startup_log
path: cFS_startup_cpu1.txt

- name: Confirm startup string
run: |
if [[ -z $(grep "$START_STRING" cFS_startup_cpu1.txt) ]]; then
echo "Startup verification string not found in log: $START_STRING"
echo ""
echo "Possible related event messages:"
grep "/$APP_UPPER " cFS_startup_cpu1.txt
exit -1
fi
build-run:
name: Build and run with startup msg verification
uses: thnkslprpt/cFS/.github/workflows/build-run-app.yml@test

- name: Check for cFS Warnings
if: success() || failure()
run: |
if [[ -n $(grep -i "warn\|err\|fail" cFS_startup_cpu1.txt) ]]; then
echo "cFS startup warn|err|fail:"
echo ""
grep -i 'warn\|err\|fail' cFS_startup_cpu1.txt
exit -1
fi
147 changes: 2 additions & 145 deletions .github/workflows/unit-test-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,151 +3,8 @@ name: Unit Test and Coverage
on:
push:
pull_request:
inputs:
# Optional inputs
# app-name:
# description: Application name, if different from repo name
# type: string
# required: false
# default: ${{ github.event.repository.name }}
max-missed-branches:
description: Maximum number of missed branches
type: number
required: false
default: 0
max-missed-lines:
description: Maximum number of missed lines
type: number
required: false
default: 0

# jobs:
# unit-test-coverage:
# name: Run unit test and coverage
# uses: nasa/cFS/.github/workflows/unit-test-coverage.yml@main

# name: Unit Test and Coverage

# on:
# workflow_call:
# inputs:
# # Optional inputs
# app-name:
# description: Application name, if different from repo name
# type: string
# required: false
# default: ${{ github.event.repository.name }}
# max-missed-branches:
# description: Maximum number of missed branches
# type: number
# required: false
# default: 0
# max-missed-lines:
# description: Maximum number of missed lines
# type: number
# required: false
# default: 0

# # Force bash to apply pipefail option so pipeline failures aren't masked
# defaults:
# run:
# shell: bash

jobs:
# Checks for duplicate actions. Skips push actions if there is a matching or
# duplicate pull-request action.
# checks-for-duplicates:
# runs-on: ubuntu-latest
# # Map a step output to a job output
# outputs:
# should_skip: ${{ steps.skip_check.outputs.should_skip }}
# steps:
# - id: skip_check
# uses: fkirc/skip-duplicate-actions@master
# with:
# concurrent_skipping: 'same_content'
# skip_after_successful_duplicate: 'true'
# do_not_skip: '["pull_request", "workflow_dispatch", "schedule"]'

unit-test-coverage:
# needs: checks-for-duplicates
if: ${{ needs.checks-for-duplicates.outputs.should_skip != 'true' || contains(github.ref, 'main') }}
name: Build, run unit tests and enforce coverage
runs-on: ubuntu-20.04

steps:
- name: Install coverage tools
run: sudo apt-get install lcov -y

# - name: Set up environment variables
# # Apps typically use lowercase targets and uppercase names, this logic is fragile but works
# run: |
# echo "APP_UPPER=$(echo ${{ inputs.app-name }} | sed 's/[a-z]/\U&/g')" >> $GITHUB_ENV
# echo "APP_LOWER=$(echo ${{ inputs.app-name }} | sed 's/[A-Z]/\L&/g')" >> $GITHUB_ENV

- name: Checkout Bundle Main
uses: actions/checkout@v4
with:
submodules: true
repository: nasa/cFS

- name: Checkout Repo
uses: actions/checkout@v4
# with:
# path: apps/${{ env.APP_LOWER }}

- name: Copy Files
run: |
cp ./cfe/cmake/Makefile.sample Makefile
cp -r ./cfe/cmake/sample_defs sample_defs
# - name: Add Repo To Build
# run: |
# sed -i "/list(APPEND MISSION_GLOBAL_APPLIST/a list(APPEND MISSION_GLOBAL_APPLIST $APP_LOWER)" sample_defs/targets.cmake

- name: Make Prep
run: make SIMULATION=native ENABLE_UNIT_TESTS=true OMIT_DEPRECATED=true prep

- name: Build app build dependencies
run: make -C build/tools/elf2cfetbl

# - name: Build app target
# run: |
# make -C build/native/default_cpu1/apps/$APP_LOWER

- name: Capture initial lcov and run test
run: |
lcov --capture --initial --directory build --output-file coverage_base.info
(cd build/native/default_cpu1/apps/sample_app; ctest --verbose) | tee test_results.txt
- name: Calculate coverage
run: |
lcov --capture --rc lcov_branch_coverage=1 --directory build --output-file coverage_test.info
lcov --rc lcov_branch_coverage=1 --add-tracefile coverage_base.info --add-tracefile coverage_test.info --output-file coverage_total.info
genhtml coverage_total.info --branch-coverage --output-directory lcov | tee lcov_out.txt
- name: Confirm minimum coverage
run: |
branch_nums=$(grep -A 3 "Overall coverage rate" lcov_out.txt | grep branches | grep -oP "[0-9]+[0-9]*")
line_nums=$(grep -A 3 "Overall coverage rate" lcov_out.txt | grep lines | grep -oP "[0-9]+[0-9]*")
branch_diff=$(echo $branch_nums | awk '{ print $4 - $3 }')
line_diff=$(echo $line_nums | awk '{ print $4 - $3 }')
if [ $branch_diff -gt ${{ inputs.max-missed-branches }} ] || [ $line_diff -gt ${{ inputs.max-missed-lines }} ]
then
grep -A 3 "Overall coverage rate" lcov_out.txt
echo "$branch_diff branches missed, ${{ inputs.max-missed-branches }} allowed"
echo "$line_diff lines missed, ${{ inputs.max-missed-lines }} allowed"
exit -1
fi
- name: Archive results
# Upload if success or failure which supports skipping, unlike always()
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: Unit test and coverage results
path: |
test_results.txt
lcov_out.txt
lcov
name: Run unit test and coverage
uses: nasa/cFS/.github/workflows/unit-test-coverage.yml@main

0 comments on commit 82af056

Please sign in to comment.