mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
docs: add examples/opentelemetry (#9201)
This commit is contained in:
parent
01a9a58d90
commit
167d3a98ab
@ -1,5 +1,11 @@
|
|||||||
# Open Telemetry Support <Experimental /> {#open-telemetry-support}
|
# Open Telemetry Support <Experimental /> {#open-telemetry-support}
|
||||||
|
|
||||||
|
::: tip Example Project
|
||||||
|
|
||||||
|
[GitHub](https://github.com/vitest-dev/vitest/tree/main/examples/opentelemetry)
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
[OpenTelemetry](https://opentelemetry.io/) traces can be a useful tool to debug the performance and behavior of your application inside tests.
|
[OpenTelemetry](https://opentelemetry.io/) traces can be a useful tool to debug the performance and behavior of your application inside tests.
|
||||||
|
|
||||||
If enabled, Vitest integration generates spans that are scoped to your test's worker.
|
If enabled, Vitest integration generates spans that are scoped to your test's worker.
|
||||||
|
|||||||
20
examples/opentelemetry/README.md
Normal file
20
examples/opentelemetry/README.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Vitest Opentelemtry Example
|
||||||
|
|
||||||
|
- **Documentation**: https://vitest.dev/guide/open-telemetry.html
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Start Jaeger service to receive otlp traces over http
|
||||||
|
# and serve Web UI at http://localhost:16686
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Run tests (exports with OTLP HTTP by deafult)
|
||||||
|
pnpm test --experimental.openTelemetry.enabled
|
||||||
|
|
||||||
|
# Use console exporter for quick debugging
|
||||||
|
OTEL_TRACES_EXPORTER=console pnpm test --experimental.openTelemetry.enabled
|
||||||
|
|
||||||
|
# Run browser mode
|
||||||
|
pnpm test --experimental.openTelemetry.enabled --browser.enabled
|
||||||
|
```
|
||||||
27
examples/opentelemetry/docker-compose.yaml
Normal file
27
examples/opentelemetry/docker-compose.yaml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
services:
|
||||||
|
# for testing open-telemetry integration locally
|
||||||
|
# https://www.jaegertracing.io/docs/2.12/getting-started/
|
||||||
|
jaeger:
|
||||||
|
image: cr.jaegertracing.io/jaegertracing/jaeger:2.12.0
|
||||||
|
# Assign ports for Jaeger UI and OTLP receiver
|
||||||
|
ports:
|
||||||
|
# UI http://localhost:16686
|
||||||
|
- 16686:16686
|
||||||
|
# OTLP over HTTP (default for NodeSDK)
|
||||||
|
- 4318:4318
|
||||||
|
# Optional: uncomment if needed
|
||||||
|
# - 4317:4317 # OTLP over gRPC
|
||||||
|
# - 5778:5778 # Jaeger sampling strategies
|
||||||
|
# - 9411:9411 # Zipkin compatibility
|
||||||
|
|
||||||
|
# Use volume to persist data across container restarts.
|
||||||
|
# This can be commented out if persistence is not needed.
|
||||||
|
# https://www.jaegertracing.io/docs/2.12/storage/badger/
|
||||||
|
user: '0:0'
|
||||||
|
command: --config /etc/jaeger/config.yml
|
||||||
|
volumes:
|
||||||
|
- ./jaeger-config.yml:/etc/jaeger/config.yml:ro
|
||||||
|
- jaeger-data:/tmp/badger
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
jaeger-data:
|
||||||
38
examples/opentelemetry/jaeger-config.yml
Normal file
38
examples/opentelemetry/jaeger-config.yml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# https://www.jaegertracing.io/docs/2.12/deployment/configuration/
|
||||||
|
extensions:
|
||||||
|
jaeger_storage:
|
||||||
|
backends:
|
||||||
|
main_storage:
|
||||||
|
badger:
|
||||||
|
directories:
|
||||||
|
keys: /tmp/badger/keys
|
||||||
|
values: /tmp/badger/data
|
||||||
|
ephemeral: false
|
||||||
|
consistency: true
|
||||||
|
maintenance_interval: 5m
|
||||||
|
jaeger_query:
|
||||||
|
storage:
|
||||||
|
traces: main_storage
|
||||||
|
|
||||||
|
receivers:
|
||||||
|
otlp:
|
||||||
|
protocols:
|
||||||
|
grpc:
|
||||||
|
endpoint: 0.0.0.0:4317
|
||||||
|
http:
|
||||||
|
endpoint: 0.0.0.0:4318
|
||||||
|
|
||||||
|
processors:
|
||||||
|
batch:
|
||||||
|
|
||||||
|
exporters:
|
||||||
|
jaeger_storage_exporter:
|
||||||
|
trace_storage: main_storage
|
||||||
|
|
||||||
|
service:
|
||||||
|
extensions: [jaeger_storage, jaeger_query]
|
||||||
|
pipelines:
|
||||||
|
traces:
|
||||||
|
receivers: [otlp]
|
||||||
|
processors: [batch]
|
||||||
|
exporters: [jaeger_storage_exporter]
|
||||||
16
examples/opentelemetry/otel.js
Normal file
16
examples/opentelemetry/otel.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// @ts-check
|
||||||
|
import { NodeSDK } from '@opentelemetry/sdk-node'
|
||||||
|
|
||||||
|
const sdk = new NodeSDK({
|
||||||
|
serviceName: 'vitest',
|
||||||
|
|
||||||
|
// NodeSDK uses "@opentelemetry/exporter-trace-otlp-proto" by default.
|
||||||
|
// you can override it via `traceExporter` options.
|
||||||
|
// traceExporter: ...,
|
||||||
|
|
||||||
|
// you can configure additional instrumentations such as `@opentelemetry/auto-instrumentations-node`
|
||||||
|
// via `instrumentations` options.
|
||||||
|
// instrumentations: ...
|
||||||
|
})
|
||||||
|
sdk.start()
|
||||||
|
export default sdk
|
||||||
16
examples/opentelemetry/package.json
Normal file
16
examples/opentelemetry/package.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "@vitest/example-opentelemetry",
|
||||||
|
"type": "module",
|
||||||
|
"private": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"scripts": {
|
||||||
|
"compose": "docker compose",
|
||||||
|
"test": "vitest"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@opentelemetry/sdk-node": "^0.208.0",
|
||||||
|
"@vitest/browser-playwright": "latest",
|
||||||
|
"vite": "latest",
|
||||||
|
"vitest": "latest"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
examples/opentelemetry/src/basic.test.ts
Normal file
11
examples/opentelemetry/src/basic.test.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { expect, test } from 'vitest'
|
||||||
|
import { sleep } from './basic'
|
||||||
|
|
||||||
|
test('one plus one', async () => {
|
||||||
|
await sleep(100)
|
||||||
|
expect(1 + 1).toBe(2)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('one plus two', async () => {
|
||||||
|
expect(1 + 2).toBe(3)
|
||||||
|
})
|
||||||
3
examples/opentelemetry/src/basic.ts
Normal file
3
examples/opentelemetry/src/basic.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export function sleep(ms: number): Promise<void> {
|
||||||
|
return new Promise(resolve => setTimeout(resolve, ms))
|
||||||
|
}
|
||||||
20
examples/opentelemetry/vite.config.ts
Normal file
20
examples/opentelemetry/vite.config.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { playwright } from '@vitest/browser-playwright'
|
||||||
|
import { defineConfig } from 'vitest/config'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
test: {
|
||||||
|
experimental: {
|
||||||
|
openTelemetry: {
|
||||||
|
// enable via CLI flag --experimental.openTelemetry.enabled=true
|
||||||
|
enabled: false,
|
||||||
|
sdkPath: './otel.js',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
browser: {
|
||||||
|
// enable via CLI flag --browser.enabled=true
|
||||||
|
enabled: false,
|
||||||
|
provider: playwright(),
|
||||||
|
instances: [{ browser: 'chromium' }],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
15
pnpm-lock.yaml
generated
15
pnpm-lock.yaml
generated
@ -370,6 +370,21 @@ importers:
|
|||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/vitest
|
version: link:../../packages/vitest
|
||||||
|
|
||||||
|
examples/opentelemetry:
|
||||||
|
devDependencies:
|
||||||
|
'@opentelemetry/sdk-node':
|
||||||
|
specifier: ^0.208.0
|
||||||
|
version: 0.208.0(@opentelemetry/api@1.9.0)
|
||||||
|
'@vitest/browser-playwright':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/browser-playwright
|
||||||
|
vite:
|
||||||
|
specifier: ^7.1.5
|
||||||
|
version: 7.1.5(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.1)(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)
|
||||||
|
vitest:
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/vitest
|
||||||
|
|
||||||
examples/profiling:
|
examples/profiling:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
vite:
|
vite:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user