test_: sentry init, report and close
This commit is contained in:
parent
190671df9e
commit
a37a71b025
|
@ -2860,7 +2860,6 @@ func (b *GethStatusBackend) EnableSentry() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *GethStatusBackend) DisableSentry() error {
|
func (b *GethStatusBackend) DisableSentry() error {
|
||||||
sentry.Flush()
|
|
||||||
return sentry.Close()
|
return sentry.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,16 +21,13 @@ func MustInit(options ...Option) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Close() error {
|
func Close() error {
|
||||||
|
sentry.Flush(time.Second * 2)
|
||||||
// Set DSN to empty string to disable sending events
|
// Set DSN to empty string to disable sending events
|
||||||
return sentry.Init(sentry.ClientOptions{
|
return sentry.Init(sentry.ClientOptions{
|
||||||
Dsn: "",
|
Dsn: "",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func Flush() {
|
|
||||||
sentry.Flush(time.Second * 2)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Recover() {
|
func Recover() {
|
||||||
err := recover()
|
err := recover()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -42,7 +39,7 @@ func Recover() {
|
||||||
|
|
||||||
func RecoverError(err interface{}) {
|
func RecoverError(err interface{}) {
|
||||||
sentry.CurrentHub().Recover(err)
|
sentry.CurrentHub().Recover(err)
|
||||||
sentry.Flush(time.Second * 5)
|
sentry.Flush(time.Second * 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultConfig() *sentry.ClientOptions {
|
func defaultConfig() *sentry.ClientOptions {
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
package sentry
|
package sentry
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/brianvoe/gofakeit/v6"
|
||||||
"github.com/getsentry/sentry-go"
|
"github.com/getsentry/sentry-go"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBeforeSend(t *testing.T) {
|
func TestBeforeSend(t *testing.T) {
|
||||||
|
@ -29,11 +33,57 @@ func TestBeforeSend(t *testing.T) {
|
||||||
result := beforeSend(event, nil)
|
result := beforeSend(event, nil)
|
||||||
|
|
||||||
// Verify that the stacktrace frames are correctly trimmed
|
// Verify that the stacktrace frames are correctly trimmed
|
||||||
assert.NotNil(t, result)
|
require.NotNil(t, result)
|
||||||
assert.Len(t, result.Exception[0].Stacktrace.Frames, 1)
|
require.Len(t, result.Exception[0].Stacktrace.Frames, 1)
|
||||||
assert.Equal(t, "OtherFunction", result.Exception[0].Stacktrace.Frames[0].Function)
|
require.Equal(t, "OtherFunction", result.Exception[0].Stacktrace.Frames[0].Function)
|
||||||
|
|
||||||
// Verify that Modules and ServerName are empty
|
// Verify that Modules and ServerName are empty
|
||||||
assert.Empty(t, result.Modules)
|
require.Empty(t, result.Modules)
|
||||||
assert.Empty(t, result.ServerName)
|
require.Empty(t, result.ServerName)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSentry(t *testing.T) {
|
||||||
|
dsn := fmt.Sprintf("https://%s@sentry.example.com/%d",
|
||||||
|
gofakeit.LetterN(32),
|
||||||
|
gofakeit.Number(0, 1000),
|
||||||
|
)
|
||||||
|
context := gofakeit.LetterN(5)
|
||||||
|
version := gofakeit.LetterN(5)
|
||||||
|
|
||||||
|
var producedEvent *sentry.Event
|
||||||
|
interceptor := func(event *sentry.Event, hint *sentry.EventHint) *sentry.Event {
|
||||||
|
producedEvent = event
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
err := Init(
|
||||||
|
WithDSN(dsn),
|
||||||
|
WithContext(context, version),
|
||||||
|
func(o *sentry.ClientOptions) {
|
||||||
|
o.BeforeSend = interceptor
|
||||||
|
},
|
||||||
|
)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
wg := sync.WaitGroup{}
|
||||||
|
wg.Add(1)
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
message := gofakeit.LetterN(5)
|
||||||
|
err := errors.New(message)
|
||||||
|
defer func() {
|
||||||
|
recoveredError := recover().(error)
|
||||||
|
require.NotNil(t, recoveredError)
|
||||||
|
require.ErrorIs(t, err, recoveredError)
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
defer Recover()
|
||||||
|
panic(err)
|
||||||
|
}()
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
|
require.NotNil(t, producedEvent)
|
||||||
|
|
||||||
|
err = Close()
|
||||||
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue