/** * Removes elements that points to the oldest items. * Leave trends unchanged if the limit is bigger than current trends length. * * @param limit number of elements that will be leave */ public void limitItems(int limit) { buildNumbers = copyLastElements(buildNumbers, limit); passedFeatures = copyLastElements(passedFeatures, limit); failedFeatures = copyLastElements(failedFeatures, limit); totalFeatures = copyLastElements(totalFeatures, limit); passedScenarios = copyLastElements(passedScenarios, limit); failedScenarios = copyLastElements(failedScenarios, limit); totalScenarios = copyLastElements(totalScenarios, limit); passedSteps = copyLastElements(passedSteps, limit); failedSteps = copyLastElements(failedSteps, limit); skippedSteps = copyLastElements(skippedSteps, limit); pendingSteps = copyLastElements(pendingSteps, limit); undefinedSteps = copyLastElements(undefinedSteps, limit); totalSteps = copyLastElements(totalSteps, limit); durations = copyLastElements(durations, limit); }
/** * Since pending and undefined steps were added later * there is need to fill missing data for those statuses. */ private void fillMissingSteps() { // correct only pending and undefined steps passedFeatures = fillMissingArray(passedFeatures); passedScenarios = fillMissingArray(passedScenarios); passedSteps = fillMissingArray(passedSteps); skippedSteps = fillMissingArray(skippedSteps); pendingSteps = fillMissingArray(pendingSteps); undefinedSteps = fillMissingArray(undefinedSteps); }
@Override public void prepareReport() { context.put("buildNumbers", trends.getBuildNumbers()); context.put("failedFeatures", trends.getFailedFeatures()); context.put("passedFeatures", trends.getPassedFeatures()); context.put("failedScenarios", trends.getFailedScenarios()); context.put("passedScenarios", trends.getPassedScenarios()); context.put("passedSteps", trends.getPassedSteps()); context.put("failedSteps", trends.getFailedSteps()); context.put("skippedSteps", trends.getSkippedSteps()); context.put("pendingSteps", trends.getPendingSteps()); context.put("undefinedSteps", trends.getUndefinedSteps()); context.put("durations", trends.getDurations()); }
/** * Adds build into the trends. * @param buildNumber number of the build * @param reportable stats for the generated report */ public void addBuild(String buildNumber, Reportable reportable) { buildNumbers = (String[]) ArrayUtils.add(buildNumbers, buildNumber); passedFeatures = ArrayUtils.add(passedFeatures, reportable.getPassedFeatures()); failedFeatures = ArrayUtils.add(failedFeatures, reportable.getFailedFeatures()); totalFeatures = ArrayUtils.add(totalFeatures, reportable.getFeatures()); passedScenarios = ArrayUtils.add(passedScenarios, reportable.getPassedScenarios()); failedScenarios = ArrayUtils.add(failedScenarios, reportable.getFailedScenarios()); totalScenarios = ArrayUtils.add(totalScenarios, reportable.getScenarios()); passedSteps = ArrayUtils.add(passedSteps, reportable.getPassedSteps()); failedSteps = ArrayUtils.add(failedSteps, reportable.getFailedSteps()); skippedSteps = ArrayUtils.add(skippedSteps, reportable.getSkippedSteps()); pendingSteps = ArrayUtils.add(pendingSteps, reportable.getPendingSteps()); undefinedSteps = ArrayUtils.add(undefinedSteps, reportable.getUndefinedSteps()); totalSteps = ArrayUtils.add(totalSteps, reportable.getSteps()); durations = ArrayUtils.add(durations, reportable.getDuration()); // this should be removed later but for now correct features and save valid data applyPatchForFeatures(); if (pendingSteps.length < buildNumbers.length) { fillMissingSteps(); } if (durations.length < buildNumbers.length) { fillMissingDurations(); } }
private Trends loadOrCreateTrends() { File trendsFile = configuration.getTrendsStatsFile(); if (trendsFile != null && trendsFile.exists()) { return loadTrends(trendsFile); } else { return new Trends(); } }
private void appendToTrends(Trends trends, Reportable result) { trends.addBuild(configuration.getBuildNumber(), result); }
/** * Due to the error with old implementation where total features * were passed instead of failures (and vice versa) following correction must be applied for trends generated * between release 3.0.0 and 3.1.0. */ private void applyPatchForFeatures() { for (int i = 0; i < totalFeatures.length; i++) { int total = totalFeatures[i]; int failures = getFailedFeatures()[i]; if (total < failures) { // this data must be changed since it was generated by invalid code int tmp = total; totalFeatures[i] = failures; failedFeatures[i] = tmp; } } }
/** * Adds build into the trends. * @param buildNumber number of the build * @param reportable stats for the generated report */ public void addBuild(String buildNumber, Reportable reportable) { buildNumbers = (String[]) ArrayUtils.add(buildNumbers, buildNumber); passedFeatures = ArrayUtils.add(passedFeatures, reportable.getPassedFeatures()); failedFeatures = ArrayUtils.add(failedFeatures, reportable.getFailedFeatures()); totalFeatures = ArrayUtils.add(totalFeatures, reportable.getFeatures()); passedScenarios = ArrayUtils.add(passedScenarios, reportable.getPassedScenarios()); failedScenarios = ArrayUtils.add(failedScenarios, reportable.getFailedScenarios()); totalScenarios = ArrayUtils.add(totalScenarios, reportable.getScenarios()); passedSteps = ArrayUtils.add(passedSteps, reportable.getPassedSteps()); failedSteps = ArrayUtils.add(failedSteps, reportable.getFailedSteps()); skippedSteps = ArrayUtils.add(skippedSteps, reportable.getSkippedSteps()); pendingSteps = ArrayUtils.add(pendingSteps, reportable.getPendingSteps()); undefinedSteps = ArrayUtils.add(undefinedSteps, reportable.getUndefinedSteps()); totalSteps = ArrayUtils.add(totalSteps, reportable.getSteps()); durations = ArrayUtils.add(durations, reportable.getDuration()); // this should be removed later but for now correct features and save valid data applyPatchForFeatures(); if (pendingSteps.length < buildNumbers.length) { fillMissingSteps(); } if (durations.length < buildNumbers.length) { fillMissingDurations(); } }
private Trends loadOrCreateTrends() { File trendsFile = configuration.getTrendsStatsFile(); if (trendsFile != null && trendsFile.exists()) { return loadTrends(trendsFile); } else { return new Trends(); } }
private void appendToTrends(Trends trends, Reportable result) { trends.addBuild(configuration.getBuildNumber(), result); }
/** * Due to the error with old implementation where total features * were passed instead of failures (and vice versa) following correction must be applied for trends generated * between release 3.0.0 and 3.1.0. */ private void applyPatchForFeatures() { for (int i = 0; i < totalFeatures.length; i++) { int total = totalFeatures[i]; int failures = getFailedFeatures()[i]; if (total < failures) { // this data must be changed since it was generated by invalid code int tmp = total; totalFeatures[i] = failures; failedFeatures[i] = tmp; } } }
@Override public void prepareReport() { context.put("buildNumbers", trends.getBuildNumbers()); context.put("failedFeatures", trends.getFailedFeatures()); context.put("passedFeatures", trends.getPassedFeatures()); context.put("failedScenarios", trends.getFailedScenarios()); context.put("passedScenarios", trends.getPassedScenarios()); context.put("passedSteps", trends.getPassedSteps()); context.put("failedSteps", trends.getFailedSteps()); context.put("skippedSteps", trends.getSkippedSteps()); context.put("pendingSteps", trends.getPendingSteps()); context.put("undefinedSteps", trends.getUndefinedSteps()); context.put("durations", trends.getDurations()); }
/** * Since pending and undefined steps were added later * there is need to fill missing data for those statuses. */ private void fillMissingSteps() { // correct only pending and undefined steps passedFeatures = fillMissingArray(passedFeatures); passedScenarios = fillMissingArray(passedScenarios); passedSteps = fillMissingArray(passedSteps); skippedSteps = fillMissingArray(skippedSteps); pendingSteps = fillMissingArray(pendingSteps); undefinedSteps = fillMissingArray(undefinedSteps); }
/** * Removes elements that points to the oldest items. * Leave trends unchanged if the limit is bigger than current trends length. * * @param limit number of elements that will be leave */ public void limitItems(int limit) { buildNumbers = copyLastElements(buildNumbers, limit); passedFeatures = copyLastElements(passedFeatures, limit); failedFeatures = copyLastElements(failedFeatures, limit); totalFeatures = copyLastElements(totalFeatures, limit); passedScenarios = copyLastElements(passedScenarios, limit); failedScenarios = copyLastElements(failedScenarios, limit); totalScenarios = copyLastElements(totalScenarios, limit); passedSteps = copyLastElements(passedSteps, limit); failedSteps = copyLastElements(failedSteps, limit); skippedSteps = copyLastElements(skippedSteps, limit); pendingSteps = copyLastElements(pendingSteps, limit); undefinedSteps = copyLastElements(undefinedSteps, limit); totalSteps = copyLastElements(totalSteps, limit); durations = copyLastElements(durations, limit); }