summaryrefslogtreecommitdiff
path: root/tests/specs/cli/otel_basic
diff options
context:
space:
mode:
Diffstat (limited to 'tests/specs/cli/otel_basic')
-rw-r--r--tests/specs/cli/otel_basic/__test__.jsonc32
-rw-r--r--tests/specs/cli/otel_basic/basic.out76
-rw-r--r--tests/specs/cli/otel_basic/basic.ts34
-rw-r--r--tests/specs/cli/otel_basic/deno.json4
-rw-r--r--tests/specs/cli/otel_basic/deno_dot_exit.out19
-rw-r--r--tests/specs/cli/otel_basic/deno_dot_exit.ts2
-rw-r--r--tests/specs/cli/otel_basic/main.ts38
-rw-r--r--tests/specs/cli/otel_basic/natural_exit.out19
-rw-r--r--tests/specs/cli/otel_basic/natural_exit.ts1
-rw-r--r--tests/specs/cli/otel_basic/uncaught.out37
-rw-r--r--tests/specs/cli/otel_basic/uncaught.ts2
11 files changed, 264 insertions, 0 deletions
diff --git a/tests/specs/cli/otel_basic/__test__.jsonc b/tests/specs/cli/otel_basic/__test__.jsonc
new file mode 100644
index 000000000..5a27e9262
--- /dev/null
+++ b/tests/specs/cli/otel_basic/__test__.jsonc
@@ -0,0 +1,32 @@
+{
+ "steps": [
+ {
+ "args": "run -A main.ts basic.ts",
+ "envs": {
+ "DENO_UNSTABLE_OTEL_DETERMINISTIC": "1"
+ },
+ "output": "basic.out"
+ },
+ {
+ "args": "run -A main.ts natural_exit.ts",
+ "envs": {
+ "DENO_UNSTABLE_OTEL_DETERMINISTIC": "1"
+ },
+ "output": "natural_exit.out"
+ },
+ {
+ "args": "run -A main.ts deno_dot_exit.ts",
+ "envs": {
+ "DENO_UNSTABLE_OTEL_DETERMINISTIC": "1"
+ },
+ "output": "deno_dot_exit.out"
+ },
+ {
+ "args": "run -A main.ts uncaught.ts",
+ "envs": {
+ "DENO_UNSTABLE_OTEL_DETERMINISTIC": "1"
+ },
+ "output": "uncaught.out"
+ }
+ ]
+}
diff --git a/tests/specs/cli/otel_basic/basic.out b/tests/specs/cli/otel_basic/basic.out
new file mode 100644
index 000000000..3745cb7f3
--- /dev/null
+++ b/tests/specs/cli/otel_basic/basic.out
@@ -0,0 +1,76 @@
+{
+ "spans": [
+ {
+ "traceId": "10000000000000000000000000000002",
+ "spanId": "1000000000000003",
+ "traceState": "",
+ "parentSpanId": "1000000000000001",
+ "flags": 1,
+ "name": "inner span",
+ "kind": 1,
+ "startTimeUnixNano": "[WILDCARD]",
+ "endTimeUnixNano": "[WILDCARD]",
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "events": [],
+ "droppedEventsCount": 0,
+ "links": [],
+ "droppedLinksCount": 0,
+ "status": {
+ "message": "",
+ "code": 0
+ }
+ },
+ {
+ "traceId": "10000000000000000000000000000002",
+ "spanId": "1000000000000001",
+ "traceState": "",
+ "parentSpanId": "",
+ "flags": 1,
+ "name": "outer span",
+ "kind": 1,
+ "startTimeUnixNano": "[WILDCARD]",
+ "endTimeUnixNano": "[WILDCARD]",
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "events": [],
+ "droppedEventsCount": 0,
+ "links": [],
+ "droppedLinksCount": 0,
+ "status": {
+ "message": "",
+ "code": 0
+ }
+ }
+ ],
+ "logs": [
+ {
+ "timeUnixNano": "0",
+ "observedTimeUnixNano": "[WILDCARD]",
+ "severityNumber": 9,
+ "severityText": "INFO",
+ "body": {
+ "stringValue": "log 1\n"
+ },
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "flags": 1,
+ "traceId": "10000000000000000000000000000002",
+ "spanId": "1000000000000003"
+ },
+ {
+ "timeUnixNano": "0",
+ "observedTimeUnixNano": "[WILDCARD]",
+ "severityNumber": 9,
+ "severityText": "INFO",
+ "body": {
+ "stringValue": "log 2\n"
+ },
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "flags": 1,
+ "traceId": "10000000000000000000000000000002",
+ "spanId": "1000000000000003"
+ }
+ ]
+}
diff --git a/tests/specs/cli/otel_basic/basic.ts b/tests/specs/cli/otel_basic/basic.ts
new file mode 100644
index 000000000..5c4ae43cd
--- /dev/null
+++ b/tests/specs/cli/otel_basic/basic.ts
@@ -0,0 +1,34 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+import { trace } from "npm:@opentelemetry/api@1.9.0";
+import "jsr:@deno/otel@0.0.2/register";
+
+const tracer = trace.getTracer("example-tracer");
+
+async function inner() {
+ await tracer.startActiveSpan("inner span", async (span) => {
+ console.log("log 1");
+ await 1;
+ console.log("log 2");
+ span.end();
+ });
+}
+
+const server = Deno.serve({
+ port: 0,
+ async onListen({ port }) {
+ try {
+ await fetch(`http://localhost:${port}`);
+ } finally {
+ server.shutdown();
+ }
+ },
+ handler: async (_req) => {
+ return await tracer.startActiveSpan("outer span", async (span) => {
+ await inner();
+ const resp = new Response(null, { status: 200 });
+ span.end();
+ return resp;
+ });
+ },
+});
diff --git a/tests/specs/cli/otel_basic/deno.json b/tests/specs/cli/otel_basic/deno.json
new file mode 100644
index 000000000..105514e13
--- /dev/null
+++ b/tests/specs/cli/otel_basic/deno.json
@@ -0,0 +1,4 @@
+{
+ "lock": false,
+ "importMap": "../../../../import_map.json"
+}
diff --git a/tests/specs/cli/otel_basic/deno_dot_exit.out b/tests/specs/cli/otel_basic/deno_dot_exit.out
new file mode 100644
index 000000000..98a41cf60
--- /dev/null
+++ b/tests/specs/cli/otel_basic/deno_dot_exit.out
@@ -0,0 +1,19 @@
+{
+ "spans": [],
+ "logs": [
+ {
+ "timeUnixNano": "0",
+ "observedTimeUnixNano": "[WILDCARD]",
+ "severityNumber": 9,
+ "severityText": "INFO",
+ "body": {
+ "stringValue": "log 1\n"
+ },
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "flags": 0,
+ "traceId": "",
+ "spanId": ""
+ }
+ ]
+}
diff --git a/tests/specs/cli/otel_basic/deno_dot_exit.ts b/tests/specs/cli/otel_basic/deno_dot_exit.ts
new file mode 100644
index 000000000..73540fd9e
--- /dev/null
+++ b/tests/specs/cli/otel_basic/deno_dot_exit.ts
@@ -0,0 +1,2 @@
+console.log("log 1");
+Deno.exit(0);
diff --git a/tests/specs/cli/otel_basic/main.ts b/tests/specs/cli/otel_basic/main.ts
new file mode 100644
index 000000000..5415a7437
--- /dev/null
+++ b/tests/specs/cli/otel_basic/main.ts
@@ -0,0 +1,38 @@
+// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
+
+const data = {
+ spans: [],
+ logs: [],
+};
+
+const server = Deno.serve(
+ {
+ port: 0,
+ onListen({ port }) {
+ const command = new Deno.Command(Deno.execPath(), {
+ args: ["run", "-A", "-q", "--unstable-otel", Deno.args[0]],
+ env: {
+ OTEL_EXPORTER_OTLP_PROTOCOL: "http/json",
+ OTEL_EXPORTER_OTLP_ENDPOINT: `http://localhost:${port}`,
+ },
+ stdout: "null",
+ });
+ const child = command.spawn();
+ child.output().then(() => {
+ server.shutdown();
+
+ console.log(JSON.stringify(data, null, 2));
+ });
+ },
+ async handler(req) {
+ const body = await req.json();
+ if (body.resourceLogs) {
+ data.logs.push(...body.resourceLogs[0].scopeLogs[0].logRecords);
+ }
+ if (body.resourceSpans) {
+ data.spans.push(...body.resourceSpans[0].scopeSpans[0].spans);
+ }
+ return Response.json({ partialSuccess: {} }, { status: 200 });
+ },
+ },
+);
diff --git a/tests/specs/cli/otel_basic/natural_exit.out b/tests/specs/cli/otel_basic/natural_exit.out
new file mode 100644
index 000000000..98a41cf60
--- /dev/null
+++ b/tests/specs/cli/otel_basic/natural_exit.out
@@ -0,0 +1,19 @@
+{
+ "spans": [],
+ "logs": [
+ {
+ "timeUnixNano": "0",
+ "observedTimeUnixNano": "[WILDCARD]",
+ "severityNumber": 9,
+ "severityText": "INFO",
+ "body": {
+ "stringValue": "log 1\n"
+ },
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "flags": 0,
+ "traceId": "",
+ "spanId": ""
+ }
+ ]
+}
diff --git a/tests/specs/cli/otel_basic/natural_exit.ts b/tests/specs/cli/otel_basic/natural_exit.ts
new file mode 100644
index 000000000..d40478252
--- /dev/null
+++ b/tests/specs/cli/otel_basic/natural_exit.ts
@@ -0,0 +1 @@
+console.log("log 1");
diff --git a/tests/specs/cli/otel_basic/uncaught.out b/tests/specs/cli/otel_basic/uncaught.out
new file mode 100644
index 000000000..a5a886bfe
--- /dev/null
+++ b/tests/specs/cli/otel_basic/uncaught.out
@@ -0,0 +1,37 @@
+error: Uncaught (in promise) Error: uncaught
+throw new Error("uncaught");
+ ^
+ at file:///[WILDCARD]/tests/specs/cli/otel_basic/uncaught.ts:2:7
+{
+ "spans": [],
+ "logs": [
+ {
+ "timeUnixNano": "0",
+ "observedTimeUnixNano": "[WILDCARD]",
+ "severityNumber": 9,
+ "severityText": "INFO",
+ "body": {
+ "stringValue": "log 1\n"
+ },
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "flags": 0,
+ "traceId": "",
+ "spanId": ""
+ },
+ {
+ "timeUnixNano": "0",
+ "observedTimeUnixNano": "[WILDCARD]",
+ "severityNumber": 17,
+ "severityText": "ERROR",
+ "body": {
+ "stringValue": "error: Uncaught (in promise) Error: uncaught\nthrow new Error(\"uncaught\");\n ^\n at file:///[WILDCARD]/tests/specs/cli/otel_basic/uncaught.ts:2:7"
+ },
+ "attributes": [],
+ "droppedAttributesCount": 0,
+ "flags": 0,
+ "traceId": "",
+ "spanId": ""
+ }
+ ]
+}
diff --git a/tests/specs/cli/otel_basic/uncaught.ts b/tests/specs/cli/otel_basic/uncaught.ts
new file mode 100644
index 000000000..eca7c05cb
--- /dev/null
+++ b/tests/specs/cli/otel_basic/uncaught.ts
@@ -0,0 +1,2 @@
+console.log("log 1");
+throw new Error("uncaught");