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; }
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) {
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; }
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; }
dataCol.add(build.getId() + ""); dataCol.add(previousBuildId + ""); dataCol.add(buildToBeInspected.getStatus().name()); dataCol.add(state); dataCol.add(realState);
result.addProperty("scannedBuildStatus", buildToBeInspected.getStatus().name()); result.addProperty("status", state); result.addProperty("realStatus", realState);
@Override public StepStatus shouldBeStopped(GatherTestInformation gatherTestInformation) { ProjectInspector inspector = gatherTestInformation.getInspector(); if (gatherTestInformation.getNbFailingTests() + gatherTestInformation.getNbErroringTests() == 0 && gatherTestInformation.getNbRunningTests() > 0) { if (RepairnatorConfig.getInstance().getLauncherMode() == LauncherMode.BEARS && inspector instanceof ProjectInspector4Bears) { if (inspector.getBuildToBeInspected().getStatus() == ScannedBuildStatus.FAILING_AND_PASSING) { // So, 1) the current passing build can be reproduced and 2) its previous build is a failing build // with failing tests and it can also be reproduced ((ProjectInspector4Bears) inspector).setBug(true, PipelineState.BUG_FAILING_PASSING.name()); } else if (inspector.getBuildToBeInspected().getStatus() == ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES) { // So, 1) the current passing build can be reproduced and 2) its previous build is a passing build // that fails when tested with new tests and it can also be reproduced ((ProjectInspector4Bears) inspector).setBug(true, PipelineState.BUG_PASSING_PASSING.name()); } } return StepStatus.buildSuccess(gatherTestInformation); } if (gatherTestInformation.getNbRunningTests() == 0) { return StepStatus.buildError(gatherTestInformation, PipelineState.TESTERRORS); } else { return StepStatus.buildError(gatherTestInformation, PipelineState.TESTFAILURES); } }
public void run() { AbstractStep cloneRepo = new CloneRepository(this); if (this.getBuildToBeInspected().getStatus() == ScannedBuildStatus.FAILING_AND_PASSING) { cloneRepo.addNextStep(new CheckoutBuggyBuild(this, true, CheckoutBuggyBuild.class.getSimpleName()+"Candidate")) .addNextStep(new ComputeSourceDir(this, false, true)) .addNextStep(new CommitPatch(this, CommitType.COMMIT_HUMAN_PATCH)); } else { if (this.getBuildToBeInspected().getStatus() == ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES) { cloneRepo.addNextStep(new CheckoutPatchedBuild(this, true, CheckoutPatchedBuild.class.getSimpleName()+"Candidate")) .addNextStep(new ComputeSourceDir(this, true, true))
public void run() { if (this.getBuildToBeInspected().getStatus() != ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES) { AbstractStep cloneRepo = new CloneRepository(this); cloneRepo .addNextStep(new CheckoutBuggyBuild(this, true)) .addNextStep(new BuildProject(this)) .addNextStep(new ComputePlugins(this, false)) .addNextStep(new Checkstyle(this)); super.setFinalStep(new ComputeSourceDir(this, false, true)); super.getFinalStep(). addNextStep(new WritePropertyFile(this)). addNextStep(new CommitProcessEnd(this)). addNextStep(new PushProcessEnd(this)); cloneRepo.setDataSerializer(this.getSerializers()); cloneRepo.setNotifiers(this.getNotifiers()); this.printPipeline(); try { cloneRepo.execute(); } catch (Exception e) { this.getJobStatus().addStepError("Unknown", e.getMessage()); this.logger.error("Exception catch while executing steps: ", e); } } else { this.logger.debug("Build " + this.getBuggyBuild().getId() + " is not a failing build."); } }
"\t Type of build: "+inspector.getBuildToBeInspected().getStatus().name()+"\n" + "\t Date of the buggy build: "+Utils.formatCompleteDate(buggyBuild.getFinishedAt())+"\n" + "\t Url of the buggy build: "+Utils.getTravisUrl(buggyBuild.getId(), slug)+"\n" +
this.building.addStep(stepName, stepDuration); } else { if (step.getInspector().getBuildToBeInspected().getStatus() == ScannedBuildStatus.ONLY_FAIL || step.getInspector().getBuildToBeInspected().getStatus() == ScannedBuildStatus.FAILING_AND_PASSING) { if (step instanceof CheckoutBuggyBuild) { this.building.addStep(stepName, stepDuration);
public void run() { if (this.buildToBeInspected.getStatus() != ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES) { AbstractStep cloneRepo = new CloneRepository(this); cloneRepo
switch (this.getBuildToBeInspected().getStatus()) { case ONLY_FAIL: properties.setType("only_fail");