in validator/validators/basic/basic_validator.go [63:121]
func (s *BasicValidator) CheckData(startTime, endTime time.Time) error {
var (
multiErr error
ec2InstanceId = awsservice.GetInstanceId()
metricNamespace = s.vConfig.GetMetricNamespace()
validationMetric = s.vConfig.GetMetricValidation()
logValidations = s.vConfig.GetLogValidation()
)
for _, metric := range validationMetric {
metricDimensions := []cwtypes.Dimension{}
//App Signal Metrics don't have instanceid dimension
if !isAppSignalMetric(metric) {
metricDimensions = []cwtypes.Dimension{
{
Name: aws.String("InstanceId"),
Value: aws.String(ec2InstanceId),
},
}
}
for _, dimension := range metric.MetricDimension {
metricDimensions = append(metricDimensions, cwtypes.Dimension{
Name: aws.String(dimension.Name),
Value: aws.String(dimension.Value),
})
}
//App Signals metric testing (This is because we want to use a different checking method (same that was done for linux test))
if metric.MetricName == "Latency" || metric.MetricName == "Fault" || metric.MetricName == "Error" {
err := s.ValidateAppSignalMetrics(metric, metricDimensions)
if err != nil {
multiErr = multierr.Append(multiErr, err)
} else {
fmt.Println("App Signal Metrics are correct!")
}
} else {
err := s.ValidateMetric(metric.MetricName, metricNamespace, metricDimensions, metric.MetricValue, metric.MetricSampleCount, startTime, endTime)
if err != nil {
return err
}
}
}
err := s.ValidateTracesMetrics()
if err != nil {
multiErr = multierr.Append(multiErr, err)
} else {
fmt.Println("Traces Metrics are correct!")
}
for _, logValidation := range logValidations {
err := s.ValidateLogs(logValidation.LogStream, logValidation.LogValue, logValidation.LogLevel, logValidation.LogSource, logValidation.LogLines, startTime, endTime)
if err != nil {
multiErr = multierr.Append(multiErr, err)
}
}
return multiErr
}