56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| target=$OVNI_TEST_BIN
 | |
| 
 | |
| # We will set our own
 | |
| unset NOSV_CONFIG
 | |
| unset NOSV_CONFIG_OVERRIDE
 | |
| 
 | |
| export NOSV_APPID=1
 | |
| 
 | |
| # Small kernel ring size to make execution fast
 | |
| ringsize=$((64*1024))
 | |
| 
 | |
| # Each CS event pair occupies 16 bytes.
 | |
| cspair=32
 | |
| 
 | |
| # How many CS event pairs fit in the ring buffer?
 | |
| navail=$(($ringsize / $cspair))
 | |
| 
 | |
| # For the test, write 8 times the ring buffer
 | |
| ncs=$((8 * $navail))
 | |
| 
 | |
| # Flush the kernel after overflowing the ring buffer, by writing to it twice the
 | |
| # ring size
 | |
| nflush=$((2 * $ringsize / $cspair))
 | |
| 
 | |
| cat > nosv.toml << EOF
 | |
| instrumentation.version = "ovni"
 | |
| ovni.level = 3
 | |
| ovni.kernel_ringsize = "${ringsize}"
 | |
| EOF
 | |
| 
 | |
| # Should fail in runtime
 | |
| set +e
 | |
| $target $ncs $nflush 2> err.log
 | |
| rc=$?
 | |
| set -e
 | |
| 
 | |
| # Dump log
 | |
| cat err.log
 | |
| 
 | |
| # Ensure no nOS-V warnings at runtime
 | |
| if grep -c "cannot enable kernel events" err.log; then
 | |
|   echo "cannot enable kernel events in all threads" >&2
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| # Ensure it detects the error
 | |
| if ! grep -c "Kernel events lost" err.log; then
 | |
|   echo "cannot find 'Kernel events lost' error message" >&2
 | |
|   exit 1
 | |
| fi
 | |
| 
 | |
| if [ "$rc" == "0" ]; then
 | |
|   echo "program didn't failed" >&2
 | |
|   exit 1
 | |
| fi
 |