Search in sources :

Example 21 with Build

use of fr.inria.jtravis.entities.Build in project repairnator by Spirals-Team.

the class PatchNotifier method observe.

public void observe(ProjectInspector inspector) {
    JobStatus status = inspector.getJobStatus();
    Build buggyBuild = inspector.getBuggyBuild();
    Repository repository = buggyBuild.getRepository();
    if (status.isHasBeenPatched()) {
        String subject = "Patched build: " + buggyBuild.getId() + " - " + repository.getSlug();
        String text = "Hurray !\n\n" + "Patch(es) has been found for the following build: " + Utils.getTravisUrl(buggyBuild.getId(), repository.getSlug()) + ".\n";
        if (status.isHasBeenPushed()) {
            String slug = repository.getSlug();
            String repoURL = Utils.getGithubRepoUrl(slug);
            String branchName = buggyBuild.getCommit().getBranch();
            String[] divideSlug = slug.split("/");
            String projectName = divideSlug[1];
            text += "Data about patches has been pushed on the following branch: " + status.getGitBranchUrl() + ".\n\n";
            text += "Follow those instruction to create a pull request:\n";
            text += "mkdir " + projectName + "\n";
            text += "cd " + projectName + "\n";
            text += "git init\n";
            text += "git fetch " + repoURL + " " + branchName + "\n";
            text += "git checkout -b patch FETCH_HEAD\n";
            text += "vi [file_to_patch]\n";
            text += "git commit -m \"tentative patch\" -a\n";
            if (status.isHasBeenForked()) {
                text += "git push " + status.getForkURL() + "\n";
            } else {
                text += "Then fork the repository (" + slug + ") from Github interface\n";
                text += "git push [url to the fork]\n";
            }
        }
        text += "You may find several information on the following about those patches: \n";
        if (status.getNopolInformations() != null && !status.getNopolPatches().isEmpty() && !this.alreadyNotifiedForNopol) {
            text += this.notifyForNopol(status);
            this.notifyEngines("[NOPOL] " + subject, text);
        }
        if (status.getNpeFixPatches() != null && !status.getNpeFixPatches().isEmpty() && !this.alreadyNotifiedForNPEFix) {
            text += this.notifyForNPEFix(status);
            this.notifyEngines("[NPEFIX] " + subject, text);
        }
        if (status.getAstorPatches() != null && !status.getAstorPatches().isEmpty() && !this.alreadyNotifiedForAstor) {
            text += this.notifityForAstor(status);
            this.notifyEngines("[ASTOR] " + subject, text);
        }
    }
}
Also used : JobStatus(fr.inria.spirals.repairnator.process.inspectors.JobStatus) Repository(fr.inria.jtravis.entities.Repository) Build(fr.inria.jtravis.entities.Build)

Example 22 with Build

use of fr.inria.jtravis.entities.Build in project repairnator by Spirals-Team.

the class InspectorSerializer4Bears method serializeAsJson.

private JsonElement serializeAsJson(ProjectInspector inspector) {
    JobStatus jobStatus = inspector.getJobStatus();
    BuildToBeInspected buildToBeInspected = inspector.getBuildToBeInspected();
    Build build = inspector.getPatchedBuild();
    Build previousBuild = inspector.getBuggyBuild();
    int previousBuildId = (previousBuild != null) ? previousBuild.getId() : -1;
    String state = this.getPrettyPrintState(inspector);
    String realState = (jobStatus.getPipelineState() != null) ? jobStatus.getPipelineState().name() : "null";
    String typeOfFailures = StringUtils.join(jobStatus.getMetrics().getFailureNames(), ",");
    String previousBuildSlug = (previousBuild != null) ? previousBuild.getRepository().getSlug() : "";
    String committerEmail = (build.getCommit().getCommitterEmail() != null) ? build.getCommit().getCommitterEmail() : "-";
    JsonObject result = new JsonObject();
    result.addProperty("buildId", build.getId());
    result.addProperty("previousBuildId", previousBuildId);
    result.addProperty("scannedBuildStatus", buildToBeInspected.getStatus().name());
    result.addProperty("status", state);
    result.addProperty("realStatus", realState);
    result.addProperty("checkoutType", inspector.getCheckoutType().name());
    result.addProperty("typeOfFailures", typeOfFailures);
    result.addProperty("repositoryName", build.getRepository().getSlug());
    result.addProperty("prNumber", build.getPullRequestNumber());
    result.addProperty("buildFinishedDateStr", Utils.formatCompleteDate(build.getFinishedAt()));
    this.addDate(result, "buildFinishedDate", build.getFinishedAt());
    result.addProperty("buildFinishedDay", Utils.formatOnlyDay(build.getFinishedAt()));
    result.addProperty("hostname", Utils.getHostname());
    result.addProperty("buildReproductionDateStr", Utils.formatCompleteDate(new Date()));
    this.addDate(result, "buildReproductionDate", new Date());
    result.addProperty("buildTravisUrl", Utils.getTravisUrl(build.getId(), build.getRepository().getSlug()));
    result.addProperty("previousBuildTravisUrl", Utils.getTravisUrl(previousBuildId, previousBuildSlug));
    result.addProperty("committerEmail", committerEmail);
    result.addProperty("runId", buildToBeInspected.getRunId());
    return result;
}
Also used : JobStatus(fr.inria.spirals.repairnator.process.inspectors.JobStatus) Build(fr.inria.jtravis.entities.Build) JsonObject(com.google.gson.JsonObject) BuildToBeInspected(fr.inria.spirals.repairnator.BuildToBeInspected) Date(java.util.Date)

Example 23 with Build

use of fr.inria.jtravis.entities.Build in project repairnator by Spirals-Team.

the class InspectorSerializer4Bears method serializeAsList.

private List<Object> serializeAsList(ProjectInspector inspector) {
    JobStatus jobStatus = inspector.getJobStatus();
    BuildToBeInspected buildToBeInspected = inspector.getBuildToBeInspected();
    Build build = inspector.getPatchedBuild();
    Build previousBuild = inspector.getBuggyBuild();
    int previousBuildId = (previousBuild != null) ? previousBuild.getId() : -1;
    String state = this.getPrettyPrintState(inspector);
    String realState = (jobStatus.getPipelineState() != null) ? jobStatus.getPipelineState().name() : "null";
    String typeOfFailures = StringUtils.join(jobStatus.getMetrics().getFailureNames(), ",") + "";
    String previousBuildSlug = (previousBuild != null) ? previousBuild.getRepository().getSlug() : "";
    String committerEmail = (build.getCommit().getCommitterEmail() != null) ? build.getCommit().getCommitterEmail() : "-";
    List<Object> dataCol = new ArrayList<Object>();
    dataCol.add(build.getId() + "");
    dataCol.add(previousBuildId + "");
    dataCol.add(buildToBeInspected.getStatus().name());
    dataCol.add(state);
    dataCol.add(realState);
    dataCol.add(inspector.getCheckoutType().name());
    dataCol.add(typeOfFailures);
    dataCol.add(build.getRepository().getSlug());
    dataCol.add(build.getPullRequestNumber() + "");
    dataCol.add(Utils.formatCompleteDate(build.getFinishedAt()));
    dataCol.add(Utils.formatOnlyDay(build.getFinishedAt()));
    dataCol.add(Utils.getHostname());
    dataCol.add(Utils.formatCompleteDate(new Date()));
    dataCol.add(Utils.getTravisUrl(build.getId(), build.getRepository().getSlug()));
    dataCol.add(Utils.getTravisUrl(previousBuildId, previousBuildSlug));
    dataCol.add(committerEmail);
    dataCol.add(buildToBeInspected.getRunId());
    return dataCol;
}
Also used : JobStatus(fr.inria.spirals.repairnator.process.inspectors.JobStatus) Build(fr.inria.jtravis.entities.Build) ArrayList(java.util.ArrayList) JsonObject(com.google.gson.JsonObject) BuildToBeInspected(fr.inria.spirals.repairnator.BuildToBeInspected) Date(java.util.Date)

Example 24 with Build

use of fr.inria.jtravis.entities.Build in project repairnator by Spirals-Team.

the class InspectorTimeSerializer4Bears method serializeAsJson.

private JsonElement serializeAsJson(ProjectInspector inspector) {
    Map<String, Integer> durations = inspector.getJobStatus().getMetrics().getStepsDurationsInSeconds();
    int cloneRepository = durations.getOrDefault(CloneRepository.class.getSimpleName(), 0);
    int checkoutBuild = durations.getOrDefault(CheckoutPatchedBuild.class.getSimpleName(), 0);
    int buildProjectBuild = durations.getOrDefault(BuildProject.class.getSimpleName() + "Build", 0);
    int testProjectBuild = durations.getOrDefault(TestProject.class.getSimpleName() + "Build", 0);
    int gatherTestInformationBuild = durations.getOrDefault(GatherTestInformation.class.getSimpleName() + "Build", 0);
    int checkoutPreviousBuild = durations.getOrDefault(CheckoutBuggyBuild.class.getSimpleName(), 0);
    int buildProjectPreviousBuild = durations.getOrDefault(BuildProject.class.getSimpleName() + "PreviousBuild", 0);
    int testProjectPreviousBuild = durations.getOrDefault(TestProject.class.getSimpleName() + "PreviousBuild", 0);
    int gatherTestInformationPreviousBuild = durations.getOrDefault(GatherTestInformation.class.getSimpleName() + "PreviousBuild", 0);
    int checkoutPreviousBuildSourceCode = durations.getOrDefault(CheckoutBuggyBuildSourceCode.class.getSimpleName(), 0);
    int buildProjectPreviousBuildSourceCode = durations.getOrDefault(BuildProject.class.getSimpleName() + "PreviousBuildSourceCode", 0);
    int testProjectPreviousBuildSourceCode = durations.getOrDefault(TestProject.class.getSimpleName() + "PreviousBuildSourceCode", 0);
    int gatherTestInformationPreviousBuildSourceCode = durations.getOrDefault(GatherTestInformation.class.getSimpleName() + "PreviousBuildSourceCode", 0);
    int pushBuild = durations.getOrDefault(PushIncriminatedBuild.class.getSimpleName(), 0);
    int computeClasspath = durations.getOrDefault(ComputeClasspath.class.getSimpleName(), 0);
    int dependencyResolution = durations.getOrDefault(ResolveDependency.class.getSimpleName(), 0);
    int totalDuration = cloneRepository + checkoutBuild + buildProjectBuild + testProjectBuild + gatherTestInformationBuild + checkoutPreviousBuild + buildProjectPreviousBuild + testProjectPreviousBuild + gatherTestInformationPreviousBuild + checkoutPreviousBuildSourceCode + buildProjectPreviousBuildSourceCode + testProjectPreviousBuildSourceCode + gatherTestInformationPreviousBuildSourceCode + pushBuild + dependencyResolution + computeClasspath;
    Build build = inspector.getPatchedBuild();
    Build previousBuild = inspector.getBuggyBuild();
    int previousBuildId = (previousBuild != null) ? previousBuild.getId() : -1;
    JsonObject result = new JsonObject();
    result.addProperty("buildId", build.getId());
    result.addProperty("previousBuildId", previousBuildId);
    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("totalDuration", totalDuration);
    result.addProperty("clonage", cloneRepository);
    result.addProperty("checkoutBuild", checkoutBuild);
    result.addProperty("build", buildProjectBuild);
    result.addProperty("test", testProjectBuild);
    result.addProperty("gatherTestInfo", gatherTestInformationBuild);
    result.addProperty("checkoutPrevious", checkoutPreviousBuild);
    result.addProperty("buildPrevious", buildProjectPreviousBuild);
    result.addProperty("testPrevious", testProjectPreviousBuild);
    result.addProperty("gatherTestInfoPrevious", gatherTestInformationPreviousBuild);
    result.addProperty("checkoutPreviousSourceCode", checkoutPreviousBuildSourceCode);
    result.addProperty("buildPreviousSourceCode", buildProjectPreviousBuildSourceCode);
    result.addProperty("testProjectPreviousBuildSourceCode", testProjectPreviousBuildSourceCode);
    result.addProperty("gatherTestInformationPreviousBuildSourceCode", gatherTestInformationPreviousBuildSourceCode);
    result.addProperty("push", pushBuild);
    result.addProperty("dependendencyResolution", dependencyResolution);
    result.addProperty("computeClasspath", computeClasspath);
    result.addProperty("runId", inspector.getBuildToBeInspected().getRunId());
    return result;
}
Also used : CheckoutBuggyBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuild) CheckoutBuggyBuildSourceCode(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuildSourceCode) JsonObject(com.google.gson.JsonObject) Date(java.util.Date) CheckoutPatchedBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild) PushIncriminatedBuild(fr.inria.spirals.repairnator.process.step.push.PushIncriminatedBuild) CheckoutPatchedBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild) Build(fr.inria.jtravis.entities.Build) CheckoutBuggyBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuild) PushIncriminatedBuild(fr.inria.spirals.repairnator.process.step.push.PushIncriminatedBuild)

Example 25 with Build

use of fr.inria.jtravis.entities.Build in project repairnator by Spirals-Team.

the class InspectorTimeSerializer4Bears method serializeAsList.

private List<Object> serializeAsList(ProjectInspector inspector) {
    Map<String, Integer> durations = inspector.getJobStatus().getMetrics().getStepsDurationsInSeconds();
    int cloneRepository = durations.getOrDefault(CloneRepository.class.getSimpleName(), 0);
    int checkoutBuild = durations.getOrDefault(CheckoutPatchedBuild.class.getSimpleName(), 0);
    int buildProjectBuild = durations.getOrDefault(BuildProject.class.getSimpleName() + "Build", 0);
    int testProjectBuild = durations.getOrDefault(TestProject.class.getSimpleName() + "Build", 0);
    int gatherTestInformationBuild = durations.getOrDefault(GatherTestInformation.class.getSimpleName() + "Build", 0);
    int checkoutPreviousBuild = durations.getOrDefault(CheckoutBuggyBuild.class.getSimpleName(), 0);
    int buildProjectPreviousBuild = durations.getOrDefault(BuildProject.class.getSimpleName() + "PreviousBuild", 0);
    int testProjectPreviousBuild = durations.getOrDefault(TestProject.class.getSimpleName() + "PreviousBuild", 0);
    int gatherTestInformationPreviousBuild = durations.getOrDefault(GatherTestInformation.class.getSimpleName() + "PreviousBuild", 0);
    int checkoutPreviousBuildSourceCode = durations.getOrDefault(CheckoutBuggyBuildSourceCode.class.getSimpleName(), 0);
    int buildProjectPreviousBuildSourceCode = durations.getOrDefault(BuildProject.class.getSimpleName() + "PreviousBuildSourceCode", 0);
    int testProjectPreviousBuildSourceCode = durations.getOrDefault(TestProject.class.getSimpleName() + "PreviousBuildSourceCode", 0);
    int gatherTestInformationPreviousBuildSourceCode = durations.getOrDefault(GatherTestInformation.class.getSimpleName() + "PreviousBuildSourceCode", 0);
    int pushBuild = durations.getOrDefault(PushIncriminatedBuild.class.getSimpleName(), 0);
    int computeClasspath = durations.getOrDefault(ComputeClasspath.class.getSimpleName(), 0);
    int dependencyResolution = durations.getOrDefault(ResolveDependency.class.getSimpleName(), 0);
    int totalDuration = cloneRepository + checkoutBuild + buildProjectBuild + testProjectBuild + gatherTestInformationBuild + checkoutPreviousBuild + buildProjectPreviousBuild + testProjectPreviousBuild + gatherTestInformationPreviousBuild + checkoutPreviousBuildSourceCode + buildProjectPreviousBuildSourceCode + testProjectPreviousBuildSourceCode + gatherTestInformationPreviousBuildSourceCode + pushBuild + computeClasspath + dependencyResolution;
    Build build = inspector.getPatchedBuild();
    Build previousBuild = inspector.getBuggyBuild();
    int previousBuildId = (previousBuild != null) ? previousBuild.getId() : -1;
    List<Object> dataCol = new ArrayList<Object>();
    dataCol.add(build.getId() + "");
    dataCol.add(previousBuildId + "");
    dataCol.add(build.getRepository().getSlug());
    dataCol.add(Utils.getHostname());
    dataCol.add(totalDuration);
    dataCol.add(cloneRepository);
    dataCol.add(checkoutBuild);
    dataCol.add(buildProjectBuild);
    dataCol.add(testProjectBuild);
    dataCol.add(gatherTestInformationBuild);
    dataCol.add(checkoutPreviousBuild);
    dataCol.add(buildProjectPreviousBuild);
    dataCol.add(testProjectPreviousBuild);
    dataCol.add(gatherTestInformationPreviousBuild);
    dataCol.add(checkoutPreviousBuildSourceCode);
    dataCol.add(buildProjectPreviousBuildSourceCode);
    dataCol.add(testProjectPreviousBuildSourceCode);
    dataCol.add(gatherTestInformationPreviousBuildSourceCode);
    dataCol.add(pushBuild);
    dataCol.add(computeClasspath);
    dataCol.add(dependencyResolution);
    return dataCol;
}
Also used : CheckoutBuggyBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuild) CheckoutBuggyBuildSourceCode(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuildSourceCode) ArrayList(java.util.ArrayList) CheckoutPatchedBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild) PushIncriminatedBuild(fr.inria.spirals.repairnator.process.step.push.PushIncriminatedBuild) CheckoutPatchedBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild) Build(fr.inria.jtravis.entities.Build) CheckoutBuggyBuild(fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuild) PushIncriminatedBuild(fr.inria.spirals.repairnator.process.step.push.PushIncriminatedBuild) JsonObject(com.google.gson.JsonObject)

Aggregations

Build (fr.inria.jtravis.entities.Build)60 BuildToBeInspected (fr.inria.spirals.repairnator.BuildToBeInspected)44 File (java.io.File)41 Path (java.nio.file.Path)40 Test (org.junit.Test)40 JobStatus (fr.inria.spirals.repairnator.process.inspectors.JobStatus)37 ProjectInspector (fr.inria.spirals.repairnator.process.inspectors.ProjectInspector)33 GitHelper (fr.inria.spirals.repairnator.process.git.GitHelper)31 CheckoutBuggyBuild (fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuild)28 ArrayList (java.util.ArrayList)15 Git (org.eclipse.jgit.api.Git)13 JsonObject (com.google.gson.JsonObject)12 CloneRepository (fr.inria.spirals.repairnator.process.step.CloneRepository)12 RepairnatorConfig (fr.inria.spirals.repairnator.config.RepairnatorConfig)11 Date (java.util.Date)11 RevCommit (org.eclipse.jgit.revwalk.RevCommit)11 CheckoutPatchedBuild (fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild)10 GatherTestInformation (fr.inria.spirals.repairnator.process.step.gatherinfo.GatherTestInformation)9 AbstractNotifier (fr.inria.spirals.repairnator.notifier.AbstractNotifier)7 AbstractDataSerializer (fr.inria.spirals.repairnator.serializer.AbstractDataSerializer)7