in validator/src/main/java/com/amazon/aoc/App.java [151:183]
private void validate(Context context, List<ValidationConfig> validationConfigList)
throws Exception {
CloudWatchService cloudWatchService = new CloudWatchService(region);
Dimension dimension = new Dimension().withName(TEST_CASE_DIM_KEY).withValue(this.testcase);
int maxValidationCycles = 1;
ValidatorFactory validatorFactory = new ValidatorFactory(context);
if (this.isCanary) {
maxValidationCycles = 20;
}
for (int cycle = 0; cycle < maxValidationCycles; cycle++) {
for (ValidationConfig validationConfigItem : validationConfigList) {
try {
validatorFactory.launchValidator(validationConfigItem).validate();
} catch (Exception e) {
if (this.isCanary) {
//emit metric
cloudWatchService.putMetricData(CANARY_NAMESPACE, CANARY_METRIC_NAME, 0.0, dimension);
}
throw e;
}
}
if (maxValidationCycles - cycle - 1 > 0) {
log.info("Completed {} validation cycle for current canary test. "
+ "Still need to validate {} cycles. Sleep 1 minute then proceed.",
cycle + 1, maxValidationCycles - cycle - 1);
TimeUnit.MINUTES.sleep(1);
}
}
if (this.isCanary) {
//emit metric
cloudWatchService.putMetricData(CANARY_NAMESPACE, CANARY_METRIC_NAME, 1.0, dimension);
}
}