generate asserts for evt.Unmarshaled in hubtest (#2214)

This commit is contained in:
blotus 2023-05-26 11:44:58 +02:00 committed by GitHub
parent 9167bd107d
commit f6924f8c57
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -246,12 +246,47 @@ func (p *ParserAssert) AutoGenParserAssert() string {
}
ret += fmt.Sprintf(`results["%s"]["%s"][%d].Evt.Enriched["%s"] == "%s"`+"\n", stage, parser, pidx, ekey, Escape(eval))
}
for ekey, eval := range result.Evt.Unmarshaled {
if eval == "" {
continue
}
base := fmt.Sprintf(`results["%s"]["%s"][%d].Evt.Unmarshaled["%s"]`, stage, parser, pidx, ekey)
for _, line := range p.buildUnmarshaledAssert("", eval) {
ret += base + line
}
}
}
}
}
return ret
}
func (p *ParserAssert) buildUnmarshaledAssert(ekey string, eval interface{}) []string {
ret := make([]string, 0)
switch val := eval.(type) {
case map[string]interface{}:
for k, v := range val {
ret = append(ret, p.buildUnmarshaledAssert(fmt.Sprintf(`%s["%s"]`, ekey, k), v)...)
}
case map[interface{}]interface{}:
for k, v := range val {
ret = append(ret, p.buildUnmarshaledAssert(fmt.Sprintf(`%s["%s"]`, ekey, k), v)...)
}
case []interface{}:
case string:
ret = append(ret, fmt.Sprintf(`%s == "%s"`+"\n", ekey, Escape(val)))
case bool:
ret = append(ret, fmt.Sprintf(`%s == %t`+"\n", ekey, val))
case int:
ret = append(ret, fmt.Sprintf(`%s == %d`+"\n", ekey, val))
case float64:
ret = append(ret, fmt.Sprintf(`%s == %f`+"\n", ekey, val))
default:
log.Warningf("unknown type '%T' for key '%s'", val, ekey)
}
return ret
}
func LoadParserDump(filepath string) (*ParserResults, error) {
var pdump ParserResults