diff options
author | Douglas Wilson <douglas.wilson@gmail.com> | 2021-11-26 13:04:00 +0000 |
---|---|---|
committer | Douglas Wilson <douglas.wilson@gmail.com> | 2021-12-13 14:07:04 +0000 |
commit | 4cf215d96db7683e0335cb4bbb55de83b03fd1e8 (patch) | |
tree | 4e42240e620705e864a342d486427d86173b423c | |
parent | 3600f51032f6b9f97630f5e728a24677d205d3f5 (diff) | |
download | haskell-4cf215d96db7683e0335cb4bbb55de83b03fd1e8.tar.gz |
tests: Add a test for dtrace probe points
-rw-r--r-- | testsuite/tests/rts/Dtrace.hs | 10 | ||||
-rw-r--r-- | testsuite/tests/rts/Makefile | 4 | ||||
-rw-r--r-- | testsuite/tests/rts/all.T | 3 | ||||
-rwxr-xr-x | testsuite/tests/rts/dtrace.sh | 4 | ||||
-rw-r--r-- | testsuite/tests/rts/dtrace.stdout | 3 |
5 files changed, 24 insertions, 0 deletions
diff --git a/testsuite/tests/rts/Dtrace.hs b/testsuite/tests/rts/Dtrace.hs new file mode 100644 index 0000000000..63ca194e23 --- /dev/null +++ b/testsuite/tests/rts/Dtrace.hs @@ -0,0 +1,10 @@ +{-# language NumericUnderscores #-} + +import Debug.Trace +import Control.Concurrent + +main :: IO () +main = do + -- Pause for 500ms so we don't finish before bpftrace attaches + threadDelay 500_000 + traceEventIO "dtrace works" diff --git a/testsuite/tests/rts/Makefile b/testsuite/tests/rts/Makefile index fe35bd4d2c..b59c96d109 100644 --- a/testsuite/tests/rts/Makefile +++ b/testsuite/tests/rts/Makefile @@ -147,3 +147,7 @@ EventlogOutput_IPE: "$(TEST_HC)" -debug -finfo-table-map -v0 EventlogOutput.hs ./EventlogOutput +RTS -va 2> EventlogOutput_IPE.stderr.log grep "IPE:" EventlogOutput_IPE.stderr.log + +.PHONY: dtrace +dtrace: + ./dtrace.sh diff --git a/testsuite/tests/rts/all.T b/testsuite/tests/rts/all.T index a62585c6f4..ec3bfab4cf 100644 --- a/testsuite/tests/rts/all.T +++ b/testsuite/tests/rts/all.T @@ -503,3 +503,6 @@ test('decodeMyStack', normal, compile_and_run, ['-finfo-table-map']) test('decodeMyStack_underflowFrames', [extra_run_opts('+RTS -kc8K -RTS')], compile_and_run, ['-finfo-table-map -rtsopts']) # -finfo-table-map intentionally missing test('decodeMyStack_emptyListForMissingFlag', [ignore_stdout, ignore_stderr], compile_and_run, ['']) + +# this test is commented out because it requires bpftrace and sudo +# test('dtrace', [extra_files(['Dtrace.hs', 'dtrace.sh'])], makefile_test, ['dtrace']) diff --git a/testsuite/tests/rts/dtrace.sh b/testsuite/tests/rts/dtrace.sh new file mode 100755 index 0000000000..c909a662f9 --- /dev/null +++ b/testsuite/tests/rts/dtrace.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euo pipefail +"$TEST_HC" $TEST_HC_OPTS -eventlog Dtrace.hs -v0 +./Dtrace & sudo bpftrace -q -e "usdt::HaskellEvent:user__msg { printf(\"%s\n\", str(arg1)); }" -p $! diff --git a/testsuite/tests/rts/dtrace.stdout b/testsuite/tests/rts/dtrace.stdout new file mode 100644 index 0000000000..18ecfdcd00 --- /dev/null +++ b/testsuite/tests/rts/dtrace.stdout @@ -0,0 +1,3 @@ +dtrace works + + |