From a8270b524c625a69df54a11baf73d71a02cbca27 Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Sun, 14 Apr 2024 20:13:48 -0600 Subject: [PATCH] oops tests are failing --- ai_test.go | 2 +- config.go | 4 ++-- driver.go | 4 ++-- driver_test.go | 2 +- main.go | 2 +- message.go | 27 ++++++++++++++++++++------- message_test.go | 7 ++++--- 7 files changed, 31 insertions(+), 17 deletions(-) diff --git a/ai_test.go b/ai_test.go index 995d4a1..b40f6d6 100644 --- a/ai_test.go +++ b/ai_test.go @@ -86,7 +86,7 @@ func testAI(t *testing.T, ai AI) { t.Run("simulation", func(t *testing.T) { d := NewRAM() - FillWithTestdata(ctx, d, renderAssetPattern, renderDatacenterPattern) + FillWithTestdata(ctx, d, renderAssetPattern, renderDatacenterPattern, renderEventNamePattern) s := NewStorage(d) threads, err := s.Threads(ctx) diff --git a/config.go b/config.go index e4915f6..8c7b1df 100644 --- a/config.go +++ b/config.go @@ -44,7 +44,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config, OllamaModel: "gemma:2b", AssetPattern: `(dpg|svc|red)-[a-z0-9-]*`, DatacenterPattern: `[a-z]{4}[a-z]*-[0-9]`, - EventNamePattern: `(^\[[^\]]*\] *)`, + EventNamePattern: `(^\[[^\]]*\] *)?(?P.*)`, } var m map[string]any @@ -109,7 +109,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config, result.driver = pg } if result.FillWithTestdata { - if err := FillWithTestdata(ctx, result.driver, result.AssetPattern, result.DatacenterPattern); err != nil { + if err := FillWithTestdata(ctx, result.driver, result.AssetPattern, result.DatacenterPattern, result.EventNamePattern); err != nil { return Config{}, err } } diff --git a/driver.go b/driver.go index c9a3360..9b35194 100644 --- a/driver.go +++ b/driver.go @@ -23,7 +23,7 @@ type Driver interface { Set(context.Context, string, string, []byte) error } -func FillWithTestdata(ctx context.Context, driver Driver, assetPattern, datacenterPattern string) error { +func FillWithTestdata(ctx context.Context, driver Driver, assetPattern, datacenterPattern, eventNamePattern string) error { d := "./testdata/slack_events" entries, err := os.ReadDir(d) if err != nil { @@ -37,7 +37,7 @@ func FillWithTestdata(ctx context.Context, driver Driver, assetPattern, datacent if err != nil { return err } - m, err := ParseSlack(b, assetPattern, datacenterPattern) + m, err := ParseSlack(b, assetPattern, datacenterPattern, eventNamePattern) if errors.Is(err, ErrIrrelevantMessage) { continue } else if err != nil { diff --git a/driver_test.go b/driver_test.go index 86bb2fe..037c26d 100644 --- a/driver_test.go +++ b/driver_test.go @@ -17,7 +17,7 @@ func TestFillTestdata(t *testing.T) { defer can() ram := NewRAM() - if err := FillWithTestdata(ctx, ram, renderAssetPattern, renderDatacenterPattern); err != nil { + if err := FillWithTestdata(ctx, ram, renderAssetPattern, renderDatacenterPattern, renderEventNamePattern); err != nil { t.Fatal(err) } n := 0 diff --git a/main.go b/main.go index cf98020..be7fddb 100644 --- a/main.go +++ b/main.go @@ -246,7 +246,7 @@ func _newHandlerPostAPIV1EventsSlack(cfg Config) http.HandlerFunc { return } - m, err := ParseSlack(b, cfg.AssetPattern, cfg.DatacenterPattern) + m, err := ParseSlack(b, cfg.AssetPattern, cfg.DatacenterPattern, cfg.EventNamePattern) if errors.Is(err, ErrIrrelevantMessage) { return } else if err != nil { diff --git a/message.go b/message.go index d1b1286..4433925 100644 --- a/message.go +++ b/message.go @@ -108,11 +108,24 @@ type ( ) func ParseSlack(b []byte, assetPattern, datacenterPattern, eventNamePattern string) (Message, error) { + m, err := parseSlackJSON(b) + if err != nil { + return Message{}, err + } + asset := regexp.MustCompile(assetPattern) datacenter := regexp.MustCompile(datacenterPattern) eventName := regexp.MustCompile(eventNamePattern) - s, err := parseSlack(b) + m.Asset = asset.FindString(m.Asset) + m.Datacenter = datacenter.FindString(m.Datacenter) + m.EventName = eventName.FindString(m.EventName) + + return m, nil +} + +func parseSlackJSON(b []byte) (Message, error) { + s, err := _parseSlackJSON(b) if err != nil { return Message{}, err } @@ -135,12 +148,12 @@ func ParseSlack(b []byte, assetPattern, datacenterPattern, eventNamePattern stri Source: fmt.Sprintf(`https://renderinc.slack.com/archives/%s/p%s`, s.Event.Channel, strings.ReplaceAll(s.Event.ID, ".", "")), Channel: s.Event.Channel, Thread: s.Event.ID, - EventName: eventNamePattern.FindString(strings.Split(s.Event.Attachments[0].Title, ": Firing: ")[1]), + EventName: strings.Split(s.Event.Attachments[0].Title, ": Firing: ")[1], Event: strings.TrimPrefix(strings.Split(s.Event.Attachments[0].Title, ":")[0], "#"), Plaintext: s.Event.Attachments[0].Text, - Asset: asset.FindString(s.Event.Attachments[0].Text), + Asset: s.Event.Attachments[0].Text, Resolved: !strings.HasPrefix(s.Event.Attachments[0].Color, "F"), - Datacenter: datacenter.FindString(tagsField), + Datacenter: tagsField, }, nil } @@ -156,12 +169,12 @@ func ParseSlack(b []byte, assetPattern, datacenterPattern, eventNamePattern stri EventName: "", Event: "", Plaintext: s.Event.Text, - Asset: asset.FindString(s.Event.Text), - Datacenter: datacenter.FindString(s.Event.Text), + Asset: "", + Datacenter: "", }, nil } -func parseSlack(b []byte) (slackMessage, error) { +func _parseSlackJSON(b []byte) (slackMessage, error) { var result slackMessage err := json.Unmarshal(b, &result) if result.Event.Nested != nil && !result.Event.Nested.Empty() { diff --git a/message_test.go b/message_test.go index 28ac0b8..2f421ab 100644 --- a/message_test.go +++ b/message_test.go @@ -10,6 +10,7 @@ import ( var ( renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]` renderDatacenterPattern = `[a-z]{4}[a-z]*-[0-9]` + renderEventNamePattern = `(^\[[^\]]*\] *)?(?P.*)` ) func TestParseSlackTestdata(t *testing.T) { @@ -129,8 +130,8 @@ func TestParseSlackTestdata(t *testing.T) { t.Fatal(err) } - t.Run("parseSlack", func(t *testing.T) { - got, err := parseSlack(b) + t.Run("parseSlackJSON", func(t *testing.T) { + got, err := parseSlackJSON(b) if err != nil { t.Fatal(err) } @@ -140,7 +141,7 @@ func TestParseSlackTestdata(t *testing.T) { }) t.Run("ParseSlack", func(t *testing.T) { - got, err := ParseSlack(b, renderAssetPattern, renderDatacenterPattern) + got, err := ParseSlack(b, renderAssetPattern, renderDatacenterPattern, renderEventNamePattern) if err != nil { t.Fatal(err) }