Skip to content

Commit

Permalink
Merge cb1b4f8 into 02f4d94
Browse files Browse the repository at this point in the history
  • Loading branch information
andre15silva committed Jul 16, 2021
2 parents 02f4d94 + cb1b4f8 commit 6f1f7e7
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 6 deletions.
10 changes: 6 additions & 4 deletions src/main/java/eu/stamp_project/testrunner/EntryPoint.java
Original file line number Diff line number Diff line change
Expand Up @@ -594,13 +594,15 @@ private static void runGivenCommandLine(String commandLine) throws TimeoutExcept
inheritIO(process.getErrorStream(), EntryPoint.outPrintStream);
}

long startTime = System.currentTimeMillis();
boolean finished = process.waitFor(timeoutInMs, TimeUnit.MILLISECONDS);
long endTime = System.currentTimeMillis();
if (!finished) {
throw new RuntimeException("Forked process did not finished correctly");
throw new RuntimeException("Forked process did not finish correctly. " +
"Timeout set was " + timeoutInMs + " ms, " +
"process took " + (endTime - startTime) + " ms before ending.");
}
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
} catch (IOException | InterruptedException e) {
throw new RuntimeException(e);
} finally {
if (process != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package eu.stamp_project.testrunner.listener.impl;

import eu.stamp_project.testrunner.listener.CoverageTransformer;
import org.jacoco.core.analysis.Analyzer;
import org.jacoco.core.analysis.CoverageBuilder;
import org.jacoco.core.analysis.IClassCoverage;
import org.jacoco.core.analysis.IMethodCoverage;
import org.jacoco.core.data.ExecutionDataStore;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
* Returns a {@link CoverageDetailed} but containing only information regarding covered classes.
* Uses less memory compared to {@link CoverageCollectorDetailed} since the information about non-covered classes is
* ignored.
*/
public class CoverageCollectorDetailedCompressed implements CoverageTransformer {

@Override
public CoverageDetailed transformJacocoObject(ExecutionDataStore executionData, String classesDirectory) {

CoverageInformation covered = new CoverageInformation();

final CoverageBuilder coverageBuilder = new CoverageBuilder();
final Analyzer analyzer = new Analyzer(executionData, coverageBuilder);
try {
//TODO: change the interface to an array of URL
String[] paths = classesDirectory.split(File.pathSeparator);
for (String path : paths) {
analyzer.analyzeAll(new File(path));
}
} catch (IOException e) {
throw new RuntimeException(e);
}

for (IClassCoverage classCoverage : coverageBuilder.getClasses()) {

if (classCoverage.getInstructionCounter().getCoveredCount() > 0) {

Map<Integer, Integer> covClass = new HashMap<>();

for (IMethodCoverage methodCoverage : classCoverage.getMethods()) {

if (!"<clinit>".equals(methodCoverage.getName())) {

for (int i = methodCoverage.getFirstLine(); i <= methodCoverage.getLastLine() + 1; i++) {
int coveredI = methodCoverage.getLine(i).getInstructionCounter().getCoveredCount();
covClass.put(i, coveredI);
}

}
}
CoverageFromClass l = new CoverageFromClass(classCoverage.getName(), classCoverage.getPackageName(),
classCoverage.getFirstLine(), classCoverage.getLastLine(), covClass);

covered.put(classCoverage.getName(), l);
}

}
return new CoverageDetailed(covered);
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package eu.stamp_project.testrunner.runner;

import eu.stamp_project.testrunner.listener.Coverage;
import eu.stamp_project.testrunner.listener.CoverageTransformer;
import eu.stamp_project.testrunner.listener.impl.CoverageCollectorDetailed;
import eu.stamp_project.testrunner.listener.impl.CoverageCollectorDetailedCompressed;
import eu.stamp_project.testrunner.listener.impl.CoverageCollectorMethodDetailed;
import eu.stamp_project.testrunner.listener.impl.CoverageCollectorSummarization;
import eu.stamp_project.testrunner.utils.ConstantsHelper;
Expand Down Expand Up @@ -123,7 +123,8 @@ private static void usage() {
public enum CoverageTransformerDetail {
SUMMARIZED,
DETAIL,
METHOD_DETAIL
METHOD_DETAIL,
DETAIL_COMPRESSED
}
/**
* This value represents at which level of detail coverage information should be provided
Expand Down Expand Up @@ -167,6 +168,8 @@ public CoverageTransformer getCoverageTransformer() {
return new CoverageCollectorDetailed();
case METHOD_DETAIL:
return new CoverageCollectorMethodDetailed();
case DETAIL_COMPRESSED:
return new CoverageCollectorDetailedCompressed();
case SUMMARIZED:
default:
return new CoverageCollectorSummarization();
Expand Down
Binary file not shown.

0 comments on commit 6f1f7e7

Please sign in to comment.