[DTrace-devel] [PATCH 2/5] test: Embellish the USDT multiprovider test
eugene.loh at oracle.com
eugene.loh at oracle.com
Fri Dec 20 22:24:52 UTC 2024
From: Eugene Loh <eugene.loh at oracle.com>
Add a probe to two providers, each probe with the same name but
different arguments.
Do so in a new, separate test since the older test used to trigger
some crashes, and we would like to continue to catch such problems.
Add -v to these probe-list tests to check attributes and arguments.
Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
test/triggers/Build | 5 +-
.../usdt-tst-multiprov-dupprobe-prov.d | 10 ++
test/triggers/usdt-tst-multiprov-dupprobe.c | 25 +++++
test/unittest/usdt/tst.multiprov-dupprobe.r | 93 +++++++++++++++++++
test/unittest/usdt/tst.multiprov-dupprobe.r.p | 5 +
test/unittest/usdt/tst.multiprov-dupprobe.sh | 11 +++
test/unittest/usdt/tst.multiprovider.r | 65 ++++++++++++-
test/unittest/usdt/tst.multiprovider.r.p | 5 +-
test/unittest/usdt/tst.multiprovider.sh | 6 +-
9 files changed, 214 insertions(+), 11 deletions(-)
create mode 100644 test/triggers/usdt-tst-multiprov-dupprobe-prov.d
create mode 100644 test/triggers/usdt-tst-multiprov-dupprobe.c
create mode 100644 test/unittest/usdt/tst.multiprov-dupprobe.r
create mode 100755 test/unittest/usdt/tst.multiprov-dupprobe.r.p
create mode 100755 test/unittest/usdt/tst.multiprov-dupprobe.sh
diff --git a/test/triggers/Build b/test/triggers/Build
index c50c265cc..3b5df3ece 100644
--- a/test/triggers/Build
+++ b/test/triggers/Build
@@ -14,7 +14,7 @@ EXTERNAL_64BIT_TRIGGERS = testprobe readwholedir mmap bogus-ioctl open delaydie
visible-constructor visible-constructor-static visible-constructor-static-unstripped
EXTERNAL_64BIT_SDT_TRIGGERS = usdt-tst-argmap usdt-tst-args usdt-tst-forker usdt-tst-defer \
- usdt-tst-multiprovider usdt-tst-special
+ usdt-tst-multiprovider usdt-tst-multiprov-dupprobe usdt-tst-special
EXTERNAL_64BIT_TRIGGERS += $(EXTERNAL_64BIT_SDT_TRIGGERS)
EXTERNAL_32BIT_TRIGGERS := visible-constructor-32
@@ -210,6 +210,9 @@ usdt-tst-defer_PROV := usdt-tst-defer-prov.d
# usdt-tst-multiprovider calls USDT probes based on dtrace -h
usdt-tst-multiprovider_PROV := usdt-tst-multiprovider-prov.d
+# usdt-tst-multiprov-dupprobe calls USDT probes based on dtrace -h
+usdt-tst-multiprov-dupprobe_PROV := usdt-tst-multiprov-dupprobe-prov.d
+
# usdt-tst-special calls USDT probes based on dtrace -h
usdt-tst-special_CFLAGS := -fno-inline -O2
usdt-tst-special_PROV := usdt-tst-special-prov.d
diff --git a/test/triggers/usdt-tst-multiprov-dupprobe-prov.d b/test/triggers/usdt-tst-multiprov-dupprobe-prov.d
new file mode 100644
index 000000000..04ef7245b
--- /dev/null
+++ b/test/triggers/usdt-tst-multiprov-dupprobe-prov.d
@@ -0,0 +1,10 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+provider prova { probe entrya(); probe entrye(int a, char *b); };
+provider provb { probe entryb(); probe entryc(int a, char *b) : (char * b, int a); };
+provider provc { probe entryd(); probe entrye(char *a, int b); };
diff --git a/test/triggers/usdt-tst-multiprov-dupprobe.c b/test/triggers/usdt-tst-multiprov-dupprobe.c
new file mode 100644
index 000000000..2d5fa5fb5
--- /dev/null
+++ b/test/triggers/usdt-tst-multiprov-dupprobe.c
@@ -0,0 +1,25 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * A trigger with multiple providers in it.
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include "usdt-tst-multiprov-dupprobe-prov.h"
+
+int main(int argc, char **argv)
+{
+ PROVA_ENTRYA();
+ PROVA_ENTRYE(123, "bar");
+ PROVB_ENTRYB();
+ PROVB_ENTRYC(666, "foo");
+ PROVC_ENTRYD();
+ PROVC_ENTRYE("baz", 456);
+ usleep(5 * 1000 * 1000);
+ return 0;
+}
diff --git a/test/unittest/usdt/tst.multiprov-dupprobe.r b/test/unittest/usdt/tst.multiprov-dupprobe.r
new file mode 100644
index 000000000..69764f6e9
--- /dev/null
+++ b/test/unittest/usdt/tst.multiprov-dupprobe.r
@@ -0,0 +1,93 @@
+PRID provaPID usdt-tst-multiprov-dupprobe main entrya
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ None
+
+PRID provaPID usdt-tst-multiprov-dupprobe main entrye
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ args[0]: int
+ args[1]: char *
+
+PRID provbPID usdt-tst-multiprov-dupprobe main entryb
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ None
+
+PRID provbPID usdt-tst-multiprov-dupprobe main entryc
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ args[0]: char *
+ args[1]: int
+
+PRID provcPID usdt-tst-multiprov-dupprobe main entryd
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ None
+
+PRID provcPID usdt-tst-multiprov-dupprobe main entrye
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ args[0]: char *
+ args[1]: int
+
diff --git a/test/unittest/usdt/tst.multiprov-dupprobe.r.p b/test/unittest/usdt/tst.multiprov-dupprobe.r.p
new file mode 100755
index 000000000..5d11db2d4
--- /dev/null
+++ b/test/unittest/usdt/tst.multiprov-dupprobe.r.p
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# Remove banner.
+# Replace numerical values with generic PRID and PID labels.
+grep -v '^ *ID' | sed 's,^[0-9][0-9]*,PRID,; s,prov\(.\)[0-9]*,prov\1PID,; s, *, ,g'
diff --git a/test/unittest/usdt/tst.multiprov-dupprobe.sh b/test/unittest/usdt/tst.multiprov-dupprobe.sh
new file mode 100755
index 000000000..80b147974
--- /dev/null
+++ b/test/unittest/usdt/tst.multiprov-dupprobe.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+#
+# Oracle Linux DTrace.
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at
+# http://oss.oracle.com/licenses/upl.
+#
+
+dtrace=$1
+
+exec $dtrace $dt_flags -lv -P 'prov*' -c `pwd`/test/triggers/usdt-tst-multiprov-dupprobe
diff --git a/test/unittest/usdt/tst.multiprovider.r b/test/unittest/usdt/tst.multiprovider.r
index 60a15c01e..873bac49e 100644
--- a/test/unittest/usdt/tst.multiprovider.r
+++ b/test/unittest/usdt/tst.multiprovider.r
@@ -1,4 +1,61 @@
-ID provaPID usdt-tst-multiprovider main entrya
-ID provbPID usdt-tst-multiprovider main entryb
-ID provbPID usdt-tst-multiprovider main entryc
-ID provcPID usdt-tst-multiprovider main entryd
+PRID provaPID usdt-tst-multiprovider main entrya
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ None
+
+PRID provbPID usdt-tst-multiprovider main entryb
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ None
+
+PRID provbPID usdt-tst-multiprovider main entryc
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ args[0]: char *
+ args[1]: int
+
+PRID provcPID usdt-tst-multiprovider main entryd
+
+ Probe Description Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Attributes
+ Identifier Names: Private
+ Data Semantics: Private
+ Dependency Class: Unknown
+
+ Argument Types
+ None
+
diff --git a/test/unittest/usdt/tst.multiprovider.r.p b/test/unittest/usdt/tst.multiprovider.r.p
index ae8493e3d..5d11db2d4 100755
--- a/test/unittest/usdt/tst.multiprovider.r.p
+++ b/test/unittest/usdt/tst.multiprovider.r.p
@@ -1,2 +1,5 @@
#!/bin/sh
-grep -v '^ *ID' | sed 's,^[0-9]*,ID,; s,prov\(.\)[0-9]*,prov\1PID,; s, *, ,g'
+
+# Remove banner.
+# Replace numerical values with generic PRID and PID labels.
+grep -v '^ *ID' | sed 's,^[0-9][0-9]*,PRID,; s,prov\(.\)[0-9]*,prov\1PID,; s, *, ,g'
diff --git a/test/unittest/usdt/tst.multiprovider.sh b/test/unittest/usdt/tst.multiprovider.sh
index d5b72c2be..e84a24b7e 100755
--- a/test/unittest/usdt/tst.multiprovider.sh
+++ b/test/unittest/usdt/tst.multiprovider.sh
@@ -5,11 +5,7 @@
# Licensed under the Universal Permissive License v 1.0 as shown at
# http://oss.oracle.com/licenses/upl.
#
-if [ $# != 1 ]; then
- echo expected one argument: '<'dtrace-path'>'
- exit 2
-fi
dtrace=$1
-exec $dtrace $dt_flags -l -P 'prov*' -c `pwd`/test/triggers/usdt-tst-multiprovider
+exec $dtrace $dt_flags -lv -P 'prov*' -c `pwd`/test/triggers/usdt-tst-multiprovider
--
2.43.5
More information about the DTrace-devel
mailing list