public RunnablePipelineContainer(String imageId, String branchName) { this.imageId = imageId; this.branchName = branchName; this.repairnatorConfig = RepairnatorConfig.getInstance(); }
public RepairnatorConfig getConfig() { return RepairnatorConfig.getInstance(); }
private RepairnatorConfig getConfig() { return RepairnatorConfig.getInstance(); }
public InspectProcessDuration(InspectBuilds inspectBuilds, InspectJobs inspectJobs, BuildRunner buildRunner) { this.duration = RepairnatorConfig.getInstance().getDuration(); this.inspectBuilds = inspectBuilds; this.inspectJobs = inspectJobs; this.buildRunner = buildRunner; }
public InspectJobs(RTScanner scanner) { this.rtScanner = scanner; this.sleepTime = RepairnatorConfig.getInstance().getJobSleepTime(); }
public static PersonIdent getCommitterIdent() { if (committerIdent == null) { committerIdent = new PersonIdent(RepairnatorConfig.getInstance().getGithubUserName(), RepairnatorConfig.getInstance().getGithubUserEmail()); } return committerIdent; }
public ProjectScanner(Date lookFromDate, Date lookToDate, String runId) { this.lookFromDate = lookFromDate; this.lookToDate = lookToDate; this.slugs = new HashSet<String>(); this.repositories = new HashSet<Repository>(); this.runId = runId; this.jTravis = RepairnatorConfig.getInstance().getJTravis(); this.logger.info("Look from " + Utils.formatCompleteDate(this.lookFromDate) + " to " + Utils.formatCompleteDate(this.lookToDate)); }
public InspectBuilds(RTScanner rtScanner) { this.rtScanner = rtScanner; this.sleepTime = RepairnatorConfig.getInstance().getBuildSleepTime(); this.maxSubmittedBuilds = RepairnatorConfig.getInstance().getMaxInspectedBuilds(); this.watchedBuildSerializer = new WatchedBuildSerializer(this.rtScanner.getEngines(), this.rtScanner); }
public void initRunner() { this.setDockerImageName(RepairnatorConfig.getInstance().getDockerImageName()); this.initExecutorService(RepairnatorConfig.getInstance().getNbThreads()); }
public static List<SerializerEngine> initFileSerializerEngines(Logger logger) { List<SerializerEngine> fileSerializerEngines = new ArrayList<>(); RepairnatorConfig config = RepairnatorConfig.getInstance(); if (config.getOutputPath() != null) { logger.info("Initialize file serializer engines."); String path = config.getOutputPath(); path += config.getBuildId() > 0 ? "/"+config.getBuildId() : ""; fileSerializerEngines.add(new CSVSerializerEngine(path)); fileSerializerEngines.add(new JSONFileSerializerEngine(path)); } else { logger.info("File serializers won't be used."); } return fileSerializerEngines; }
/** * Use this method to submit a build to the thread which refresh their status. */ public void submitWaitingBuild(int buildId) { Optional<Build> optionalBuild = RepairnatorConfig.getInstance().getJTravis().build().fromId(buildId); if (optionalBuild.isPresent()) { this.inspectBuilds.submitNewBuild(optionalBuild.get()); } } }
public BuildRunner(RTScanner rtScanner) { LOGGER.info("Init build runner"); super.setDockerOutputDir(RepairnatorConfig.getInstance().getLogDirectory()); super.setRunId(RepairnatorConfig.getInstance().getRunId()); super.setEngines(rtScanner.getEngines()); }
public static SerializerEngine initMongoDBSerializerEngine(Logger logger) { RepairnatorConfig config = RepairnatorConfig.getInstance(); if (config.getMongodbHost() != null) { logger.info("Initialize mongoDB serializer engine."); MongoConnection mongoConnection = new MongoConnection(config.getMongodbHost(), config.getMongodbName()); if (mongoConnection.isConnected()) { return new MongoDBSerializerEngine(mongoConnection); } else { logger.error("Error while connecting to mongoDB."); } } else { logger.info("MongoDB won't be used for serialization."); } return null; }
public static List<NotifierEngine> initNotifierEngines(Logger logger) { List<NotifierEngine> notifierEngines = new ArrayList<>(); RepairnatorConfig config = RepairnatorConfig.getInstance(); if (config.getSmtpServer() != null && config.getNotifyTo() != null) { logger.info("The email notifier engine will be used."); notifierEngines.add(new EmailNotifierEngine(config.getNotifyTo(), config.getSmtpServer(), config.getSmtpPort(), config.isSmtpTLS(), config.getSmtpUsername(), config.getSmtpPassword())); } else { logger.info("The email notifier engine won't be used."); } return notifierEngines; }
public static List<NotifierEngine> initEmailSummaryEngines(Logger logger) { List<NotifierEngine> summaryEngines = new ArrayList<>(); RepairnatorConfig config = RepairnatorConfig.getInstance(); if(config.getSmtpServer() != null && config.getSummaryFrequency() != null && config.getNotifySummary() != null) { logger.info("The summary email engine will be used."); summaryEngines.add(new EmailNotifierEngine(config.getNotifySummary(), config.getSmtpServer(), config.getSmtpPort(), config.isSmtpTLS(), config.getSmtpUsername(), config.getSmtpPassword())); } else { logger.info("The summary email engine will not be used."); } return summaryEngines; }
public String forkRepository(String repository, AbstractStep step) throws IOException { GitHub gh = RepairnatorConfig.getInstance().getGithub(); showGitHubRateInformation(gh, step); if (gh.getRateLimit().remaining > 10) { GHRepository originalRepo = gh.getRepository(repository); if (originalRepo != null) { return originalRepo.fork().getUrl().toString(); } } return null; }
private boolean isFailedBuildFailingByTestFailure(Build build) { for (Job job : build.getJobs()) { RepairnatorConfig.getInstance().getJTravis().refresh(job); if (job.getState() == StateType.FAILED) { Optional<Log> optionalLog = job.getLog(); if (optionalLog.isPresent()) { Log jobLog = optionalLog.get(); if (jobLog.getBuildTool() == BuildTool.MAVEN) { TestsInformation testInfo = jobLog.getTestsInformation(); // testInfo can be null if the build tool is unknown if (testInfo != null && (testInfo.getFailing() > 0 || testInfo.getErrored() > 0)) { return true; } else { logger.debug("No failing or erroring test found in build " + build.getId()); } } else { logger.debug("Maven is not used in the build " + build.getId()); } } else { logger.error("Error while getting a job log: (jobId: " + job.getId() + ")"); } } } return false; }
private void serializeData() { if (serializers != null) { if (RepairnatorConfig.getInstance().getLauncherMode() == LauncherMode.BEARS) { this.getLogger().info("Serialize all data for the pair of builds " + this.getInspector().getBuggyBuild().getId() + ", " + this.getInspector().getPatchedBuild().getId()); } else { this.getLogger().info("Serialize all data for build: " + this.getInspector().getBuggyBuild().getId()); } for (AbstractDataSerializer serializer : this.serializers) { serializer.serializeData(this.inspector); } } }
protected void forkRepository() { ProjectInspector inspector = this.getInspector(); JobStatus jobStatus = inspector.getJobStatus(); RepairnatorConfig config = RepairnatorConfig.getInstance(); if (jobStatus.isHasBeenPatched() && !jobStatus.isHasBeenForked() && config.isFork()) { String repositoryName = getInspector().getRepoSlug(); getLogger().info("Fork the repository: "+repositoryName); try { String forkedRepoUrl = inspector.getGitHelper().forkRepository(repositoryName, this); if (forkedRepoUrl != null) { jobStatus.setForkURL(forkedRepoUrl); jobStatus.setHasBeenForked(true); getLogger().info("Obtain the following fork URL: "+forkedRepoUrl); } else { getLogger().error("Error while forking the repository"); } } catch (IOException e) { getLogger().error("Error while forking the repository "+repositoryName, e); } } else { getLogger().info("The repository won't be forked."); } }
@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); } }