test and update asset pattern to catch ip addresses

main
Bel LaPointe 2024-04-17 03:58:43 -06:00
parent 7c2d663401
commit 5f21098fdc
3 changed files with 47 additions and 9 deletions

View File

@ -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<result>.*)`
)

View File

@ -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

View File

@ -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)
}
})
}
}