+ text = ""
+ for idx, test_set in enumerate(alert.get("include", [])):
+ build, version, passed, failed, failed_tests = \
+ self._get_compressed_failed_tests(alert, test_set)
+ if build is None:
+ ret_code, build_nr, _ = get_last_completed_build_number(
+ self._spec.environment["urls"]["URL[JENKINS,CSIT]"],
+ alert["urls"][idx].split('/')[-1])
+ if ret_code != 0:
+ build_nr = ''
+ text += "\n\nNo input data available for '{set}'. See CSIT " \
+ "build {link}/{build} for more information.\n".\
+ format(set='-'.join(test_set.split('-')[-2:]),
+ link=alert["urls"][idx],
+ build=build_nr)
+ continue
+ text += ("\n\n{topo}-{arch}, "
+ "{failed} tests failed, "
+ "{passed} tests passed, "
+ "CSIT build: {link}/{build}, "
+ "VPP version: {version}\n\n".
+ format(topo=test_set.split('-')[-2],
+ arch=test_set.split('-')[-1],
+ failed=failed,
+ passed=passed,
+ link=alert["urls"][idx],
+ build=build,
+ version=version))
+ regression_hdr = ("\n\n{topo}-{arch}, "
+ "CSIT build: {link}/{build}, "
+ "VPP version: {version}\n\n"
+ .format(topo=test_set.split('-')[-2],
+ arch=test_set.split('-')[-1],
+ link=alert["urls"][idx],
+ build=build,
+ version=version
+ ))
+ max_len_name = 0
+ max_len_nics = 0
+ max_len_framesizes = 0
+ max_len_cores = 0
+ for name, params in failed_tests.items():
+ failed_tests[name]["nics"] = ",".join(sorted(params["nics"]))
+ failed_tests[name]["framesizes"] = \
+ ",".join(sorted(params["framesizes"]))
+ failed_tests[name]["cores"] = ",".join(sorted(params["cores"]))
+ if len(name) > max_len_name:
+ max_len_name = len(name)
+ if len(failed_tests[name]["nics"]) > max_len_nics:
+ max_len_nics = len(failed_tests[name]["nics"])
+ if len(failed_tests[name]["framesizes"]) > max_len_framesizes:
+ max_len_framesizes = len(failed_tests[name]["framesizes"])
+ if len(failed_tests[name]["cores"]) > max_len_cores:
+ max_len_cores = len(failed_tests[name]["cores"])
+
+ for name, params in failed_tests.items():
+ text += "{name} {nics} {frames} {cores}\n".format(
+ name=name + " " * (max_len_name - len(name)),
+ nics=params["nics"] +
+ " " * (max_len_nics - len(params["nics"])),
+ frames=params["framesizes"] + " " *
+ (max_len_framesizes - len(params["framesizes"])),
+ cores=params["cores"] +
+ " " * (max_len_cores - len(params["cores"])))
+
+ # Add list of regressions:
+ file_name = "{0}/cpta-regressions-{1}.txt".\
+ format(config["output-dir"], alert["urls"][idx].split('/')[-1])