80 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| # Copyright (c) 2021-2025 Barcelona Supercomputing Center (BSC)
 | |
| # SPDX-License-Identifier: GPL-3.0-or-later
 | |
| 
 | |
| if(NOT NOSV_FOUND)
 | |
|   if(ENABLE_ALL_TESTS)
 | |
|     message(FATAL_ERROR "nOS-V not found, cannot enable nOS-V RT tests")
 | |
|   else()
 | |
|     message(STATUS "nOS-V not found, disabling nOS-V RT tests")
 | |
|   endif()
 | |
|   return()
 | |
| endif()
 | |
| 
 | |
| # Needed for nosv_cond
 | |
| if("${NOSV_VERSION}" VERSION_LESS "3.1.0")
 | |
|   message(FATAL_ERROR "nOS-V version ${NOSV_VERSION} too old, required at least 3.1.0")
 | |
| endif()
 | |
| 
 | |
| message(STATUS "Enabling nOS-V RT tests")
 | |
| 
 | |
| function(nosv_test)
 | |
|   set(switches "")
 | |
|   set(single LEVEL)
 | |
|   set(multi "")
 | |
|   cmake_parse_arguments(
 | |
|     NOSV_TEST "${switches}" "${single}" "${multi}" ${ARGN})
 | |
|   ovni_test(${ARGN})
 | |
|   target_link_libraries("${OVNI_TEST_NAME}" PRIVATE PkgConfig::NOSV m)
 | |
|   set_property(TEST "${OVNI_TEST_NAME}" APPEND
 | |
|     PROPERTY
 | |
|       ENVIRONMENT "NOSV_CONFIG=${OVNI_TEST_SOURCE_DIR}/rt/nosv/nosv.toml")
 | |
|   if(DEFINED NOSV_TEST_LEVEL)
 | |
|     set_property(TEST "${OVNI_TEST_NAME}" APPEND PROPERTY
 | |
|       ENVIRONMENT "NOSV_CONFIG_OVERRIDE=ovni.level=${NOSV_TEST_LEVEL}")
 | |
|   endif()
 | |
| endfunction()
 | |
| 
 | |
| nosv_test(attach.c SORT)
 | |
| nosv_test(waitfor.c SORT)
 | |
| nosv_test(several-tasks.c SORT)
 | |
| nosv_test(init-nested.c SORT)
 | |
| nosv_test(parallel-tasks.c SORT)
 | |
| nosv_test(inline.c SORT)
 | |
| nosv_test(mutex.c SORT LEVEL 3)
 | |
| nosv_test(barrier.c SORT LEVEL 3)
 | |
| nosv_test(cond.c SORT LEVEL 3)
 | |
| nosv_test(yield-noisy.c NAME "yield-noisy-l3" DRIVER "yield-noisy-l3.driver.sh")
 | |
| nosv_test(yield-noisy.c NAME "yield-noisy-l4" DRIVER "yield-noisy-l4.driver.sh")
 | |
| nosv_test(resubmit-race.c SORT)
 | |
| 
 | |
| # Test multiple instrumentation levels
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-level-0 LEVEL 0)
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-level-1 LEVEL 1)
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-level-2 LEVEL 2)
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-level-3 LEVEL 3)
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-level-4 LEVEL 4)
 | |
| 
 | |
| # Same but with breakdown enabled
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-breakdown-level-0 LEVEL 0 BREAKDOWN
 | |
|   REGEX "cannot enable breakdown for nOS-V model")
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-breakdown-level-1 LEVEL 1 BREAKDOWN
 | |
|   REGEX "cannot enable breakdown for nOS-V model")
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-breakdown-level-2 LEVEL 2 BREAKDOWN
 | |
|   REGEX "cannot enable breakdown for nOS-V model")
 | |
| # From level 3 up the breakdown can be enabled
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-breakdown-level-3 LEVEL 3 BREAKDOWN)
 | |
| nosv_test(several-tasks.c SORT NAME several-tasks-breakdown-level-4 LEVEL 4 BREAKDOWN)
 | |
| 
 | |
| nosv_test(several-tasks.c NAME hwc-tasks DRIVER "hwc.driver.sh")
 | |
| nosv_test(hwc-stride.c DRIVER "hwc-stride.driver.sh")
 | |
| 
 | |
| if (PERF_PARANOID_KERNEL)
 | |
|   message(STATUS "Enabling perf paranoid tests for nOS-V")
 | |
|   nosv_test(kernel.c NAME kernel-overflow DRIVER "kernel-overflow.driver.sh")
 | |
|   nosv_test(kernel.c NAME kernel-normal   DRIVER "kernel-normal.driver.sh")
 | |
| elseif(ENABLE_ALL_TESTS)
 | |
|   message(FATAL_ERROR "Cannot enable perf paranoid tests for nOS-V")
 | |
| else()
 | |
|   message(STATUS "Disabling perf paranoid tests for nOS-V")
 | |
| endif()
 |