diff options
author | Marc R. Hoffmann <hoffmann@mountainminds.com> | 2016-03-21 23:06:48 +0100 |
---|---|---|
committer | Evgeny Mandrikov <mandrikov@gmail.com> | 2016-03-21 23:06:48 +0100 |
commit | ea2f49f6c77730315b9bd72607108482c932eb83 (patch) | |
tree | 0a88a60268f85bb960733c324f17a5e14ff4ea39 /org.jacoco.core.test | |
parent | 164485a8da42d834df4b5202079b2f2b2ac28b26 (diff) | |
download | jacoco-ea2f49f6c77730315b9bd72607108482c932eb83.tar.gz |
Don't write empty probe arrays
This optimizations reduces the size of exec files significantly in
setups where execution data is dumped after every test case.
Diffstat (limited to 'org.jacoco.core.test')
3 files changed, 36 insertions, 12 deletions
diff --git a/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataReaderWriterTest.java b/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataReaderWriterTest.java index 11545d4d..d5db8ec0 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataReaderWriterTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataReaderWriterTest.java @@ -151,7 +151,7 @@ public class ExecutionDataReaderWriterTest { public void testMissingHeader() throws IOException { buffer.reset(); writer.visitClassExecution(new ExecutionData(Long.MIN_VALUE, "Sample", - createData(0))); + createData(8))); createReaderWithVisitors().read(); } @@ -206,13 +206,13 @@ public class ExecutionDataReaderWriterTest { @Test(expected = IOException.class) public void testNoExecutionDataVisitor() throws IOException { writer.visitClassExecution(new ExecutionData(Long.MIN_VALUE, "Sample", - createData(0))); + createData(8))); createReader().read(); } @Test public void testMinClassId() throws IOException { - final boolean[] data = createData(0); + final boolean[] data = createData(8); writer.visitClassExecution(new ExecutionData(Long.MIN_VALUE, "Sample", data)); assertFalse(createReaderWithVisitors().read()); @@ -221,7 +221,7 @@ public class ExecutionDataReaderWriterTest { @Test public void testMaxClassId() throws IOException { - final boolean[] data = createData(0); + final boolean[] data = createData(8); writer.visitClassExecution(new ExecutionData(Long.MAX_VALUE, "Sample", data)); assertFalse(createReaderWithVisitors().read()); @@ -233,12 +233,20 @@ public class ExecutionDataReaderWriterTest { final boolean[] data = createData(0); writer.visitClassExecution(new ExecutionData(3, "Sample", data)); assertFalse(createReaderWithVisitors().read()); - assertArrayEquals(data, store.get(3).getProbes()); + assertTrue(store.getContents().isEmpty()); + } + + @Test + public void testNoHitClass() throws IOException { + final boolean[] data = new boolean[] { false, false, false }; + writer.visitClassExecution(new ExecutionData(3, "Sample", data)); + assertFalse(createReaderWithVisitors().read()); + assertTrue(store.getContents().isEmpty()); } @Test public void testOneClass() throws IOException { - final boolean[] data = createData(5); + final boolean[] data = createData(15); writer.visitClassExecution(new ExecutionData(3, "Sample", data)); assertFalse(createReaderWithVisitors().read()); assertArrayEquals(data, store.get(3).getProbes()); @@ -246,8 +254,8 @@ public class ExecutionDataReaderWriterTest { @Test public void testTwoClasses() throws IOException { - final boolean[] data1 = createData(5); - final boolean[] data2 = createData(7); + final boolean[] data1 = createData(15); + final boolean[] data2 = createData(185); writer.visitClassExecution(new ExecutionData(333, "Sample", data1)); writer.visitClassExecution(new ExecutionData(-45, "Sample", data2)); assertFalse(createReaderWithVisitors().read()); @@ -257,7 +265,7 @@ public class ExecutionDataReaderWriterTest { @Test public void testBigClass() throws IOException { - final boolean[] data = createData(117); + final boolean[] data = createData(3599); writer.visitClassExecution(new ExecutionData(123, "Sample", data)); assertFalse(createReaderWithVisitors().read()); assertArrayEquals(data, store.get(123).getProbes()); @@ -290,7 +298,7 @@ public class ExecutionDataReaderWriterTest { } private boolean[] createData(final int probeCount) { - final boolean[] data = new boolean[random.nextInt(probeCount + 1)]; + final boolean[] data = new boolean[probeCount]; for (int j = 0; j < data.length; j++) { data[j] = random.nextBoolean(); } diff --git a/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataTest.java b/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataTest.java index 541ddb33..5dbe6204 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/data/ExecutionDataTest.java @@ -54,6 +54,22 @@ public class ExecutionDataTest { } @Test + public void testHasHits() { + final boolean[] probes = new boolean[] { false, false, false }; + final ExecutionData e = new ExecutionData(5, "Example", probes); + assertFalse(e.hasHits()); + probes[1] = true; + assertTrue(e.hasHits()); + } + + @Test + public void testHasHits_empty() { + final boolean[] probes = new boolean[] {}; + final ExecutionData e = new ExecutionData(5, "Example", probes); + assertFalse(e.hasHits()); + } + + @Test public void testMerge() { final ExecutionData a = new ExecutionData(5, "Example", new boolean[] { false, true, false, true }); diff --git a/org.jacoco.core.test/src/org/jacoco/core/tools/ExecFileLoaderTest.java b/org.jacoco.core.test/src/org/jacoco/core/tools/ExecFileLoaderTest.java index 654dfc81..b8bdc945 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/tools/ExecFileLoaderTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/tools/ExecFileLoaderTest.java @@ -28,7 +28,6 @@ import org.jacoco.core.data.ExecutionDataStore; import org.jacoco.core.data.ExecutionDataWriter; import org.jacoco.core.data.SessionInfo; import org.jacoco.core.data.SessionInfoStore; -import org.jacoco.core.tools.ExecFileLoader; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -119,7 +118,8 @@ public class ExecFileLoaderTest { final FileOutputStream out = new FileOutputStream(file); final ExecutionDataWriter writer = new ExecutionDataWriter(out); final int value = id.length(); - writer.visitClassExecution(new ExecutionData(value, id, new boolean[0])); + writer.visitClassExecution(new ExecutionData(value, id, + new boolean[] { true })); writer.visitSessionInfo(new SessionInfo(id, value, value)); out.close(); return file; |