-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Less memory exaustive coverage transformer. (#110)
* Reduce memory consumption and fix timeout exception. Signed-off-by: André Silva <andre15andre@hotmail.com> * Add tests Signed-off-by: André Silva <andre15andre@hotmail.com> * Fix compressed coverage tests Signed-off-by: André Silva <andre15andre@hotmail.com>
- Loading branch information
1 parent
0e602d5
commit 73b7dd0
Showing
6 changed files
with
226 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
65 changes: 65 additions & 0 deletions
65
...n/java/eu/stamp_project/testrunner/listener/impl/CoverageCollectorDetailedCompressed.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
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.List; | ||
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, List<String> classesDirectory) { | ||
|
||
CoverageInformation covered = new CoverageInformation(); | ||
|
||
final CoverageBuilder coverageBuilder = new CoverageBuilder(); | ||
final Analyzer analyzer = new Analyzer(executionData, coverageBuilder); | ||
try { | ||
for (String directory : classesDirectory) { | ||
analyzer.analyzeAll(new File(directory)); | ||
} | ||
} 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); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
+105 Bytes
(100%)
src/main/resources/runner-classes/eu/stamp_project/testrunner/runner/ParserOptions.class
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters