private List<Object> serializeAsList(ProjectInspector inspector, String toolName, JsonElement jsonElement) { BuildToBeInspected buildToBeInspected = inspector.getBuildToBeInspected(); List<Object> result = new ArrayList<>(); result.add(Utils.formatCompleteDate(new Date())); result.add(buildToBeInspected.getRunId()); result.add(buildToBeInspected.getBuggyBuild().getId()); result.add(toolName); result.add(jsonElement.toString()); return result; }
private void printToStdout(Map<ScannedBuildStatus, List<BuildToBeInspected>> listOfBuilds) { for (ScannedBuildStatus status : ScannedBuildStatus.values()) { if (!listOfBuilds.get(status).isEmpty()) { if (this.config.isBearsDelimiter()) { System.out.println("[Status="+status.name()+"]"); } for (BuildToBeInspected buildToBeInspected : listOfBuilds.get(status)) { if (this.config.getLauncherMode() == LauncherMode.REPAIR) { Launcher.LOGGER.info("Incriminated project and build: " + buildToBeInspected.getBuggyBuild().getRepository().getSlug() + ":" + buildToBeInspected.getBuggyBuild().getId()); System.out.println(buildToBeInspected.getBuggyBuild().getId()); } else { Launcher.LOGGER.info("Incriminated project and pair of builds: " + buildToBeInspected.getBuggyBuild().getRepository().getSlug() + ":" + buildToBeInspected.getBuggyBuild().getId() + "" + Utils.COMMA + "" + buildToBeInspected.getPatchedBuild().getId()); System.out.println(buildToBeInspected.getBuggyBuild().getId() + "" + Utils.COMMA + "" + buildToBeInspected.getPatchedBuild().getId()); } } } } }
private Map<ScannedBuildStatus, List<BuildToBeInspected>> getListOfBuildsFromRepo(List<Repository> repos) { Map<ScannedBuildStatus, List<BuildToBeInspected>> results = new HashMap<>(); for (ScannedBuildStatus status : ScannedBuildStatus.values()) { results.put(status, new ArrayList<>()); } this.logger.debug("---------------------------------------------------------------"); this.logger.debug("Scanning builds."); this.logger.debug("---------------------------------------------------------------"); for (Repository repo : repos) { Optional<List<Build>> builds = this.jTravis.build().betweenDates(repo.getSlug(), this.lookFromDate, this.lookToDate); if (builds.isPresent()) { List<Build> repoBuilds = builds.get(); for (Build build : repoBuilds) { this.totalScannedBuilds++; BuildToBeInspected buildToBeInspected = getBuildToBeInspected(build); if (buildToBeInspected != null) { results.get(buildToBeInspected.getStatus()).add(buildToBeInspected); } } } } return results; }
private List<Object> serializeAsList(BuildToBeInspected buildToBeInspected) { List<Object> dataCol = new ArrayList<Object>(); Build build = buildToBeInspected.getPatchedBuild(); Build previousBuild = buildToBeInspected.getBuggyBuild(); long previousBuildId = (previousBuild != null) ? previousBuild.getId() : -1; String committerEmail = "nobody@github.com"; if (build.getCommitter().isPresent()) { committerEmail = build.getCommitter().get().getEmail(); } Date date = new Date(); dataCol.add(build.getId() + ""); dataCol.add(previousBuildId + ""); dataCol.add(buildToBeInspected.getStatus().name()); dataCol.add(build.getRepository().getSlug()); dataCol.add(Utils.formatCompleteDate(date)); dataCol.add(Utils.formatOnlyDay(date)); dataCol.add(Utils.getHostname()); dataCol.add(Utils.getTravisUrl(build.getId(), build.getRepository().getSlug())); dataCol.add(Utils.getTravisUrl(previousBuildId, build.getRepository().getSlug())); dataCol.add(committerEmail); dataCol.add(buildToBeInspected.getRunId()); return dataCol; }
dataCol.add(build.getId() + ""); dataCol.add(previousBuildId + ""); dataCol.add(buildToBeInspected.getStatus().name()); dataCol.add(state); dataCol.add(realState); dataCol.add(Utils.getTravisUrl(previousBuildId, previousBuildSlug)); dataCol.add(committerEmail); dataCol.add(buildToBeInspected.getRunId());
private List<Object> serializeAsList(ProjectInspector inspector) { Map<String, Integer> durations = inspector.getJobStatus().getStepsDurationsInSeconds(); Build build = inspector.getBuggyBuild(); List<Object> dataCol = new ArrayList<Object>(); dataCol.add(build.getId() + ""); dataCol.add(build.getRepository().getSlug()); dataCol.add(Utils.formatCompleteDate(new Date())); dataCol.add(Utils.getHostname()); dataCol.add(inspector.getBuildToBeInspected().getRunId()); int totalDuration = 0; for (Map.Entry<String, Integer> stringIntegerEntry : durations.entrySet()) { dataCol.add(stringIntegerEntry.getValue()); totalDuration += stringIntegerEntry.getValue(); } dataCol.add(totalDuration); return dataCol; }
public Build getBuggyBuild() { return this.buildToBeInspected.getBuggyBuild(); }
this.buildToBeInspected = new BuildToBeInspected(buggyBuild, patchedBuild, ScannedBuildStatus.FAILING_AND_PASSING, runId); } else { this.buildToBeInspected = new BuildToBeInspected(buggyBuild, patchedBuild, ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES, runId); this.buildToBeInspected = new BuildToBeInspected(buggyBuild, optionalNextPassing.get(), ScannedBuildStatus.FAILING_AND_PASSING, runId); } else { this.buildToBeInspected = new BuildToBeInspected(buggyBuild, null, ScannedBuildStatus.ONLY_FAIL, runId);
public Build getPatchedBuild() { return this.buildToBeInspected.getPatchedBuild(); }
private JsonElement serializeAsJson(BuildToBeInspected buildToBeInspected) { JsonObject result = new JsonObject(); Build build = buildToBeInspected.getPatchedBuild(); Build previousBuild = buildToBeInspected.getBuggyBuild(); long previousBuildId = (previousBuild != null) ? previousBuild.getId() : -1; String committerEmail = "nobody@github.com"; if (build.getCommitter().isPresent()) { committerEmail = build.getCommitter().get().getEmail(); } Date date = new Date(); result.addProperty("buildId", build.getId()); result.addProperty("previousBuildId", previousBuildId); result.addProperty("scannedStatus", buildToBeInspected.getStatus().name()); result.addProperty("repositoryName", build.getRepository().getSlug()); result.addProperty("dateScannedStr", Utils.formatCompleteDate(date)); this.addDate(result, "dateScanned", date); result.addProperty("dayScanned", Utils.formatOnlyDay(date)); result.addProperty("hostname", Utils.getHostname()); result.addProperty("travisBuildUrl", Utils.getTravisUrl(build.getId(), build.getRepository().getSlug())); result.addProperty("travisPreviousBuildUrl", Utils.getTravisUrl(previousBuildId, build.getRepository().getSlug())); result.addProperty("committerEmail", committerEmail); result.addProperty("runId", buildToBeInspected.getRunId()); return result; }
result.addProperty("scannedBuildStatus", buildToBeInspected.getStatus().name()); result.addProperty("status", state); result.addProperty("realStatus", realState); result.addProperty("previousBuildTravisUrl", Utils.getTravisUrl(previousBuildId, previousBuildSlug)); result.addProperty("committerEmail", committerEmail); result.addProperty("runId", buildToBeInspected.getRunId());
private JsonElement serializeAsJson(ProjectInspector inspector) { Map<String, Integer> durations = inspector.getJobStatus().getStepsDurationsInSeconds(); Build build = inspector.getBuggyBuild(); JsonObject result = new JsonObject(); result.addProperty("buildId", build.getId()); result.addProperty("repositoryName", build.getRepository().getSlug()); result.addProperty("buildReproductionDateStr", Utils.formatCompleteDate(new Date())); this.addDate(result, "buildReproductionDate", new Date()); result.addProperty("hostname", Utils.getHostname()); result.addProperty("runId", inspector.getBuildToBeInspected().getRunId()); int totalDuration = 0; for (Map.Entry<String, Integer> stepDuration : durations.entrySet()) { result.addProperty(stepDuration.getKey(), stepDuration.getValue()); totalDuration += stepDuration.getValue(); } result.addProperty("totalDuration", totalDuration); return result; }
public String getRepoSlug() { return this.buildToBeInspected.getBuggyBuild().getRepository().getSlug(); }
if (RepairnatorConfig.getInstance().getLauncherMode() == LauncherMode.REPAIR) { this.logger.debug("Build "+build.getId()+" is interesting to be inspected."); return new BuildToBeInspected(build, null, ScannedBuildStatus.ONLY_FAIL, this.runId); } else { this.logger.debug("Build "+build.getId()+" seems interesting to be inspected, thus get its previous build..."); this.totalNumberOfFailingAndPassingBuildPairs++; this.logger.debug("The pair "+previousBuild.getId()+" ["+previousBuild.getState()+"], "+build.getId()+" ["+build.getState()+"] is interesting to be inspected."); return new BuildToBeInspected(previousBuild, build, ScannedBuildStatus.FAILING_AND_PASSING, this.runId); } else { if ((mode == BearsMode.BOTH || mode == BearsMode.PASSING_PASSING) && previousBuild.getState() == StateType.PASSED && thereIsDiffOnJavaFile(build, previousBuild) && thereIsDiffOnTests(build, previousBuild)) { this.totalNumberOfPassingAndPassingBuildPairs++; this.logger.debug("The pair "+previousBuild.getId()+" ["+previousBuild.getState()+"], "+build.getId()+" ["+build.getState()+"] is interesting to be inspected."); return new BuildToBeInspected(previousBuild, build, ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES, this.runId); } else { this.logger.debug("The pair "+previousBuild.getId()+" ["+previousBuild.getState()+"], "+build.getId()+" ["+build.getState()+"] is NOT interesting to be inspected.");
private JsonElement serializeAsJson(ProjectInspector inspector, String toolName, JsonElement jsonElement) { BuildToBeInspected buildToBeInspected = inspector.getBuildToBeInspected(); JsonObject data = new JsonObject(); data.addProperty("dateStr", Utils.formatCompleteDate(new Date())); this.addDate(data, "date", new Date()); data.addProperty("runId", buildToBeInspected.getRunId()); data.addProperty("buildId", buildToBeInspected.getBuggyBuild().getId()); data.addProperty("toolname", toolName); data.add("diagnostic", jsonElement); return data; }
reproductionDateBeginning = reproductionDateBeginning == null ? new Date() : reproductionDateBeginning; this.addDate(element, "reproductionDate", reproductionDateBeginning); element.addProperty("buildStatus", inspector.getBuildToBeInspected().getStatus().name()); element.addProperty("buggyBuildId", inspector.getBuggyBuild().getId()); if (inspector.getPatchedBuild() != null) {
Launcher.LOGGER.info("Incriminated project and build: " + buildToBeInspected.getBuggyBuild().getRepository().getSlug() + ":" + buildToBeInspected.getBuggyBuild().getId()); writer.write(buildToBeInspected.getBuggyBuild().getId() + ""); } else { Launcher.LOGGER.info("Incriminated project and pair of builds: " + buildToBeInspected.getBuggyBuild().getRepository().getSlug() + ":" + buildToBeInspected.getBuggyBuild().getId() + "" + Utils.COMMA + "" + buildToBeInspected.getPatchedBuild().getId()); writer.write(buildToBeInspected.getBuggyBuild().getId() + "" + Utils.COMMA + "" + buildToBeInspected.getPatchedBuild().getId());
List<Object> dataAsList = new ArrayList<>(); dataAsList.add(Utils.getHostname()); dataAsList.add(inspector.getBuildToBeInspected().getRunId()); dataAsList.add(Utils.formatCompleteDate(new Date())); dataAsList.add(Utils.formatOnlyDay(new Date())); dataAsJson.addProperty("runId", inspector.getBuildToBeInspected().getRunId()); dataAsJson.addProperty("buildId", inspector.getBuggyBuild().getId()); dataAsJson.addProperty("repositoryName", inspector.getRepoSlug());
public ProjectInspector(BuildToBeInspected buildToBeInspected, String workspace, List<AbstractDataSerializer> serializers, List<AbstractNotifier> notifiers) { this.buildToBeInspected = buildToBeInspected; this.workspace = workspace; this.repoLocalPath = workspace + File.separator + getRepoSlug() + File.separator + buildToBeInspected.getBuggyBuild().getId(); this.repoToPushLocalPath = repoLocalPath+"_topush"; this.m2LocalPath = new File(this.repoLocalPath + File.separator + ".m2").getAbsolutePath(); this.serializers = serializers; this.gitHelper = new GitHelper(); this.jobStatus = new JobStatus(repoLocalPath); this.notifiers = notifiers; this.checkoutType = CheckoutType.NO_CHECKOUT; this.steps = new ArrayList<>(); this.initProperties(); }
private List<Object> serializeAsList(BuildToBeInspected buildToBeInspected, RepairPatch patch) { Build build = buildToBeInspected.getBuggyBuild(); List<Object> result = new ArrayList<>(); result.add(Utils.formatCompleteDate(new Date())); result.add(buildToBeInspected.getRunId()); result.add(build.getId()); result.add(patch.getToolname()); result.add(patch.getDiff()); result.add(patch.getFilePath()); result.add(Utils.getHostname()); return result; }