in compare/src/main/result-comparator.go [48:144]
func main() {
registerFlags(pflag.CommandLine)
pflag.CommandLine.AddGoFlagSet(goflag.CommandLine)
pflag.Parse()
if leftBuildNumber == 0 || rightBuildNumber == 0 {
fmt.Fprintf(os.Stderr, "Need both left and right build numbers")
return
}
googleGCSBucketUtils := utils.NewUtils(utils.KubekinsBucket, utils.LogDir)
leftResp, err := googleGCSBucketUtils.GetFileFromJenkinsGoogleBucket(job, leftBuildNumber, buildFilePath)
if err != nil {
panic(err)
}
leftBody := leftResp.Body
defer leftBody.Close()
leftBodyScanner := bufio.NewScanner(leftBody)
leftLogs, leftResources, leftMetrics := src.ProcessSingleTest(leftBodyScanner, leftBuildNumber)
rightResp, err := googleGCSBucketUtils.GetFileFromJenkinsGoogleBucket(job, rightBuildNumber, buildFilePath)
if err != nil {
panic(err)
}
rightBody := rightResp.Body
defer rightBody.Close()
rightBodyScanner := bufio.NewScanner(rightBody)
rightLogs, rightResources, rightMetrics := src.ProcessSingleTest(rightBodyScanner, rightBuildNumber)
if len(leftLogs) != 0 && len(rightLogs) != 0 {
for k := range leftLogs {
if _, ok := rightLogs[k]; !ok {
fmt.Printf("Right logs missing for test %v\n", k)
continue
}
violatingLogs := src.CompareLogGenerationSpeed(leftLogs[k], rightLogs[k])
if len(violatingLogs) == 0 {
continue
}
if enableOutputColoring {
src.ChangeColor(ct.Cyan, os.Stdout)
}
fmt.Printf("Differences for test %v", k)
if enableOutputColoring {
src.ResetColor(os.Stdout)
}
fmt.Print("\n")
violatingLogs.PrintToStdout(leftBuildNumber, rightBuildNumber, enableOutputColoring)
}
}
fmt.Println("")
if len(leftResources) != 0 && len(rightResources) != 0 {
for k := range leftResources {
if _, ok := rightResources[k]; !ok {
fmt.Printf("Right resources missing for test %v\n", k)
continue
}
violatingResources := src.CompareResourceUsages(leftResources[k], rightResources[k])
if len(violatingResources) == 0 {
continue
}
if enableOutputColoring {
src.ChangeColor(ct.Cyan, os.Stdout)
}
fmt.Printf("Differences for test %v", k)
if enableOutputColoring {
src.ResetColor(os.Stdout)
}
fmt.Print("\n")
violatingResources.PrintToStdout(leftBuildNumber, rightBuildNumber, enableOutputColoring)
}
}
fmt.Println("")
if len(leftMetrics) != 0 && len(rightMetrics) != 0 {
for k := range rightMetrics {
if _, ok := rightMetrics[k]; !ok {
fmt.Printf("Right resources missing for test %v\n", k)
continue
}
violatingMetrics := src.CompareMetrics(leftMetrics[k], rightMetrics[k])
if len(violatingMetrics) == 0 {
continue
}
if enableOutputColoring {
src.ChangeColor(ct.Cyan, os.Stdout)
}
fmt.Printf("Differences for test %v", k)
if enableOutputColoring {
src.ResetColor(os.Stdout)
}
fmt.Print("\n")
violatingMetrics.PrintToStdout(leftBuildNumber, rightBuildNumber, enableOutputColoring)
}
}
}