func LaunchValidator()

in validator/validators/validator.go [32:70]


func LaunchValidator(vConfig models.ValidateConfig) error {
	var (
		agentCollectionPeriod    = vConfig.GetAgentCollectionPeriod()
		startTimeValidation      = time.Now().Truncate(time.Minute).Add(time.Minute)
		endTimeValidation        = startTimeValidation.Add(agentCollectionPeriod)
		durationBeforeNextMinute = time.Until(startTimeValidation)
	)

	validator, err := NewValidator(vConfig)
	if err != nil {
		return err
	}
	log.Printf("Start to sleep %f s for the metric to be available in the beginning of next minute ", durationBeforeNextMinute.Seconds())
	time.Sleep(durationBeforeNextMinute)

	log.Printf("Start to generate load in %f s for the agent to collect and send all the metrics to CloudWatch within the datapoint period ", agentCollectionPeriod.Seconds())
	err = validator.GenerateLoad()
	if err != nil {
		return err

	}

	time.Sleep(agentCollectionPeriod)
	log.Printf("Start to sleep 120s for CloudWatch to process all the metrics")
	time.Sleep(2 * time.Minute)

	err = validator.CheckData(startTimeValidation, endTimeValidation)
	if err != nil {
		return err
	}

	err = validator.Cleanup()
	if err != nil {
		return err
	}

	return nil

}