Skip to content

Commit

Permalink
Proper handling of existing reports for relative comparisons (JENKINS…
Browse files Browse the repository at this point in the history
…-46046) (#127)
  • Loading branch information
tilln authored and undera committed Aug 10, 2017
1 parent 9ef946b commit 5546f9d
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions src/main/java/hudson/plugins/performance/PerformancePublisher.java
Expand Up @@ -70,9 +70,11 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Set;

public class PerformancePublisher extends Recorder implements SimpleBuildStep {

Expand Down Expand Up @@ -401,7 +403,7 @@ private void addExternalReportActionsToBuild(Run<?, ?> run, List<PerformanceRepo
}

private Collection<PerformanceReport> locatePerformanceReports(Run<?, ?> run, FilePath workspace, TaskListener listener, List<PerformanceReportParser> parsers) throws IOException, InterruptedException {
Collection<PerformanceReport> performanceReports = Collections.emptyList();
Collection<PerformanceReport> performanceReports = new ArrayList<PerformanceReport>();
PrintStream logger = listener.getLogger();
EnvVars env = run.getEnvironment(listener);
String glob;
Expand All @@ -425,7 +427,7 @@ private Collection<PerformanceReport> locatePerformanceReports(Run<?, ?> run, Fi
}

List<File> localReports = copyReportsToMaster(run, logger, files, parser.getDescriptor().getDisplayName());
performanceReports = parser.parse(run, localReports, listener); // TODO: WHY NOT .ADD() ?????
performanceReports.addAll(parser.parse(run, localReports, listener));
}
return performanceReports;
}
Expand All @@ -434,31 +436,39 @@ private List<UriReport> getBuildUriReports(Run<?, ?> build, FilePath workspace,
List<PerformanceReportParser> parsers, boolean locatePerformanceReports)
throws IOException, InterruptedException {

List<UriReport> uriReports = new ArrayList<UriReport>();

if (locatePerformanceReports) {
Collection<PerformanceReport> performanceReports = locatePerformanceReports(build, workspace, listener, parsers);
if (performanceReports == null) {
return null;
}

for (PerformanceReport r : performanceReports) {
// URI list is the list of labels in the current JMeter results
// file
return r.getUriListOrdered();
uriReports.addAll(r.getUriListOrdered());
}
} else {
Set<PerformanceReport> parsedReports = new HashSet<PerformanceReport>();

for (PerformanceReportParser parser : parsers) {
// add the report to the build object.
List<File> localReports = getExistingReports(build, listener.getLogger(), parser.getDescriptor().getDisplayName());
Collection<PerformanceReport> parsedReports = parser.parse(build, localReports, listener);

for (PerformanceReport r : parsedReports) {
// uri list is the list of labels in the previous jmeter results
// file
return r.getUriListOrdered();
}
// For more than one parser of the same type, existing reports will be found multiple times,
// so we collect them in a Set to avoid duplicates (based on comparison by report filename).
parsedReports.addAll(parser.parse(build, localReports, listener));
}

for (PerformanceReport r : parsedReports) {
// uri list is the list of labels in the previous jmeter results
// file
uriReports.addAll(r.getUriListOrdered());
}

}
return Collections.emptyList();
return uriReports;
}

// for mode "standard evaluation"
Expand Down

0 comments on commit 5546f9d

Please sign in to comment.