in integ/s3/validate-and-clean.go [110:170]
func validate(s3Client *s3.S3, response *s3.ListObjectsV2Output, bucket string, testFile string, numEvents int) {
logCounter := make([]int, numEvents)
for index := range logCounter {
logCounter[index] = 1
}
for i := range response.Contents {
input := &s3.GetObjectInput{
Bucket: aws.String(bucket),
Key: response.Contents[i].Key,
}
obj := getS3Object(s3Client, input)
dataByte, err := ioutil.ReadAll(obj.Body)
if err != nil {
exitErrorf("[TEST FAILURE] Error to parse GetObject response. %v", err)
}
data := strings.Split(string(dataByte), "\n")
for _, d := range data {
if d == "" {
continue
}
if len(d) > 500 {
continue
}
var message Message
decodeError := json.Unmarshal([]byte(d), &message)
if decodeError != nil {
exitErrorf("[TEST FAILURE] Json Unmarshal Error:", decodeError)
}
number, convertionError := strconv.Atoi(message.Log)
if convertionError != nil {
exitErrorf("[TEST FAILURE] String to Int convertion Error:", convertionError)
}
if number < 0 || number >= numEvents {
exitErrorf("[TEST FAILURE] Invalid number: %d found. Expected value in range (0 - %d)", number, numEvents)
}
logCounter[number] = 0
}
}
sum := 0
for i := range logCounter {
sum += logCounter[i]
}
if sum > 0 {
exitErrorf("[TEST FAILURE] Validation Failed. Number of missing log records: %d", sum)
} else {
fmt.Println("[TEST SUCCESSFULL] Found all the log records.")
// The file was created when the integ test started. Removing this file as a flag of test success.
os.Remove(filepath.Join("/out", testFile))
}
}