in validator/validators/basic/basic_validator.go [182:213]
func (s *BasicValidator) ValidateLogs(logStream, logLine, logLevel, logSource string, expectedMinimumEventCount int, startTime, endTime time.Time) error {
logGroup := awsservice.GetInstanceId()
log.Printf("Start to validate that substring '%s' has at least %d log event(s) within log group %s, log stream %s, between %v and %v", logLine, expectedMinimumEventCount, logGroup, logStream, startTime, endTime)
return awsservice.ValidateLogs(
logGroup,
logStream,
&startTime,
&endTime,
awsservice.AssertLogsNotEmpty(),
awsservice.AssertNoDuplicateLogs(),
func(events []cwltypes.OutputLogEvent) error {
var actualEventCount int
for _, event := range events {
message := *event.Message
switch logSource {
case "WindowsEvents":
if logLevel != "" && strings.Contains(message, logLine) && strings.Contains(message, logLevel) {
actualEventCount += 1
}
default:
if strings.Contains(message, logLine) {
actualEventCount += 1
}
}
}
if actualEventCount < expectedMinimumEventCount {
return fmt.Errorf("log event count for %q in %s/%s between %v and %v is %d which is less than the expected %d", logLine, logGroup, logStream, startTime, endTime, actualEventCount, expectedMinimumEventCount)
}
return nil
},
)
}