extract named Pattern result if a group is named
parent
a8270b524c
commit
f2a23e5d8a
12
config.go
12
config.go
|
|
@ -34,6 +34,12 @@ type Config struct {
|
|||
ai AI
|
||||
}
|
||||
|
||||
var (
|
||||
renderAssetPattern = `(dpg|svc|red)-[a-z0-9-]*[a-z0-9]`
|
||||
renderDatacenterPattern = `[a-z]{4}[a-z]*-[0-9]`
|
||||
renderEventNamePattern = `(\[[^\]]*\] *)?(?P<result>.*)`
|
||||
)
|
||||
|
||||
func newConfig(ctx context.Context) (Config, error) {
|
||||
return newConfigFromEnv(ctx, os.Getenv)
|
||||
}
|
||||
|
|
@ -42,9 +48,9 @@ func newConfigFromEnv(ctx context.Context, getEnv func(string) string) (Config,
|
|||
def := Config{
|
||||
Port: 38080,
|
||||
OllamaModel: "gemma:2b",
|
||||
AssetPattern: `(dpg|svc|red)-[a-z0-9-]*`,
|
||||
DatacenterPattern: `[a-z]{4}[a-z]*-[0-9]`,
|
||||
EventNamePattern: `(^\[[^\]]*\] *)?(?P<result>.*)`,
|
||||
AssetPattern: renderAssetPattern,
|
||||
DatacenterPattern: renderDatacenterPattern,
|
||||
EventNamePattern: renderEventNamePattern,
|
||||
}
|
||||
|
||||
var m map[string]any
|
||||
|
|
|
|||
14
main_test.go
14
main_test.go
|
|
@ -39,6 +39,9 @@ func TestRun(t *testing.T) {
|
|||
u := fmt.Sprintf("http://localhost:%d", port)
|
||||
|
||||
cfg := Config{}
|
||||
cfg.DatacenterPattern = renderDatacenterPattern
|
||||
cfg.AssetPattern = renderAssetPattern
|
||||
cfg.EventNamePattern = renderEventNamePattern
|
||||
cfg.Port = port
|
||||
cfg.driver = NewRAM()
|
||||
cfg.storage = NewStorage(cfg.driver)
|
||||
|
|
@ -120,7 +123,7 @@ func TestRun(t *testing.T) {
|
|||
}
|
||||
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if result.EventNames[0] != "[Oregon-1] Wal Receive Count Alert" {
|
||||
} else if result.EventNames[0] != "Wal Receive Count Alert" {
|
||||
t.Fatal(result.EventNames)
|
||||
} else {
|
||||
t.Logf("%+v", result)
|
||||
|
|
@ -215,14 +218,17 @@ func TestRun(t *testing.T) {
|
|||
t.Fatalf("(%d) %s", resp.StatusCode, b)
|
||||
}
|
||||
|
||||
dec := csv.NewReader(resp.Body)
|
||||
b, _ := io.ReadAll(resp.Body)
|
||||
t.Logf("whole csv: \n%s", b)
|
||||
|
||||
dec := csv.NewReader(bytes.NewReader(b))
|
||||
var lastLine []string
|
||||
for {
|
||||
line, err := dec.Read()
|
||||
if err == io.EOF {
|
||||
break
|
||||
} else if err != nil {
|
||||
t.Error(err)
|
||||
t.Error("unexpected error while reading csv line:", err)
|
||||
}
|
||||
|
||||
if lastLine == nil {
|
||||
|
|
@ -230,7 +236,7 @@ func TestRun(t *testing.T) {
|
|||
t.Errorf("last line had %v elements but this line has %v", len(lastLine), len(line))
|
||||
}
|
||||
|
||||
t.Logf("%+v", line)
|
||||
t.Logf("CSV line: %+v", line)
|
||||
lastLine = line
|
||||
}
|
||||
if lastLine == nil {
|
||||
|
|
|
|||
21
message.go
21
message.go
|
|
@ -113,13 +113,20 @@ func ParseSlack(b []byte, assetPattern, datacenterPattern, eventNamePattern stri
|
|||
return Message{}, err
|
||||
}
|
||||
|
||||
asset := regexp.MustCompile(assetPattern)
|
||||
datacenter := regexp.MustCompile(datacenterPattern)
|
||||
eventName := regexp.MustCompile(eventNamePattern)
|
||||
|
||||
m.Asset = asset.FindString(m.Asset)
|
||||
m.Datacenter = datacenter.FindString(m.Datacenter)
|
||||
m.EventName = eventName.FindString(m.EventName)
|
||||
for pattern, ptr := range map[string]*string{
|
||||
assetPattern: &m.Asset,
|
||||
datacenterPattern: &m.Datacenter,
|
||||
eventNamePattern: &m.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
|
||||
}
|
||||
|
||||
return m, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,12 +7,6 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
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) {
|
||||
cases := map[string]struct {
|
||||
slackMessage slackMessage
|
||||
|
|
@ -130,8 +124,8 @@ func TestParseSlackTestdata(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
t.Run("parseSlackJSON", func(t *testing.T) {
|
||||
got, err := parseSlackJSON(b)
|
||||
t.Run("_parseSlackJSON", func(t *testing.T) {
|
||||
got, err := _parseSlackJSON(b)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue