Skip to content

Commit

Permalink
Add remote tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaocq2001 committed Nov 21, 2023
1 parent 26585e4 commit a236780
Show file tree
Hide file tree
Showing 554 changed files with 288,678 additions and 0 deletions.
142 changes: 142 additions & 0 deletions .github/workflows/regression_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# The name of the workflow. GitHub displays the names of your
# workflows under your repository's "Action" tab.
name: regression_test

# Controls when the action will run.
on:
# Enable the workflow to be triggered manually.
workflow_dispatch:
# Get inputs
inputs:
# inputs.tests_to_run
tests_to_run:
description: 'all, single or multiple of default_build_coverage error_check_build_full_coverage tracex_enable_build device_buffer_owner_build device_zero_copy_build nofx_build_coverage optimized_build standalone_device_build_coverage standalone_device_buffer_owner_build standalone_device_zero_copy_build standalone_host_build_coverage standalone_build_coverage generic_build otg_support_build memory_management_build_coverage msrc_rtos_build msrc_standalone_build'
required: true
default: 'all'
# Triggers the workflow on push or pull request events but only for the master branch.
pull_request:
branches: [ master ]

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "run_tests".
run_tests:

# Enviroments are used to describe a general deployment target like "production", "staging", or "development".
# When a GitHub Actions workflow deploys to an environment, the environment is displayed on the main page of the repository.
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

# Use "permissions" to modify the default permissions granted to the "GITHUB_TOKEN".
permissions:
# Required by "deploy-pages" action.
pages: write
id-token: write

# Required by "nricoMi/publish-unit-test-result-action" action.
contents: read
issues: read
checks: write
pull-requests: write

# The type of runner that the job will run on.
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job.
steps:
# Check out the repository.
- name: Check out the repository
uses: actions/checkout@v4
with:
submodules: true

# Install software.
- name: Install softwares
run: ./scripts/install.sh

# Build tests.
- name: Build USBX
run: ./scripts/build.sh ${{ inputs.tests_to_run }}

# Run tests.
- name: Test USBX
run: ./scripts/test.sh ${{ inputs.tests_to_run }}

# Use "EnricoMi/publish-unit-test-result-action" action to publish test results.
- name: Publish Test Results
uses: EnricoMi/[email protected]
# By default, if the previous step fails, this step will not be executed.
# Add if condition to run this step even if the previous step fails
if: always()
with:
files: |
./test/cmake/usbx/build/*/*.xml
# Upload test results to artifacts
- name: Upload Test Results
if: success() || failure()
uses: actions/[email protected]
with:
name: test_reports_USBX
path: |
./test/cmake/usbx/build/*.txt
./test/cmake/usbx/build/*/Testing/**/*.xml
- name: Configure GitHub Pages # Enable GitHub Pages and extract various metadata about a site.
uses: actions/[email protected]

# Package and upload GitHub Pages artifact.
- name: Upload GitHub Pages artifact
uses: actions/[email protected]
with:
name: default_build_coverage_USBX
path: ./test/cmake/usbx/coverage_report/default_build_coverage

# Deploing GitHub Pages artifacts.
- name: Deploy GitHub Pages site
id: deployment
uses: actions/[email protected]
with:
artifact_name: default_build_coverage_USBX

# Gegenerate code coverage results summary to code-coverage-results.md
- name: Generate Code Coverage Results Summary
uses: irongut/[email protected]
with:
filename: ./test/cmake/usbx/coverage_report/default_build_coverage.xml
format: markdown
badge: true
hide_complexity: true
output: file

# Create a new markdown file "code-coverage-summary.md".
# Put the coverage summary and report url to the new markdown file.
# Write the coverage summary to job summary.
- name: Write Code Coverage Report URL
run: |
cat code-coverage-results.md > code-coverage-summary.md
echo -e "\n" >> code-coverage-summary.md
echo '[Open Coverage Report](${{ steps.deployment.outputs.page_url }})' >> code-coverage-summary.md
echo "## Coverage Report" >> $GITHUB_STEP_SUMMARY
cat code-coverage-summary.md >> $GITHUB_STEP_SUMMARY
- name: Create CheckRun for Code Coverage # Create check run to publish the code coverage summary to the check summary
uses: LouisBrunner/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: Code Coverage
conclusion: ${{ job.status }}
output: |
{"summary":"Coverage Report"}
output_text_description_file: code-coverage-summary.md

- name: Sticky Pull Request Comment
uses: marocchino/[email protected]
if: github.event_name == 'pull_request'
with:
# Indicate if new comment messages should be appended to previous comment message. Only `true` is allowed. Just skip this item when you don't need it.
append: true # optional, default is false
# glob path to file(s) containing comment message
path: code-coverage-summary.md

Empty file added .gitmodules
Empty file.
2 changes: 2 additions & 0 deletions scripts/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
$(dirname `realpath $0`)/../test/cmake/usbx/run.sh build $@
25 changes: 25 additions & 0 deletions scripts/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash
#
# Install necessary softwares for Ubuntu.

sudo apt-get update
sudo apt-get install -y \
gcc-multilib \
git \
g++ \
python3-pip \
ninja-build \
unifdef \
p7zip-full \
tofrodos \
gawk \
software-properties-common

wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
CODENAME=$(lsb_release -c | cut -f2 -d':' | sed 's/\t//')
sudo apt-add-repository -y "deb https://apt.kitware.com/ubuntu/ $CODENAME main"
sudo apt-get -y install cmake

python3 -m pip install --upgrade pip
pip3 install gcovr==4.1
pip3 install --upgrade cmake
2 changes: 2 additions & 0 deletions scripts/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/bin/bash
CTEST_PARALLEL_LEVEL=4 $(dirname `realpath $0`)/../test/cmake/usbx/run.sh test $@
37 changes: 37 additions & 0 deletions test/cmake/libs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
cmake_minimum_required(VERSION 3.13 FATAL_ERROR)

project(libs LANGUAGES C)

if($ENV{ENABLE_64})
message(STATUS "Building for 64bit")
set(NX_USER_FILE ${CMAKE_CURRENT_SOURCE_DIR}/nx_user.h)
else()
add_compile_options(-m32)
add_link_options(-m32)
message(STATUS "Building for 32bit")
endif()
message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.")

get_filename_component(externals ${CMAKE_CURRENT_SOURCE_DIR}/../../../externals
ABSOLUTE)
add_subdirectory(${externals}/threadx threadx)
add_subdirectory(${externals}/netxduo netxduo)
add_subdirectory(${externals}/filex filex)
target_compile_options(threadx PRIVATE -DTX_ENABLE_EVENT_TRACE)
if(NOT DEFINED ENV{ENABLE_IDLE})
target_compile_options(threadx PRIVATE -DTX_LINUX_NO_IDLE_ENABLE)
endif()
target_compile_options(filex PRIVATE -DFX_ENABLE_EXFAT)

target_compile_options(netxduo PRIVATE -DTX_ENABLE_EVENT_TRACE -DNX_PHYSICAL_HEADER=20)

foreach(lib threadx netxduo filex)
get_target_property(dirs ${lib} INCLUDE_DIRECTORIES)
execute_process(COMMAND mkdir -p ${CMAKE_BINARY_DIR}/inc)
foreach(dir ${dirs})
file(GLOB header_files ${dir}/*.h)
foreach(header_file ${header_files})
execute_process(COMMAND ln -sf ${header_file} ${CMAKE_BINARY_DIR}/inc)
endforeach()
endforeach()
endforeach()
87 changes: 87 additions & 0 deletions test/cmake/libs/nx_user.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/**************************************************************************/
/* */
/* Copyright (c) Microsoft Corporation. All rights reserved. */
/* */
/* This software is licensed under the Microsoft Software License */
/* Terms for Microsoft Azure RTOS. Full text of the license can be */
/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
/* and in the root directory of this software. */
/* */
/**************************************************************************/


/**************************************************************************/
/**************************************************************************/
/** */
/** NetX Component */
/** */
/** User Specific */
/** */
/**************************************************************************/
/**************************************************************************/


/**************************************************************************/
/* */
/* PORT SPECIFIC C INFORMATION RELEASE */
/* */
/* nx_user.h PORTABLE C */
/* 6.0 */
/* */
/* AUTHOR */
/* */
/* Yuxin Zhou, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This file contains user defines for configuring NetX in specific */
/* ways. This file will have an effect only if the application and */
/* NetX library are built with NX_INCLUDE_USER_DEFINE_FILE defined. */
/* Note that all the defines in this file may also be made on the */
/* command line when building NetX library and application objects. */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* 05-19-2020 Yuxin Zhou Initial Version 6.0 */
/* */
/**************************************************************************/

#ifndef NX_USER_H
#define NX_USER_H

/* Define the extension to hold the control block for 64-bit mode. */
#define NX_THREAD_EXTENSION_PTR_SET(a, b) { \
TX_THREAD *thread_ptr; \
thread_ptr = (TX_THREAD *) (a); \
(thread_ptr -> tx_thread_extension_ptr) = (VOID *)(b); \
}
#define NX_THREAD_EXTENSION_PTR_GET(a, b, c) { \
NX_PARAMETER_NOT_USED(c); \
TX_THREAD *thread_ptr; \
thread_ptr = tx_thread_identify(); \
while(1)\
{ \
if (thread_ptr -> tx_thread_extension_ptr) \
{ \
(a) = (b *)(thread_ptr -> tx_thread_extension_ptr); \
break; \
} \
tx_thread_sleep(1); \
} \
}
#define NX_TIMER_EXTENSION_PTR_SET(a, b) { \
TX_TIMER *timer_ptr; \
timer_ptr = (TX_TIMER *) (a); \
(timer_ptr -> tx_timer_internal.tx_timer_internal_extension_ptr) = (VOID *)(b); \
}
#define NX_TIMER_EXTENSION_PTR_GET(a, b, c) { \
NX_PARAMETER_NOT_USED(c); \
if (!_tx_timer_expired_timer_ptr -> tx_timer_internal_extension_ptr) \
return; \
(a) = (b *)(_tx_timer_expired_timer_ptr -> tx_timer_internal_extension_ptr); \
}

#endif

Loading

0 comments on commit a236780

Please sign in to comment.