Skip to content
Snippets Groups Projects
Commit 9cb9739a authored by Florian Angerer's avatar Florian Angerer
Browse files

Add log messages.

parent d15b65b4
No related branches found
No related tags found
No related merge requests found
......@@ -30,6 +30,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import com.oracle.truffle.r.test.packages.analyzer.Problem;
......@@ -40,6 +41,8 @@ import com.oracle.truffle.r.test.packages.analyzer.parser.LogFileParseException;
public abstract class AbstractDumper {
private static final Logger LOGGER = Logger.getLogger(AbstractDumper.class.getName());
public abstract void dump(Collection<RPackage> problems, Collection<LogFileParseException> collection);
protected Map<Class<? extends Problem>, List<Problem>> groupByType(Collection<Problem> problems) {
......@@ -66,17 +69,20 @@ public abstract class AbstractDumper {
}
protected static Collection<Problem> eliminateRedundantProblems(Collection<Problem> problems) {
// build detector hierarchy
LOGGER.fine("Building detector hierarchy.");
Set<Detector<?>> collect = problems.stream().map(p -> p.getDetector()).collect(Collectors.toSet());
Map<Detector<?>, Collection<Detector<?>>> hierarchy = new HashMap<>();
for (Detector<?> detector : collect) {
hierarchy.put(detector, collectChildrenRecursive(detector));
}
LOGGER.fine("Grouping problems by detector.");
Map<Detector<?>, List<Problem>> collect2 = problems.stream().collect(Collectors.groupingBy(p -> p.getDetector()));
LOGGER.fine("Eliminating redundnat problems.");
List<Problem> cleaned = problems.stream().filter(p -> isIncluded(p, hierarchy, collect2)).collect(Collectors.toList());
assert new HashSet<>(cleaned).size() == cleaned.size();
LOGGER.fine(String.format("Eliminated %d redundant problems.", (problems.size() - cleaned.size())));
return cleaned;
}
......
......@@ -36,6 +36,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import com.oracle.truffle.r.test.packages.analyzer.Location;
......@@ -47,6 +48,8 @@ import com.oracle.truffle.r.test.packages.analyzer.parser.LogFileParseException;
public class HTMLDumper extends AbstractDumper {
private static final Logger LOGGER = Logger.getLogger(HTMLDumper.class.getName());
private static final String TITLE = "FastR Package Test Dashboard";
private Path destDir;
......@@ -75,7 +78,7 @@ public class HTMLDumper extends AbstractDumper {
createAndCheckOutDir();
dumpIndexFile(packages, parseErrors);
} catch (IOException e) {
e.printStackTrace();
LOGGER.severe("Error writing HTML output: " + e.getMessage());
}
}
......@@ -94,6 +97,7 @@ public class HTMLDumper extends AbstractDumper {
Tag pkgDistributionTable = generateTestRunDistributionTable(indexFile, builder, groupByTestRuns(allTestRuns, allProblems));
Tag distrinctProblemDistributionTable = generateDistinctProblemDistribution(builder, groupByProblemContent(allProblems));
LOGGER.info("Writing index file.");
builder.html(builder.head(builder.title(TITLE)), builder.body(
builder.h1(TITLE),
builder.p("Total number of analysis candidates: " + allTestRuns.size()),
......@@ -103,7 +107,7 @@ public class HTMLDumper extends AbstractDumper {
builder.h2("Distinct Problem Distribution"), distrinctProblemDistributionTable));
builder.dump();
} catch (IOException e) {
e.printStackTrace();
LOGGER.severe("Error during generation of HTML output: " + e.getMessage());
}
}
......@@ -118,16 +122,19 @@ public class HTMLDumper extends AbstractDumper {
}
private static Collection<Problem> collectAllProblems(Collection<RPackage> pkgs) {
LOGGER.fine(String.format("Collecting problems for %d test runs.", pkgs.size()));
Collection<Problem> problems = new ArrayList<>();
for (RPackage pkg : pkgs) {
for (RPackageTestRun run : pkg.getTestRuns()) {
problems.addAll(run.getProblems());
}
}
LOGGER.fine(String.format("Collected %d problems.", problems.size()));
return problems;
}
private Tag generateTestRunDistributionTable(Path indexFile, HTMLBuilder builder, Map<RPackageTestRun, List<Problem>> groupByTestRun) {
LOGGER.info("Generating test run distribution table.");
List<RPackageTestRun> collect = groupByTestRun.keySet().stream().sorted((a, b) -> Integer.compare(groupByTestRun.get(b).size(), groupByTestRun.get(a).size())).collect(Collectors.toList());
Tag table = builder.table(builder.tr(
......@@ -162,6 +169,7 @@ public class HTMLDumper extends AbstractDumper {
}
private Tag generateDistinctProblemDistribution(HTMLBuilder builder, Map<ProblemContent, List<Problem>> groupByPkg) {
LOGGER.info("Generating distinct problem distribution table.");
List<ProblemContent> collect = groupByPkg.keySet().stream().sorted((a, b) -> Integer.compare(groupByPkg.get(b).size(), groupByPkg.get(a).size())).collect(Collectors.toList());
Tag table = builder.table(builder.tr(
......@@ -186,6 +194,7 @@ public class HTMLDumper extends AbstractDumper {
}
private Tag generateTypeDistributionTable(HTMLBuilder builder, Map<Class<? extends Problem>, List<Problem>> groupByType) {
LOGGER.info("Generating problem type distribution table.");
List<Class<? extends Problem>> collect = groupByType.keySet().stream().sorted((a, b) -> Integer.compare(groupByType.get(b).size(), groupByType.get(a).size())).collect(Collectors.toList());
Tag table = builder.table();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment