-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(HMS-3369): Implement replacing as beforeSend hook
With implementing the replace functionality as Sentry hook, we can implement it bit more efficiently for only messages that are sent to sentry. It also allows us to use the sentry writer as LevelWriter and leverage WriteLevel function. WriteLevel is bit more streamlined as it allows to skip filtering when not needed.
- Loading branch information
1 parent
22b063a
commit b448d8b
Showing
4 changed files
with
53 additions
and
143 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,106 +1,71 @@ | ||
package logging | ||
|
||
import ( | ||
"bytes" | ||
"testing" | ||
|
||
"github.com/getsentry/sentry-go" | ||
"github.com/stretchr/testify/require" | ||
) | ||
|
||
func TestNewline(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("x\nx\n")) | ||
require.Equal(t, "x\nx\n", buf.String()) | ||
} | ||
|
||
func TestNoNewline(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("x\nx")) | ||
require.Equal(t, "x\n", buf.String()) | ||
evt := sentry.Event{Message: "x\nx\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "x\nx\n", result.Message) | ||
} | ||
|
||
func TestNoNewlineClose(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("x\nx")) | ||
repl.Close() | ||
require.Equal(t, "x\nx", buf.String()) | ||
} | ||
|
||
func TestBufferFlush(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("a\n")) | ||
_, _ = repl.Write([]byte("\n")) | ||
require.Equal(t, "a\n\n", buf.String()) | ||
require.Zero(t, len(repl.buf)) | ||
evt := sentry.Event{Message: "x\nx"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "x\nx", result.Message) | ||
} | ||
|
||
func TestUUID(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("ca767444-d1f9-11ed-afa1-0242ac120002\n")) | ||
require.Equal(t, "?\n", buf.String()) | ||
} | ||
|
||
func TestUUIDSplit(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("ca767444-d1f9-")) | ||
_, _ = repl.Write([]byte("11ed-afa1-")) | ||
_, _ = repl.Write([]byte("")) | ||
_, _ = repl.Write([]byte("0242ac120002\n")) | ||
require.Equal(t, "?\n", buf.String()) | ||
evt := sentry.Event{Message: "ca767444-d1f9-11ed-afa1-0242ac120002\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "?\n", result.Message) | ||
} | ||
|
||
func TestARN(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("arn:aws:iam::4328974392798432:role/my-role-123\n")) | ||
require.Equal(t, "?\n", buf.String()) | ||
} | ||
|
||
func TestARNSplit(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("arn:aws:iam::")) | ||
_, _ = repl.Write([]byte("4328974392798432:role/my-role-123\n")) | ||
require.Equal(t, "?\n", buf.String()) | ||
evt := sentry.Event{Message: "arn:aws:iam::4328974392798432:role/my-role-123\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "?\n", result.Message) | ||
} | ||
|
||
func TestIPv4(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("read tcp 10.128.24.14:42094->10.0.217.126:6379: i/o timeout\n")) | ||
require.Equal(t, "read tcp ?->?: i/o timeout\n", buf.String()) | ||
evt := sentry.Event{Message: "read tcp 10.128.24.14:42094->10.0.217.126:6379: i/o timeout\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "read tcp ?->?: i/o timeout\n", result.Message) | ||
} | ||
|
||
func TestFingerprint(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("pubkey with fingerprint (57:d4:13:ff:c0:74:51:50:41:ec:e1:cd:f1:88:b0:61)\n")) | ||
require.Equal(t, "pubkey with fingerprint (?)\n", buf.String()) | ||
evt := sentry.Event{Message: "pubkey with fingerprint (57:d4:13:ff:c0:74:51:50:41:ec:e1:cd:f1:88:b0:61)\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "pubkey with fingerprint (?)\n", result.Message) | ||
} | ||
|
||
func TestAWSResourceID(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("instance ID 'i-0fe8a8adc1403f5b1' does not exist\n\n\n")) | ||
require.Equal(t, "instance ID '?' does not exist\n\n\n", buf.String()) | ||
evt := sentry.Event{Message: "instance ID 'i-0fe8a8adc1403f5b1' does not exist\n\n\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "instance ID '?' does not exist\n\n\n", result.Message) | ||
} | ||
|
||
func TestGoogleProject(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("The resource 'projects/xxx' was not found\n")) | ||
require.Equal(t, "The resource ? was not found\n", buf.String()) | ||
evt := sentry.Event{Message: "The resource 'projects/xxx' was not found\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "The resource ? was not found\n", result.Message) | ||
} | ||
|
||
func TestAzureTime(t *testing.T) { | ||
buf := bytes.NewBufferString("") | ||
repl := NewSentryReplacer(buf) | ||
_, _ = repl.Write([]byte("'start time': '2023-06-24T19:34:34.2581206+00:00'\n")) | ||
require.Equal(t, "'start time': '?'\n", buf.String()) | ||
evt := sentry.Event{Message: "'start time': '2023-06-24T19:34:34.2581206+00:00'\n"} | ||
repl := NewSentryReplacer() | ||
result := repl.Replace(&evt, nil) | ||
require.Equal(t, "'start time': '?'\n", result.Message) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters