func()

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
}