Skip to content

Commit 5b5cc87

Browse files
committed
test: cover new instrumenter client option
1 parent 0a16bb0 commit 5b5cc87

File tree

3 files changed

+111
-27
lines changed

3 files changed

+111
-27
lines changed

client_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/google/go-cmp/cmp"
1414
"github.com/google/go-cmp/cmp/cmpopts"
1515
pkgErrors "github.com/pkg/errors"
16+
"github.com/stretchr/testify/assert"
1617
"github.com/stretchr/testify/require"
1718
)
1819

@@ -871,3 +872,16 @@ func TestClientSetsUpTransport(t *testing.T) {
871872
client, _ = NewClient(ClientOptions{})
872873
require.IsType(t, &noopTransport{}, client.Transport)
873874
}
875+
876+
func TestClientSetupInstrumenter(t *testing.T) {
877+
client, err := NewClient(ClientOptions{Dsn: ""})
878+
require.NoError(t, err)
879+
assert.Equal(t, "sentry", client.Options().Instrumenter)
880+
881+
_, err = NewClient(ClientOptions{Dsn: "", Instrumenter: "foo"})
882+
require.Error(t, err)
883+
884+
client, err = NewClient(ClientOptions{Dsn: "", Instrumenter: "otel"})
885+
require.NoError(t, err)
886+
assert.Equal(t, "otel", client.Options().Instrumenter)
887+
}

gin/sentrygin_test.go

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,20 @@ import (
1616
"github.com/gin-gonic/gin"
1717
"github.com/google/go-cmp/cmp"
1818
"github.com/google/go-cmp/cmp/cmpopts"
19+
"github.com/stretchr/testify/require"
1920
)
2021

2122
func TestIntegration(t *testing.T) {
2223
largePayload := strings.Repeat("Large", 3*1024) // 15 KB
2324

2425
tests := []struct {
25-
RequestPath string
26-
RoutePath string
27-
Method string
28-
WantStatus int
29-
Body string
30-
Handler gin.HandlerFunc
26+
RequestPath string
27+
RoutePath string
28+
Method string
29+
WantStatus int
30+
Body string
31+
Handler gin.HandlerFunc
32+
Instrumenter string
3133

3234
WantEvent *sentry.Event
3335
WantTransaction *sentry.Event
@@ -291,26 +293,20 @@ func TestIntegration(t *testing.T) {
291293
},
292294
WantEvent: nil,
293295
},
296+
{
297+
RequestPath: "/404/1",
298+
RoutePath: "/otel",
299+
Method: "GET",
300+
Instrumenter: "otel",
301+
WantStatus: 404,
302+
Handler: nil,
303+
WantTransaction: nil,
304+
WantEvent: nil,
305+
},
294306
}
295307

296308
eventsCh := make(chan *sentry.Event, len(tests))
297309
transactionsCh := make(chan *sentry.Event, len(tests))
298-
err := sentry.Init(sentry.ClientOptions{
299-
EnableTracing: true,
300-
TracesSampleRate: 1.0,
301-
BeforeSend: func(event *sentry.Event, hint *sentry.EventHint) *sentry.Event {
302-
eventsCh <- event
303-
return event
304-
},
305-
BeforeSendTransaction: func(tx *sentry.Event, hint *sentry.EventHint) *sentry.Event {
306-
fmt.Println("BeforeSendTransaction")
307-
transactionsCh <- tx
308-
return tx
309-
},
310-
})
311-
if err != nil {
312-
t.Fatal(err)
313-
}
314310

315311
router := gin.New()
316312
router.Use(sentrygin.New(sentrygin.Options{}))
@@ -329,17 +325,34 @@ func TestIntegration(t *testing.T) {
329325
var wanttrans []*sentry.Event
330326
var wantCodes []sentry.SpanStatus
331327
for _, tt := range tests {
328+
err := sentry.Init(sentry.ClientOptions{
329+
EnableTracing: true,
330+
TracesSampleRate: 1.0,
331+
Instrumenter: tt.Instrumenter,
332+
BeforeSend: func(event *sentry.Event, hint *sentry.EventHint) *sentry.Event {
333+
eventsCh <- event
334+
return event
335+
},
336+
BeforeSendTransaction: func(tx *sentry.Event, hint *sentry.EventHint) *sentry.Event {
337+
transactionsCh <- tx
338+
return tx
339+
},
340+
})
341+
require.NoError(t, err)
342+
332343
if tt.WantEvent != nil && tt.WantEvent.Request != nil {
333344
wantRequest := tt.WantEvent.Request
334345
wantRequest.URL = srv.URL + wantRequest.URL
335346
wantRequest.Headers["Host"] = srv.Listener.Addr().String()
336347
want = append(want, tt.WantEvent)
337348
}
338-
wantTransaction := tt.WantTransaction.Request
339-
wantTransaction.URL = srv.URL + wantTransaction.URL
340-
wantTransaction.Headers["Host"] = srv.Listener.Addr().String()
341-
wanttrans = append(wanttrans, tt.WantTransaction)
342-
wantCodes = append(wantCodes, sentry.HTTPtoSpanStatus(tt.WantStatus))
349+
if tt.WantTransaction != nil {
350+
wantTransaction := tt.WantTransaction.Request
351+
wantTransaction.URL = srv.URL + wantTransaction.URL
352+
wantTransaction.Headers["Host"] = srv.Listener.Addr().String()
353+
wanttrans = append(wanttrans, tt.WantTransaction)
354+
wantCodes = append(wantCodes, sentry.HTTPtoSpanStatus(tt.WantStatus))
355+
}
343356

344357
req, err := http.NewRequest(tt.Method, srv.URL+tt.RequestPath, strings.NewReader(tt.Body))
345358
if err != nil {

http/sentryhttp_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"github.com/getsentry/sentry-go/internal/testutils"
1515
"github.com/google/go-cmp/cmp"
1616
"github.com/google/go-cmp/cmp/cmpopts"
17+
"github.com/stretchr/testify/assert"
18+
"github.com/stretchr/testify/require"
1719
)
1820

1921
func TestIntegration(t *testing.T) {
@@ -356,3 +358,58 @@ func TestIntegration(t *testing.T) {
356358
t.Fatalf("Transaction status codes mismatch (-want +got):\n%s", diff)
357359
}
358360
}
361+
362+
func TestInstrumenters(t *testing.T) {
363+
tests := []struct {
364+
instrumenter string
365+
expectedEvents int
366+
}{
367+
{
368+
instrumenter: "sentry",
369+
expectedEvents: 1,
370+
},
371+
{
372+
instrumenter: "otel",
373+
expectedEvents: 0,
374+
},
375+
}
376+
377+
for _, tt := range tests {
378+
t.Run(tt.instrumenter, func(t *testing.T) {
379+
sentEvents := make(map[string]struct{})
380+
err := sentry.Init(sentry.ClientOptions{
381+
Dsn: "http://[email protected]/123",
382+
Debug: true,
383+
EnableTracing: true,
384+
TracesSampleRate: 1.0,
385+
Instrumenter: tt.instrumenter,
386+
BeforeSendTransaction: func(event *sentry.Event, hint *sentry.EventHint) *sentry.Event {
387+
sentEvents[string(event.EventID)] = struct{}{}
388+
return event
389+
},
390+
})
391+
require.NoError(t, err)
392+
393+
sentryHandler := sentryhttp.New(sentryhttp.Options{})
394+
noopHandler := func(w http.ResponseWriter, r *http.Request) {}
395+
srv := httptest.NewServer(sentryHandler.HandleFunc(noopHandler))
396+
defer srv.Close()
397+
398+
c := srv.Client()
399+
c.Timeout = time.Second
400+
401+
req, err := http.NewRequest("GET", srv.URL, http.NoBody)
402+
require.NoError(t, err)
403+
404+
resp, err := c.Do(req)
405+
require.NoError(t, err)
406+
defer resp.Body.Close()
407+
408+
if ok := sentry.Flush(testutils.FlushTimeout()); !ok {
409+
t.Fatal("sentry.Flush timed out")
410+
}
411+
412+
assert.Equal(t, tt.expectedEvents, len(sentEvents), "wrong number of sent events")
413+
})
414+
}
415+
}

0 commit comments

Comments
 (0)