@@ -3,6 +3,7 @@ package kod_test
3
3
import (
4
4
"context"
5
5
"fmt"
6
+ "log/slog"
6
7
"testing"
7
8
8
9
"github.com/go-kod/kod"
@@ -11,10 +12,10 @@ import (
11
12
"github.com/go-kod/kod/interceptor/kmetric"
12
13
"github.com/go-kod/kod/interceptor/krecovery"
13
14
"github.com/go-kod/kod/interceptor/ktrace"
14
- lognoop "go.opentelemetry.io/otel/log/noop "
15
- metricnoop "go.opentelemetry.io/otel/metric/noop "
16
- "go.opentelemetry.io/otel/propagation "
17
- tracenoop "go.opentelemetry.io/otel/trace/noop "
15
+ "github.com/knadh/koanf/v2 "
16
+ "go.opentelemetry.io/otel"
17
+ "go.opentelemetry.io/otel/sdk/trace "
18
+ "go.opentelemetry.io/otel/sdk/ trace/tracetest "
18
19
"go.uber.org/mock/gomock"
19
20
)
20
21
@@ -112,14 +113,15 @@ func Example_configGlobal() {
112
113
// This example demonstrates how to use logging with OpenTelemetry.
113
114
func Example_openTelemetryLog () {
114
115
logger , observer := kod .NewTestLogger ()
116
+ slog .SetDefault (logger )
115
117
116
118
kod .RunTest (& testing.T {}, func (ctx context.Context , app * helloworld.App ) {
117
119
app .L (ctx ).Debug ("Hello, World!" )
118
120
app .L (ctx ).Info ("Hello, World!" )
119
121
app .L (ctx ).Warn ("Hello, World!" )
120
122
app .L (ctx ).Error ("Hello, World!" )
121
123
app .HelloWorld .Get ().SayHello (ctx )
122
- }, kod . WithLogger ( logger ) )
124
+ })
123
125
124
126
fmt .Println (observer .RemoveKeys ("trace_id" , "span_id" , "time" ))
125
127
@@ -136,6 +138,12 @@ func Example_openTelemetryLog() {
136
138
// This example demonstrates how to use tracing with OpenTelemetry.
137
139
func Example_openTelemetryTrace () {
138
140
logger , observer := kod .NewTestLogger ()
141
+ slog .SetDefault (logger )
142
+
143
+ // create otel test exporter
144
+ spanRecorder := tracetest .NewSpanRecorder ()
145
+ tracerProvider := trace .NewTracerProvider (trace .WithSpanProcessor (spanRecorder ))
146
+ otel .SetTracerProvider (tracerProvider )
139
147
140
148
kod .Run (context .Background (), func (ctx context.Context , app * helloworld.App ) error {
141
149
ctx , span := app .Tracer ().Start (ctx , "example" )
@@ -145,7 +153,7 @@ func Example_openTelemetryTrace() {
145
153
146
154
app .HelloWorld .Get ().SayHello (ctx )
147
155
return nil
148
- }, kod .WithInterceptors (ktrace .Interceptor ()), kod . WithLogger ( logger ) )
156
+ }, kod .WithInterceptors (ktrace .Interceptor ()))
149
157
150
158
fmt .Println (observer .Filter (func (m map [string ]any ) bool {
151
159
return m ["trace_id" ] != nil && m ["span_id" ] != nil
@@ -174,25 +182,6 @@ func Example_openTelemetryMetric() {
174
182
// helloWorld shutdown
175
183
}
176
184
177
- // This example demonstrates how to use OpenTelemetry with a custom OpenTelemetry provider.
178
- func Example_openTelemetryCustomProvider () {
179
- kod .Run (context .Background (), func (ctx context.Context , app * helloworld.App ) error {
180
- app .HelloWorld .Get ().SayHello (ctx )
181
- return nil
182
- },
183
- kod .WithTracerProvider (tracenoop .NewTracerProvider ()),
184
- kod .WithMeterProvider (metricnoop .NewMeterProvider ()),
185
- kod .WithLogProvider (lognoop .NewLoggerProvider ()),
186
- kod .WithTextMapPropagator (propagation .NewCompositeTextMapPropagator (
187
- propagation.TraceContext {}, propagation.Baggage {},
188
- )),
189
- )
190
- // Output:
191
- // helloWorld init
192
- // Hello, World!
193
- // helloWorld shutdown
194
- }
195
-
196
185
// This example demonstrates how to use [kod.WithInterceptors] to provide global interceptors to the application.
197
186
func Example_interceptorGlobal () {
198
187
interceptor := interceptor .Interceptor (func (ctx context.Context , info interceptor.CallInfo , req , res []interface {}, next interceptor.HandleFunc ) error {
@@ -292,17 +281,18 @@ func Example_testWithDefaultConfig() {
292
281
// helloWorld shutdown
293
282
}
294
283
295
- // This example demonstrates how to use [kod.RunTest], [kod.NewTestLogger] and [kod.WithLogger] to run a test function with a custom logger.
284
+ // This example demonstrates how to use [kod.RunTest], [kod.NewTestLogger] to run a test function with a custom logger.
296
285
func Example_testWithLogObserver () {
297
286
logger , observer := kod .NewTestLogger ()
287
+ slog .SetDefault (logger )
298
288
299
289
t := & testing.T {}
300
290
kod .RunTest (t , func (ctx context.Context , app * helloworld.App ) {
301
291
app .L (ctx ).Debug ("Hello, World!" )
302
292
app .L (ctx ).Info ("Hello, World!" )
303
293
app .L (ctx ).Warn ("Hello, World!" )
304
294
app .L (ctx ).Error ("Hello, World!" )
305
- }, kod . WithLogger ( logger ) )
295
+ })
306
296
307
297
fmt .Println (observer .Len ())
308
298
fmt .Println (observer .ErrorCount ())
@@ -315,3 +305,19 @@ func Example_testWithLogObserver() {
315
305
// 1
316
306
// 0
317
307
}
308
+
309
+ // This example demonstrates how to use [kod.RunTest], [kod.WithKoanf] to run a test function with a custom koanf instance.
310
+ func Example_testWithKoanf () {
311
+ c := koanf .New ("_" )
312
+ c .Set ("name" , "testName" )
313
+
314
+ kod .RunTest (& testing.T {}, func (ctx context.Context , app * helloworld.App ) {
315
+ fmt .Println (app .Config ().Name )
316
+ app .HelloWorld .Get ().SayHello (ctx )
317
+ }, kod .WithKoanf (c ))
318
+ // Output:
319
+ // helloWorld init
320
+ // testName
321
+ // Hello, World!
322
+ // helloWorld shutdown
323
+ }
0 commit comments