| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523 |
- name: TaskScheduler Unit Tests
- on:
- push:
- branches: [ master, main ]
- paths:
- - 'examples/**'
- - 'src/**'
- - 'tests/**'
- pull_request:
- branches: [ master, main ]
- paths:
- - 'examples/**'
- - 'src/**'
- - 'tests/**'
- workflow_dispatch:
- jobs:
- test-basic:
- name: Tests of Basic Functionality
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake build-essential libgtest-dev pkg-config
- - name: Build and install Google Test
- run: |
- cd /usr/src/gtest
- sudo cmake .
- sudo cmake --build . --target all
- sudo cp lib/*.a /usr/lib || sudo cp *.a /usr/lib
- - name: Create CMakeLists.txt for Basic Tests
- run: |
- cat > CMakeLists.txt << 'EOF'
- cmake_minimum_required(VERSION 3.10)
- project(TaskSchedulerBasicTests VERSION 1.0.0)
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # Find required packages
- find_package(PkgConfig REQUIRED)
- find_package(Threads REQUIRED)
- # Include directories
- include_directories(${CMAKE_SOURCE_DIR}/src)
- include_directories(${CMAKE_SOURCE_DIR}/tests)
- # Gather source files
- file(GLOB TASKSCHEDULER_SOURCES
- "${CMAKE_SOURCE_DIR}/src/*.cpp"
- "${CMAKE_SOURCE_DIR}/src/*.c"
- )
- # Create the basic test executable
- add_executable(test_basic
- tests/test-scheduler-basic.cpp
- ${TASKSCHEDULER_SOURCES}
- )
- # Link libraries
- target_link_libraries(test_basic
- gtest
- gtest_main
- pthread
- )
- # Compiler definitions for Arduino compatibility
- target_compile_definitions(test_basic PRIVATE
- ARDUINO=300
- )
- # Compiler flags
- target_compile_options(test_basic PRIVATE
- -Wall
- -Wextra
- -O2
- )
- # Enable testing
- enable_testing()
- add_test(NAME BasicTests COMMAND test_basic)
- EOF
- - name: Build basic tests
- run: |
- cmake .
- make -j$(nproc)
- - name: Run basic tests
- run: |
- echo "=== Running Basic Scheduler Tests ==="
- ./test_basic
- test-thorough:
- name: Thorough Scheduler Tests
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake build-essential libgtest-dev pkg-config
- - name: Build and install Google Test
- run: |
- cd /usr/src/gtest
- sudo cmake .
- sudo cmake --build . --target all
- sudo cp lib/*.a /usr/lib || sudo cp *.a /usr/lib
- - name: Create CMakeLists.txt for Thorough Tests
- run: |
- cat > CMakeLists.txt << 'EOF'
- cmake_minimum_required(VERSION 3.10)
- project(TaskSchedulerThoroughTests VERSION 1.0.0)
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # Find required packages
- find_package(PkgConfig REQUIRED)
- find_package(Threads REQUIRED)
- # Include directories
- include_directories(${CMAKE_SOURCE_DIR}/src)
- include_directories(${CMAKE_SOURCE_DIR}/tests)
- # Gather source files
- file(GLOB TASKSCHEDULER_SOURCES
- "${CMAKE_SOURCE_DIR}/src/*.cpp"
- "${CMAKE_SOURCE_DIR}/src/*.c"
- )
- # Create the thorough test executable
- add_executable(test_thorough
- tests/test-scheduler-basic-thorough.cpp
- ${TASKSCHEDULER_SOURCES}
- )
- # Link libraries
- target_link_libraries(test_thorough
- gtest
- gtest_main
- pthread
- )
- # Compiler definitions for Arduino compatibility
- target_compile_definitions(test_thorough PRIVATE
- ARDUINO=300
- )
- # Compiler flags
- target_compile_options(test_thorough PRIVATE
- -Wall
- -Wextra
- -O2
- )
- # Enable testing
- enable_testing()
- add_test(NAME ThoroughTests COMMAND test_thorough)
- EOF
- - name: Build thorough tests
- run: |
- cmake .
- make -j$(nproc)
- - name: Run thorough tests
- run: |
- echo "=== Running Thorough Tests ==="
- ./test_thorough
- test-advanced:
- name: Tests of Advanced Functionality
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake build-essential libgtest-dev pkg-config
- - name: Build and install Google Test
- run: |
- cd /usr/src/gtest
- sudo cmake .
- sudo cmake --build . --target all
- sudo cp lib/*.a /usr/lib || sudo cp *.a /usr/lib
- - name: Create CMakeLists.txt for Advanced Tests
- run: |
- cat > CMakeLists.txt << 'EOF'
- cmake_minimum_required(VERSION 3.10)
- project(TaskSchedulerAdvancedTests VERSION 1.0.0)
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # Find required packages
- find_package(PkgConfig REQUIRED)
- find_package(Threads REQUIRED)
- # Include directories
- include_directories(${CMAKE_SOURCE_DIR}/src)
- include_directories(${CMAKE_SOURCE_DIR}/tests)
- # Gather source files
- file(GLOB TASKSCHEDULER_SOURCES
- "${CMAKE_SOURCE_DIR}/src/*.cpp"
- "${CMAKE_SOURCE_DIR}/src/*.c"
- )
- # Create the advanced test executable
- add_executable(test_advanced
- tests/test-scheduler-advanced-features.cpp
- ${TASKSCHEDULER_SOURCES}
- )
- # Link libraries
- target_link_libraries(test_advanced
- gtest
- gtest_main
- pthread
- )
- # Compiler definitions for Arduino compatibility
- target_compile_definitions(test_advanced PRIVATE
- ARDUINO=300
- )
- # Compiler flags
- target_compile_options(test_advanced PRIVATE
- -Wall
- -Wextra
- -O2
- )
- # Enable testing
- enable_testing()
- add_test(NAME AdvancedTests COMMAND test_advanced)
- EOF
- - name: Build advanced tests
- run: |
- cmake .
- make -j$(nproc)
- - name: Run advanced tests
- run: |
- echo "=== Running Advanced Tests ==="
- ./test_advanced
- test-blink-example:
- name: Tests Based on Blink Example
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake build-essential libgtest-dev pkg-config
- - name: Build and install Google Test
- run: |
- cd /usr/src/gtest
- sudo cmake .
- sudo cmake --build . --target all
- sudo cp lib/*.a /usr/lib || sudo cp *.a /usr/lib
- - name: Create CMakeLists.txt for Blink Example Tests
- run: |
- cat > CMakeLists.txt << 'EOF'
- cmake_minimum_required(VERSION 3.10)
- project(TaskSchedulerBlinkExampleTests VERSION 1.0.0)
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # Find required packages
- find_package(PkgConfig REQUIRED)
- find_package(Threads REQUIRED)
- # Include directories
- include_directories(${CMAKE_SOURCE_DIR}/src)
- include_directories(${CMAKE_SOURCE_DIR}/tests)
- # Gather source files
- file(GLOB TASKSCHEDULER_SOURCES
- "${CMAKE_SOURCE_DIR}/src/*.cpp"
- "${CMAKE_SOURCE_DIR}/src/*.c"
- )
- # Create the blink example test executable
- add_executable(test_blink_example
- tests/test-scheduler-blink-example.cpp
- ${TASKSCHEDULER_SOURCES}
- )
- # Link libraries
- target_link_libraries(test_blink_example
- gtest
- gtest_main
- pthread
- )
- # Compiler definitions for Arduino compatibility
- target_compile_definitions(test_blink_example PRIVATE
- ARDUINO=300
- _TASK_SLEEP_ON_IDLE_RUN
- _TASK_STATUS_REQUEST
- )
- # Compiler flags
- target_compile_options(test_blink_example PRIVATE
- -Wall
- -Wextra
- -O2
- )
- # Enable testing
- enable_testing()
- add_test(NAME BlinkExampleTests COMMAND test_blink_example)
- EOF
- - name: Build blink example tests
- run: |
- cmake .
- make -j$(nproc)
- - name: Run blink example tests
- run: |
- echo "=== Running Blink Example Tests ==="
- ./test_blink_example
- test-priority:
- name: Tests with Layered Priority
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake build-essential libgtest-dev pkg-config
- - name: Build and install Google Test
- run: |
- cd /usr/src/gtest
- sudo cmake .
- sudo cmake --build . --target all
- sudo cp lib/*.a /usr/lib || sudo cp *.a /usr/lib
- - name: Create CMakeLists.txt for Priority Tests
- run: |
- cat > CMakeLists.txt << 'EOF'
- cmake_minimum_required(VERSION 3.10)
- project(TaskSchedulerPriorityTests VERSION 1.0.0)
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # Find required packages
- find_package(PkgConfig REQUIRED)
- find_package(Threads REQUIRED)
- # Include directories
- include_directories(${CMAKE_SOURCE_DIR}/src)
- include_directories(${CMAKE_SOURCE_DIR}/tests)
- # Gather source files
- file(GLOB TASKSCHEDULER_SOURCES
- "${CMAKE_SOURCE_DIR}/src/*.cpp"
- "${CMAKE_SOURCE_DIR}/src/*.c"
- )
- # Create the priority test executable
- add_executable(test_priority
- tests/test-scheduler-priority.cpp
- ${TASKSCHEDULER_SOURCES}
- )
- # Link libraries
- target_link_libraries(test_priority
- gtest
- gtest_main
- pthread
- )
- # Compiler definitions for Arduino compatibility and priority support
- target_compile_definitions(test_priority PRIVATE
- ARDUINO=300
- _TASK_PRIORITY
- )
- # Compiler flags
- target_compile_options(test_priority PRIVATE
- -Wall
- -Wextra
- -O2
- )
- # Enable testing
- enable_testing()
- add_test(NAME PriorityTests COMMAND test_priority)
- EOF
- - name: Build priority tests
- run: |
- cmake .
- make -j$(nproc)
- - name: Run priority tests
- run: |
- echo "=== Running Priority Tests ==="
- ./test_priority
- test-thread-safe:
- name: Tests of Thread-Safe Functionality
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- - name: Install dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake build-essential libgtest-dev pkg-config
- - name: Build and install Google Test
- run: |
- cd /usr/src/gtest
- sudo cmake .
- sudo cmake --build . --target all
- sudo cp lib/*.a /usr/lib || sudo cp *.a /usr/lib
- - name: Create CMakeLists.txt for Thread-Safe Tests
- run: |
- cat > CMakeLists.txt << 'EOF'
- cmake_minimum_required(VERSION 3.10)
- project(TaskSchedulerThreadSafeTests VERSION 1.0.0)
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # Find required packages
- find_package(PkgConfig REQUIRED)
- find_package(Threads REQUIRED)
- # Include directories
- include_directories(${CMAKE_SOURCE_DIR}/src)
- include_directories(${CMAKE_SOURCE_DIR}/tests)
- # Gather source files
- file(GLOB TASKSCHEDULER_SOURCES
- "${CMAKE_SOURCE_DIR}/src/*.cpp"
- "${CMAKE_SOURCE_DIR}/src/*.c"
- )
- # Create the thread-safe test executable
- add_executable(test_thread_safe
- tests/test-scheduler-thread-safe.cpp
- tests/test-queue-impl.cpp
- ${TASKSCHEDULER_SOURCES}
- )
- # Link libraries
- target_link_libraries(test_thread_safe
- gtest
- gtest_main
- pthread
- )
- # Compiler definitions for Arduino compatibility and thread safety
- target_compile_definitions(test_thread_safe PRIVATE
- ARDUINO=300
- _TASK_HEADER_AND_CPP
- _TASK_THREAD_SAFE
- _TASK_STATUS_REQUEST
- _TASK_TIMEOUT
- )
- # Compiler flags
- target_compile_options(test_thread_safe PRIVATE
- -Wall
- -Wextra
- -O2
- -pthread
- )
- # Enable testing
- enable_testing()
- add_test(NAME ThreadSafeTests COMMAND test_thread_safe)
- EOF
- - name: Build thread-safe tests
- run: |
- cmake .
- make -j$(nproc)
- - name: Run thread-safe tests
- run: |
- echo "=== Running Thread-Safe Tests ==="
- ./test_thread_safe
|