From 5f21098fdc401cfae0a6b4d980bddcbd96c2b4cf Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Wed, 17 Apr 2024 03:58:43 -0600 Subject: [PATCH] test and update asset pattern to catch ip addresses --- config.go | 2 +- slack.go | 20 ++++++++++++-------- slack_test.go | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/config.go b/config.go index a1365f9..2bf4a2f 100644 --- a/config.go +++ b/config.go @@ -38,7 +38,7 @@ type Config struct { } var ( - renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]` + renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]|ip-[0-9]+-[0-9]+-[0-9]+-[0-9]+\.[a-z]+-[a-z]+-[0-9]+\.compute\.internal` renderDatacenterPattern = `[a-z]{4}[a-z]*-[0-9]` renderEventNamePattern = `(\[[^\]]*\] *)?(?P.*)` ) diff --git a/slack.go b/slack.go index 875898d..f9c22c8 100644 --- a/slack.go +++ b/slack.go @@ -61,14 +61,7 @@ func newSlackToModelProcess(cfg Config) processFunc { cfg.DatacenterPattern: &s.Datacenter, cfg.EventNamePattern: &s.EventName, } { - r := regexp.MustCompile(pattern) - parsed := r.FindString(*ptr) - for i, name := range r.SubexpNames() { - if i > 0 && name != "" { - parsed = r.FindStringSubmatch(*ptr)[i] - } - } - *ptr = parsed + *ptr = withPattern(pattern, *ptr) } event := model.Event{} @@ -93,6 +86,17 @@ func newSlackToModelProcess(cfg Config) processFunc { } } +func withPattern(pattern string, given string) string { + r := regexp.MustCompile(pattern) + parsed := r.FindString(given) + for i, name := range r.SubexpNames() { + if i > 0 && name != "" { + parsed = r.FindStringSubmatch(given)[i] + } + } + return parsed +} + type ( parsedSlackMessage struct { ID string diff --git a/slack_test.go b/slack_test.go index 7caa95b..9a4c0d4 100644 --- a/slack_test.go +++ b/slack_test.go @@ -266,3 +266,37 @@ func TestWrappedSlack(t *testing.T) { t.Error(got, got2) } } + +func TestWithPattern(t *testing.T) { + cases := map[string]struct { + given string + pattern string + want string + }{ + "pods unavailable on node": { + given: `pods are unavailable on node ip-12-345-67-890.xx-yyyyy-1.compute.internal.`, + pattern: renderAssetPattern, + want: `ip-12-345-67-890.xx-yyyyy-1.compute.internal`, + }, + "redis err": { + given: `Redis instance red-abc123 is emitting Some error repeatedly`, + pattern: renderAssetPattern, + want: `red-abc123`, + }, + "pg err": { + given: `db dpg-xyz123 is in a pinch`, + pattern: renderAssetPattern, + want: `dpg-xyz123`, + }, + } + + for name, d := range cases { + c := d + t.Run(name, func(t *testing.T) { + got := withPattern(c.pattern, c.given) + if got != c.want { + t.Errorf("withPattern(%q, %q) expected %q but got %q", c.pattern, c.given, c.want, got) + } + }) + } +}