oops tests are failing
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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<result>.*)`,
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
2
main.go
2
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 {
|
||||
|
||||
27
message.go
27
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() {
|
||||
|
||||
@@ -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<result>.*)`
|
||||
)
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user