aboutsummaryrefslogtreecommitdiff
path: root/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.d
diff options
context:
space:
mode:
authorRui Paulo <rpaulo@FreeBSD.org>2014-06-26 21:45:49 +0000
committerRui Paulo <rpaulo@FreeBSD.org>2014-06-26 21:45:49 +0000
commitb1f9167f94059fd55c630891d359bcff987bd7eb (patch)
tree4ddc8f5aee7a410915ef2557eb021621a9b82651 /cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.d
parent8a7314fcb5347f8296a072e0c4f67a9f64303186 (diff)
parentff82455cb7d7889d4334155a9f832ed021b1ef80 (diff)
downloadsrc-b1f9167f94059fd55c630891d359bcff987bd7eb.tar.gz
src-b1f9167f94059fd55c630891d359bcff987bd7eb.zip
MFV illumos
4477 DTrace should speak JSON MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=267937
Diffstat (limited to 'cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.d')
-rw-r--r--cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.d65
1 files changed, 65 insertions, 0 deletions
diff --git a/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.d b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.d
new file mode 100644
index 000000000000..f0fbdd5cabab
--- /dev/null
+++ b/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/tst.usdt.d
@@ -0,0 +1,65 @@
+/*
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ */
+
+/*
+ * Copyright (c) 2012, Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option strsize=4k
+#pragma D option quiet
+#pragma D option destructive
+
+/*
+ * This test reads a JSON string from a USDT probe, roughly simulating the
+ * primary motivating use case for the json() subroutine: filtering
+ * JSON-formatted log messages from a logging subsystem like node-bunyan.
+ */
+
+pid$1:a.out:waiting:entry
+{
+ this->value = (int *)alloca(sizeof (int));
+ *this->value = 1;
+ copyout(this->value, arg0, sizeof (int));
+}
+
+bunyan*$1:::log-*
+{
+ this->j = copyinstr(arg0);
+}
+
+bunyan*$1:::log-*
+/json(this->j, "finished") == NULL && json(this->j, "action") != "ignore"/
+{
+ this->index = strtoll(json(this->j, "index"));
+ this->size = json(this->j, "sizes[2]");
+ this->odd = json(this->j, "facts.odd");
+ this->even = json(this->j, "facts.even");
+ printf("[%d] sz %s odd %s even %s\n", this->index, this->size,
+ this->odd, this->even);
+}
+
+bunyan*$1:::log-*
+/json(this->j, "finished") != NULL/
+{
+ printf("FINISHED!\n");
+ exit(0);
+}
+
+tick-10s
+{
+ printf("ERROR: Timed out before finish message!\n");
+ exit(1);
+}
+
+ERROR
+{
+ exit(1);
+}