oops tests are failing

main
Bel LaPointe 2024-04-14 20:13:48 -06:00
parent 902ab96b2d
commit a8270b524c
7 changed files with 31 additions and 17 deletions

View File

@ -86,7 +86,7 @@ func testAI(t *testing.T, ai AI) {
t.Run("simulation", func(t *testing.T) { t.Run("simulation", func(t *testing.T) {
d := NewRAM() d := NewRAM()
FillWithTestdata(ctx, d, renderAssetPattern, renderDatacenterPattern) FillWithTestdata(ctx, d, renderAssetPattern, renderDatacenterPattern, renderEventNamePattern)
s := NewStorage(d) s := NewStorage(d)
threads, err := s.Threads(ctx) threads, err := s.Threads(ctx)

View File

@ -44,7 +44,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
OllamaModel: "gemma:2b", OllamaModel: "gemma:2b",
AssetPattern: `(dpg|svc|red)-[a-z0-9-]*`, AssetPattern: `(dpg|svc|red)-[a-z0-9-]*`,
DatacenterPattern: `[a-z]{4}[a-z]*-[0-9]`, DatacenterPattern: `[a-z]{4}[a-z]*-[0-9]`,
EventNamePattern: `(^\[[^\]]*\] *)`, EventNamePattern: `(^\[[^\]]*\] *)?(?P<result>.*)`,
} }
var m map[string]any var m map[string]any
@ -109,7 +109,7 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
result.driver = pg result.driver = pg
} }
if result.FillWithTestdata { 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 return Config{}, err
} }
} }

View File

@ -23,7 +23,7 @@ type Driver interface {
Set(context.Context, string, string, []byte) error 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" d := "./testdata/slack_events"
entries, err := os.ReadDir(d) entries, err := os.ReadDir(d)
if err != nil { if err != nil {
@ -37,7 +37,7 @@ func FillWithTestdata(ctx context.Context, driver Driver, assetPattern, datacent
if err != nil { if err != nil {
return err return err
} }
m, err := ParseSlack(b, assetPattern, datacenterPattern) m, err := ParseSlack(b, assetPattern, datacenterPattern, eventNamePattern)
if errors.Is(err, ErrIrrelevantMessage) { if errors.Is(err, ErrIrrelevantMessage) {
continue continue
} else if err != nil { } else if err != nil {

View File

@ -17,7 +17,7 @@ func TestFillTestdata(t *testing.T) {
defer can() defer can()
ram := NewRAM() ram := NewRAM()
if err := FillWithTestdata(ctx, ram, renderAssetPattern, renderDatacenterPattern); err != nil { if err := FillWithTestdata(ctx, ram, renderAssetPattern, renderDatacenterPattern, renderEventNamePattern); err != nil {
t.Fatal(err) t.Fatal(err)
} }
n := 0 n := 0

View File

@ -246,7 +246,7 @@ func _newHandlerPostAPIV1EventsSlack(cfg Config) http.HandlerFunc {
return return
} }
m, err := ParseSlack(b, cfg.AssetPattern, cfg.DatacenterPattern) m, err := ParseSlack(b, cfg.AssetPattern, cfg.DatacenterPattern, cfg.EventNamePattern)
if errors.Is(err, ErrIrrelevantMessage) { if errors.Is(err, ErrIrrelevantMessage) {
return return
} else if err != nil { } else if err != nil {

View File

@ -108,11 +108,24 @@ type (
) )
func ParseSlack(b []byte, assetPattern, datacenterPattern, eventNamePattern string) (Message, error) { func ParseSlack(b []byte, assetPattern, datacenterPattern, eventNamePattern string) (Message, error) {
m, err := parseSlackJSON(b)
if err != nil {
return Message{}, err
}
asset := regexp.MustCompile(assetPattern) asset := regexp.MustCompile(assetPattern)
datacenter := regexp.MustCompile(datacenterPattern) datacenter := regexp.MustCompile(datacenterPattern)
eventName := regexp.MustCompile(eventNamePattern) 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 { if err != nil {
return Message{}, err 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, ".", "")), Source: fmt.Sprintf(`https://renderinc.slack.com/archives/%s/p%s`, s.Event.Channel, strings.ReplaceAll(s.Event.ID, ".", "")),
Channel: s.Event.Channel, Channel: s.Event.Channel,
Thread: s.Event.ID, 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], "#"), Event: strings.TrimPrefix(strings.Split(s.Event.Attachments[0].Title, ":")[0], "#"),
Plaintext: s.Event.Attachments[0].Text, 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"), Resolved: !strings.HasPrefix(s.Event.Attachments[0].Color, "F"),
Datacenter: datacenter.FindString(tagsField), Datacenter: tagsField,
}, nil }, nil
} }
@ -156,12 +169,12 @@ func ParseSlack(b []byte, assetPattern, datacenterPattern, eventNamePattern stri
EventName: "", EventName: "",
Event: "", Event: "",
Plaintext: s.Event.Text, Plaintext: s.Event.Text,
Asset: asset.FindString(s.Event.Text), Asset: "",
Datacenter: datacenter.FindString(s.Event.Text), Datacenter: "",
}, nil }, nil
} }
func parseSlack(b []byte) (slackMessage, error) { func _parseSlackJSON(b []byte) (slackMessage, error) {
var result slackMessage var result slackMessage
err := json.Unmarshal(b, &result) err := json.Unmarshal(b, &result)
if result.Event.Nested != nil && !result.Event.Nested.Empty() { if result.Event.Nested != nil && !result.Event.Nested.Empty() {

View File

@ -10,6 +10,7 @@ import (
var ( var (
renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]` renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]`
renderDatacenterPattern = `[a-z]{4}[a-z]*-[0-9]` renderDatacenterPattern = `[a-z]{4}[a-z]*-[0-9]`
renderEventNamePattern = `(^\[[^\]]*\] *)?(?P<result>.*)`
) )
func TestParseSlackTestdata(t *testing.T) { func TestParseSlackTestdata(t *testing.T) {
@ -129,8 +130,8 @@ func TestParseSlackTestdata(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
t.Run("parseSlack", func(t *testing.T) { t.Run("parseSlackJSON", func(t *testing.T) {
got, err := parseSlack(b) got, err := parseSlackJSON(b)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -140,7 +141,7 @@ func TestParseSlackTestdata(t *testing.T) {
}) })
t.Run("ParseSlack", func(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 { if err != nil {
t.Fatal(err) t.Fatal(err)
} }