test and update asset pattern to catch ip addresses
parent
7c2d663401
commit
5f21098fdc
|
|
@ -38,7 +38,7 @@ type Config struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
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]`
|
renderDatacenterPattern = `[a-z]{4}[a-z]*-[0-9]`
|
||||||
renderEventNamePattern = `(\[[^\]]*\] *)?(?P<result>.*)`
|
renderEventNamePattern = `(\[[^\]]*\] *)?(?P<result>.*)`
|
||||||
)
|
)
|
||||||
|
|
|
||||||
20
slack.go
20
slack.go
|
|
@ -61,14 +61,7 @@ func newSlackToModelProcess(cfg Config) processFunc {
|
||||||
cfg.DatacenterPattern: &s.Datacenter,
|
cfg.DatacenterPattern: &s.Datacenter,
|
||||||
cfg.EventNamePattern: &s.EventName,
|
cfg.EventNamePattern: &s.EventName,
|
||||||
} {
|
} {
|
||||||
r := regexp.MustCompile(pattern)
|
*ptr = withPattern(pattern, *ptr)
|
||||||
parsed := r.FindString(*ptr)
|
|
||||||
for i, name := range r.SubexpNames() {
|
|
||||||
if i > 0 && name != "" {
|
|
||||||
parsed = r.FindStringSubmatch(*ptr)[i]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*ptr = parsed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
event := model.Event{}
|
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 (
|
type (
|
||||||
parsedSlackMessage struct {
|
parsedSlackMessage struct {
|
||||||
ID string
|
ID string
|
||||||
|
|
|
||||||
|
|
@ -266,3 +266,37 @@ func TestWrappedSlack(t *testing.T) {
|
||||||
t.Error(got, got2)
|
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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue