02-Run Unit Test #44
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 02-Run Unit Test | |
on: | |
pull_request: | |
branches: | |
- 'main' | |
workflow_dispatch: | |
inputs: | |
Contribute_branch: | |
description: 'Branch to generate firmware' | |
type: string | |
default: 'dev' | |
Validate_branch: | |
description: 'Branch to execute the test' | |
type: string | |
default: 'dev' | |
ADAPTER_SN_MG12: | |
description: 'Adapter serial number of MG12' | |
type: string | |
default: '440189400' | |
HOST_TP_MG12: | |
description: 'Host IP of MG12' | |
type: string | |
default: '192.168.1.118' | |
ADAPTER_SN_MG24: | |
description: 'Adapter serial number of MG24' | |
type: string | |
default: '440111030' | |
HOST_TP_MG24: | |
description: 'Host IP of MG24' | |
type: string | |
default: '192.168.1.69' | |
env: | |
REPO_URL: ${{ github.server_url }}/${{ github.repository }} | |
REPO_BRANCH_BUILD: ${{ github.head_ref || github.ref_name }} | |
REPO_NAME: ${{ github.event.repository.name }} | |
JLINK_PATH: /opt/SEGGER/JLink/libjlinkarm.so | |
SDK_PATH_RUN: /home/sqa/SimplicityStudio/SDKs/gecko_sdk | |
AM_CORRETTO_17: https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.tar.gz | |
SLC_CLI_URL: https://www.silabs.com/documents/login/software/slc_cli_linux.zip | |
COMMANDER_URL: https://www.silabs.com/documents/login/software/SimplicityCommander-Linux.zip | |
GCC_URL: https://developer.arm.com/-/media/Files/downloads/gnu/12.2.rel1/binrel/arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz | |
SIM_REPO: https://github.com/SiliconLabs/simplicity_sdk.git | |
GECKO_SDK_REPO: https://github.com/SiliconLabs/gecko_sdk.git | |
SDK_VER: v4.4.2 | |
JLINK_SEGGER_URL: https://www.segger.com/downloads/jlink/JLink_Linux_x86_64.tgz | |
TASK: gen-only | |
REPO_BRANCH_RUN: main | |
BOARD_NAME_MG12: brd4161a | |
BOARD_NAME_MG24: brd4187c | |
ADAPTER_SN_MG12: ${{ github.event.inputs.ADAPTER_SN_MG12 }} #440189400 | |
ADAPTER_SN_MG24: ${{ github.event.inputs.ADAPTER_SN_MG24 }} #440133193 | |
HOST_IP: 192.168.1.69 | |
TOOL_DIRS_BUILD: arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi/bin | |
COMPILER: GCC | |
TOOL_CHAINS: GCC | |
COMPONENT: all | |
CHIP_MG12: EFR32MG12 | |
CHIP_MG24: EFR32MG24BXXXF1536 | |
TOOL_DIRS_RUN: /home/sqa/SimplicityStudio-5/SimplicityStudio_v5/developer/toolchains/gnu_arm/12.2.rel1_2023.7/bin | |
START_ADDR_FLASH_M12: 0x0000000 | |
START_ADDR_FLASH_M24: 0x8000000 | |
jobs: | |
job1: | |
name: Generate Firmware | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: read | |
pull-requests: write | |
steps: | |
- name: Trigger | |
run: | | |
echo "Triggered by ${{github.event_name}} event" | |
echo "Repo root directory: $GITHUB_WORKSPACE" | |
echo "Current directory: $PWD" | |
- name: Check Branch Input | |
run: | | |
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then | |
if [ -z "${{ github.event.inputs.Contribute_branch }}" ]; then | |
echo "Branch input is required for manual trigger." | |
exit 1 | |
else | |
echo "REPO_BRANCH_BUILD=${{ github.event.inputs.Contribute_branch }}">> $GITHUB_ENV | |
fi | |
fi | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
ref: "${{ github.event_name == 'workflow_dispatch' && github.event.inputs.Contribute_branch || github.ref }}" | |
- name: Log Current Branch and Commit | |
run: | | |
echo "Current branch: $(git rev-parse --abbrev-ref HEAD)" | |
echo "Current commit: $(git rev-parse HEAD)" | |
- name: Install Simplicity SDK | |
if: always() | |
run: | | |
mkdir simplicity_studio | |
cd simplicity_studio | |
git clone $SIM_REPO | |
cd simplicity_sdk | |
# ls -la | |
cd .. | |
# ls -la | |
echo "Current directory: $PWD" | |
ls -la | |
echo "List file in simplicity_sdk folfer" | |
ls -la "/home/runner/work/IEC60730_Libs/IEC60730_Libs/simplicity_sdk" | |
- name: Install Gecko SDK | |
if: always() | |
run: | | |
git clone $GECKO_SDK_REPO gecko_sdk_$SDK_VER | |
cd gecko_sdk_$SDK_VER | |
git checkout tags/$SDK_VER | |
# ls -la | |
mkdir extension | |
cd extension | |
git clone https://github.com/SiliconLabs/IEC60730_Libs.git | |
cd IEC60730_Libs | |
echo "Curent REPO_BRANCH_BUILD is $REPO_BRANCH_BUILD" | |
git checkout $REPO_BRANCH_BUILD | |
# ls -la | |
cd .. | |
# ls -la | |
cd .. | |
# ls -la | |
echo "Current directory: $PWD" | |
ls -la | |
echo "List file in simplicity_sdk folfer" | |
ls -la "/home/runner/work/IEC60730_Libs/IEC60730_Libs/simplicity_sdk" | |
- name: Install Amazon Corretto 17 | |
if: always() | |
run: | | |
wget $AM_CORRETTO_17 | |
tar -xzf amazon-corretto-17-x64-linux-jdk.tar.gz | |
# ls -la | |
echo "Current directory: $PWD" | |
ls -la | |
echo "List file in simplicity_sdk folfer" | |
ls -la "/home/runner/work/IEC60730_Libs/IEC60730_Libs/simplicity_sdk" | |
- name: Install SLC CLI | |
if: always() | |
run: | | |
wget $SLC_CLI_URL | |
unzip slc_cli_linux.zip | |
# ls -la | |
- name: Install Simplicity Commander | |
if: always() | |
run: | | |
wget $COMMANDER_URL | |
unzip SimplicityCommander-Linux.zip | |
cd SimplicityCommander-Linux | |
# ls -la | |
cd .. | |
mkdir commander | |
tar -xf SimplicityCommander-Linux/Commander_linux_x86_64_*.tar.bz commander | |
cd commander | |
# ls -la | |
- name: Install GCC | |
if: always() | |
run: | | |
wget $GCC_URL | |
tar -xf arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi.tar.xz | |
# ls -la | |
cd arm-gnu-toolchain-12.2.rel1-x86_64-arm-none-eabi | |
# ls -la | |
- name: Install Ninja build | |
run: | | |
sudo apt update | |
sudo apt -y install ninja-build | |
ninja --version | |
- name: Install python3.11 | |
if: always() | |
run: | | |
sudo apt update | |
sudo apt upgrade | |
sudo add-apt-repository ppa:deadsnakes/ppa -y | |
sudo apt update | |
sudo apt install python3.11 | |
python3.11 --version | |
which python3.11 | |
cat ~/.bashrc | |
echo "alias python3=python3.11" >> ~/.bashrc | |
echo "alias python3=python3.11" >> ~/.bash_profile | |
cat ~/.bashrc | |
source ~/.bash_profile | |
source ~/.bashrc | |
python3 --version | |
sudo apt install python3.11-full | |
sudo apt install python3-pip | |
- name: Generate image | |
run: | | |
echo "Current directory: $PWD" | |
ls -la | |
echo "List file in simplicity_sdk folfer" | |
ls -la "/home/runner/work/IEC60730_Libs/IEC60730_Libs/simplicity_sdk" | |
export PATH=$PATH:$PWD/commander | |
export PATH=$PATH:$PWD/slc_cli | |
export TOOL_DIRS=$PWD/$TOOL_DIRS_BUILD | |
export PATH=$PATH:/usr/bin/ | |
export SDK_PATH_BUILD=$PWD/gecko_sdk_$SDK_VER | |
export PATH=$PATH:$PWD/amazon-corretto-17.0.12.7.1-linux-x64/bin | |
echo $PATH | |
echo 2 | sudo update-alternatives --config java | |
java --version | |
slc --version | |
slc configuration --sdk=${SDK_PATH_BUILD} | |
ninja --version | |
slc signature trust --sdk $SDK_PATH_BUILD | |
slc configuration -gcc=$TOOL_DIRS_BUILD | |
make prepare | |
echo "Generate MG12 image" | |
cd build | |
slc signature trust -extpath $SDK_PATH_BUILD/extension/IEC60730_Libs | |
echo "Run Cmake" | |
cmake --toolchain ../cmake/toolchain.cmake .. -DENABLE_UNIT_TESTING=ON -DBOARD_NAME=$BOARD_NAME_MG12 | |
make unit_test_info -j4 | |
export HOST_IP=192.168.1.69 | |
cd ../test/ | |
ls -la | |
if [ -z "${{ github.event.inputs.ADAPTER_SN_MG12 }}" ]; then | |
ADAPTER_SN_MG12=440189400 | |
fi | |
echo "Run bash script" | |
bash execute_unit_test.sh $BOARD_NAME_MG12 gen-only $COMPONENT $ADAPTER_SN_MG12 $COMPILER | |
echo "Generate MG24 image" | |
cd ${{ github.workspace }} | |
ls -la | |
mv -v build build_MG12 | |
ls -la | |
rm -rf build | |
make prepare | |
cd build | |
slc signature trust -extpath $SDK_PATH_BUILD/extension/IEC60730_Libs | |
echo "Run Cmake" | |
cmake --toolchain ../cmake/toolchain.cmake .. -DENABLE_UNIT_TESTING=ON -DBOARD_NAME=$BOARD_NAME_MG24 | |
make unit_test_info -j4 | |
cd ../test/ | |
ls -la | |
if [ -z "${{ github.event.inputs.ADAPTER_SN_MG24 }}" ]; then | |
ADAPTER_SN_MG24=440133193 | |
fi | |
echo "Run bash script" | |
bash execute_unit_test.sh $BOARD_NAME_MG24 gen-only $COMPONENT $ADAPTER_SN_MG24 $COMPILER | |
- name: Upload firmware MG12 | |
uses: actions/[email protected] | |
with: | |
name: firmware_mg12_gcc | |
path: ${{ github.workspace }}/build_MG12/ | |
retention-days: 90 | |
- name: Upload firmware MG24 | |
uses: actions/[email protected] | |
with: | |
name: firmware_mg24_gcc | |
path: ${{ github.workspace }}/build/ | |
retention-days: 90 | |
job2: | |
name: Run unit test | |
runs-on: [self-hosted, DS_SQA_HN_01] | |
needs: job1 | |
permissions: | |
contents: read | |
pull-requests: write | |
steps: | |
- name: Trigger | |
run: | | |
echo "Triggered by ${{github.event_name}} event" | |
echo "Repo root directory: $GITHUB_WORKSPACE" | |
echo "Current directory: $PWD" | |
rm -rf ${{ github.workspace }} | |
mkdir ${{ github.workspace }} | |
- name: Check Branch Input | |
run: | | |
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then | |
if [ -z "${{ github.event.inputs.Validate_branch }}" ]; then | |
echo "Validate branch input is required for manual trigger." | |
exit 1 | |
else | |
echo "REPO_BRANCH_RUN=${{ github.event.inputs.Validate_branch }}">> $GITHUB_ENV | |
fi | |
fi | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
ref: "${{ github.event_name == 'workflow_dispatch' && github.event.inputs.Validate_branch || github.ref }}" | |
- name: Log Current Branch and Commit | |
run: | | |
echo "Current branch: $(git rev-parse --abbrev-ref HEAD)" | |
echo "Current commit: $(git rev-parse HEAD)" | |
- name: Add extension | |
run: | | |
cd $SDK_PATH_RUN | |
cd extension | |
ls -la | |
rm -rd $REPO_NAME || true | |
git clone $REPO_URL | |
ls -la | |
cd $REPO_NAME | |
echo "Curent REPO_BRANCH_RUN is $REPO_BRANCH_RUN" | |
git checkout $REPO_BRANCH_RUN | |
ls -la | |
- name: Create build folder | |
run: | | |
make prepare | |
#mkdir -p ${{ github.workspace }}/build/test/unit_test/build | |
- name: Install jq (if needed) | |
run: | | |
jq -V | |
#sudo apt-get install jq -y | |
- name: Download output for MG12 from Job 1 | |
run: | | |
export PAT="${{ secrets.SILABS_THIEUVU_PAT}}" | |
export REPO_OWNER="SiliconLabs" | |
export REPO_NAME="IEC60730_Libs" | |
export RUN_ID="${{ github.run_id }}" | |
export ARTIFACT_NAME="firmware_mg12_gcc" | |
ARTIFACT_URL=$(curl -s -H "Authorization: token $PAT" \ | |
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/actions/runs/$RUN_ID/artifacts" | \ | |
jq -r ".artifacts[] | select(.name==\"$ARTIFACT_NAME\") | .archive_download_url") | |
if [ -z "$ARTIFACT_URL" ]; then | |
echo "Artifact not found for run ID $RUN_ID." | |
exit 1 | |
fi | |
curl -L -o firmware_mg12_gcc.zip -H "Authorization: token $PAT" "$ARTIFACT_URL" | |
if [ $? -eq 0 ] && [ -f "firmware_mg12_gcc.zip" ]; then | |
echo "Download successful" | |
mv firmware_mg12_gcc.zip ./build/ | |
unzip ./build/firmware_mg12_gcc.zip -d ./build/ | |
ls -R | |
else | |
echo "Download failed" | |
exit 1 | |
fi | |
- name: Download output for MG24 from Job 1 | |
run: | | |
export PAT="${{ secrets.SILABS_THIEUVU_PAT}}" | |
export REPO_OWNER="SiliconLabs" | |
export REPO_NAME="IEC60730_Libs" | |
export RUN_ID="${{ github.run_id }}" | |
export ARTIFACT_NAME="firmware_mg24_gcc" | |
ARTIFACT_URL=$(curl -s -H "Authorization: token $PAT" \ | |
"https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/actions/runs/$RUN_ID/artifacts" | \ | |
jq -r ".artifacts[] | select(.name==\"$ARTIFACT_NAME\") | .archive_download_url") | |
if [ -z "$ARTIFACT_URL" ]; then | |
echo "Artifact not found for run ID $RUN_ID." | |
exit 1 | |
fi | |
curl -L -o firmware_mg24_gcc.zip -H "Authorization: token $PAT" "$ARTIFACT_URL" | |
if [ $? -eq 0 ] && [ -f "firmware_mg24_gcc.zip" ]; then | |
echo "Download successful" | |
else | |
echo "Download failed" | |
exit 1 | |
fi | |
- name: Run test | |
run: | | |
export PATH=$PATH:~/SimplicityStudio-5/SimplicityStudio_v5/developer/adapter_packs/commander | |
export PATH=$PATH:~/slc_cli | |
export PATH=$PATH:/usr/bin/ | |
export PATH=$PATH:~/amazon-corretto-17.0.12.7.1-linux-x64/bin | |
export LST_PATH=$PWD/build/test/integration_test/build/${BOARD_NAME}/integration_test_iec60730_watchdog/S | |
slc configuration --sdk=${SDK_PATH_RUN} | |
ninja --version | |
slc signature trust --sdk $SDK_PATH_RUN | |
slc configuration -gcc=$TOOL_DIRS_RUN | |
# make prepare | |
echo "Run unit test for MG12" | |
cd build | |
cmake --toolchain ../cmake/toolchain.cmake .. -DENABLE_UNIT_TESTING=ON -DBOARD_NAME=$BOARD_NAME_MG12 | |
make unit_test_info -j4 | |
slc signature trust -extpath $SDK_PATH_RUN/extension/$REPO_NAME | |
cd ../test | |
if [ -z "${{ github.event.inputs.ADAPTER_SN_MG12 }}" ]; then | |
ADAPTER_SN_MG12=440189400 | |
fi | |
if [ -z "${{ github.event.inputs.HOST_IP_MG12 }}" ]; then | |
HOST_IP_MG12=192.168.1.118 | |
fi | |
export HOST_IP=$HOST_IP_MG12 | |
export FLASH_REGIONS_TEST=$START_ADDR_FLASH_M12 | |
mkdir log_MG12 | |
echo "bash execute_unit_test.sh $BOARD_NAME_MG12 run-only all $ADAPTER_SN_MG12 $COMPILER" | |
bash execute_unit_test.sh $BOARD_NAME_MG12 run-only all $ADAPTER_SN_MG12 $COMPILER 2>&1 | tee log_MG12/Unit_Test_MG12.txt | |
#echo 'bash execute_unit_test.sh $BOARD_NAME $TASK $COMPONENTS $ADAPTER_SN $COMPILER "-DENABLE_CAL_CRC_32=ON"' > log/Test_integration_$BOARD_NAME_GCC_2.txt | |
#echo 'bash execute_unit_test.sh $BOARD_NAME $TASK $COMPONENTS $ADAPTER_SN $COMPILER "-DENABLE_CRC_USE_SW=ON"' > log/Test_integration_$BOARD_NAME_GCC_3.txt | |
#echo 'bash execute_unit_test.sh $BOARD_NAME $TASK $COMPONENTS $ADAPTER_SN $COMPILER "-DENABLE_CRC_USE_SW=ON -DENABLE_SW_CRC_TABLE=ON"' > log/Test_integration_$BOARD_NAME_GCC_4.txt | |
#echo 'bash execute_unit_test.sh $BOARD_NAME $TASK $COMPONENTS $ADAPTER_SN $COMPILER "-DENABLE_CRC_USE_SW=ON -DENABLE_SW_CRC_TABLE=ON -DENABLE_CAL_CRC_32=ON"' > log/Test_integration_$BOARD_NAME_GCC_5.txt | |
#echo 'bash execute_unit_test.sh $BOARD_NAME $TASK $COMPONENTS $ADAPTER_SN $COMPILER "-DENABLE_CRC_USE_SW=ON -DENABLE_CAL_CRC_32=ON"' > log/Test_integration_$BOARD_NAME_GCC_5.txt | |
echo "Run unit test for MG24" | |
cd ${{ github.workspace }} | |
ls -la | |
# rm -rf build | |
make prepare | |
mv firmware_mg24_gcc.zip ./build/ | |
unzip ./build/firmware_mg24_gcc.zip -d ./build/ | |
ls -R | |
cd build | |
cmake --toolchain ../cmake/toolchain.cmake .. -DENABLE_UNIT_TESTING=ON -DBOARD_NAME=$BOARD_NAME_MG24 | |
make unit_test_info -j4 | |
slc signature trust -extpath $SDK_PATH_RUN/extension/$REPO_NAME | |
cd ../test | |
if [ -z "${{ github.event.inputs.ADAPTER_SN_MG12 }}" ]; then | |
ADAPTER_SN_MG12=440189400 | |
fi | |
if [ -z "${{ github.event.inputs.HOST_IP_MG24 }}" ]; then | |
HOST_IP_MG24=192.168.1.69 | |
fi | |
export HOST_IP=$HOST_IP_MG24 | |
export FLASH_REGIONS_TEST=$START_ADDR_FLASH_M24 | |
mkdir log_MG24 | |
echo "bash execute_unit_test.sh $BOARD_NAME_MG24 run-only all $ADAPTER_SN_MG24 $COMPILER" | |
bash execute_unit_test.sh $BOARD_NAME_MG24 run-only all $ADAPTER_SN_MG24 $COMPILER 2>&1 | tee log_MG24/Unit_Test_MG24.txt | |
- name: Upload artifact MG12 | |
uses: actions/[email protected] | |
with: | |
name: unit_test_log_mg12_gcc | |
path: ${{ github.workspace }}/test/log_MG12/ | |
retention-days: 90 | |
- name: Upload artifact MG24 | |
uses: actions/[email protected] | |
with: | |
name: unit_test_log_mg24_gcc | |
path: ${{ github.workspace }}/test/log_MG24/ | |
retention-days: 90 |