Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandre Montplaisir2014-04-11 15:43:47 +0000
committerAlexandre Montplaisir2014-04-16 22:36:24 +0000
commite9633b627399173d6d5f0d4642ef71db1e53283f (patch)
tree457eed5f251ed06df2552bf8ded8bba2e8b7a121
parent6bd2f73ea4c7f44a694910cec5bbc664f9d601b5 (diff)
downloadorg.eclipse.linuxtools-e9633b627399173d6d5f0d4642ef71db1e53283f.tar.gz
org.eclipse.linuxtools-e9633b627399173d6d5f0d4642ef71db1e53283f.tar.xz
org.eclipse.linuxtools-e9633b627399173d6d5f0d4642ef71db1e53283f.zip
tmf: Make CtfTmfTrace AutoCloseable
While we won't be able to make ITmfTrace closeable anytime soon (every time you get a local reference to a trace, it'd expect you to close() it, which is not what we want), CtfTmfTrace can benefit a bit from it, as it helps pointing out some tests that are causing resource leaks. Change-Id: Iaa163799390e01c9d4e996e2be1c5f160382aacd Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im> Reviewed-on: https://git.eclipse.org/r/25091 Tested-by: Hudson CI Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
-rw-r--r--lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/ExperimentSyncTest.java12
-rw-r--r--lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/MatchAndSyncTest.java37
-rw-r--r--lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java4
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/shared/org/eclipse/linuxtools/tmf/ctf/core/tests/shared/CtfTmfTestTrace.java2
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfIteratorTest.java5
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfEventTest.java10
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfTraceTest.java36
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/headless/Benchmark.java60
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ctf.core/src/org/eclipse/linuxtools/tmf/ctf/core/CtfTmfTrace.java8
9 files changed, 85 insertions, 89 deletions
diff --git a/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/ExperimentSyncTest.java b/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/ExperimentSyncTest.java
index 38354b68db..95ebf64b62 100644
--- a/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/ExperimentSyncTest.java
+++ b/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/ExperimentSyncTest.java
@@ -52,14 +52,12 @@ public class ExperimentSyncTest {
public void setUp() {
assumeTrue(CtfTmfTestTrace.SYNC_SRC.exists());
assumeTrue(CtfTmfTestTrace.SYNC_DEST.exists());
- CtfTmfTrace trace1 = CtfTmfTestTrace.SYNC_SRC.getTrace();
- CtfTmfTrace trace2 = CtfTmfTestTrace.SYNC_DEST.getTrace();
fTraces = new CtfTmfTrace[2];
- fTraces[0] = trace1;
- fTraces[1] = trace2;
+ fTraces[0] = CtfTmfTestTrace.SYNC_SRC.getTrace();
+ fTraces[1] = CtfTmfTestTrace.SYNC_DEST.getTrace();
- fExperiment = new TmfExperiment(trace1.getEventType(), EXPERIMENT, fTraces, BLOCK_SIZE);
+ fExperiment = new TmfExperiment(fTraces[0].getEventType(), EXPERIMENT, fTraces, BLOCK_SIZE);
TmfEventMatching.registerMatchObject(new TcpEventMatching());
TmfEventMatching.registerMatchObject(new TcpLttngEventMatching());
@@ -72,8 +70,8 @@ public class ExperimentSyncTest {
public void cleanUp() {
fTraces[0].setTimestampTransform(TmfTimestampTransform.IDENTITY);
fTraces[1].setTimestampTransform(TmfTimestampTransform.IDENTITY);
- CtfTmfTestTrace.SYNC_SRC.dispose();
- CtfTmfTestTrace.SYNC_DEST.dispose();
+ fTraces[0].dispose();
+ fTraces[1].dispose();
}
/**
diff --git a/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/MatchAndSyncTest.java b/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/MatchAndSyncTest.java
index c0d17dd7b9..e8e7b514ab 100644
--- a/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/MatchAndSyncTest.java
+++ b/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/event/matchandsync/MatchAndSyncTest.java
@@ -44,30 +44,29 @@ public class MatchAndSyncTest {
final String cr = System.getProperty("line.separator");
assumeTrue(CtfTmfTestTrace.SYNC_SRC.exists());
assumeTrue(CtfTmfTestTrace.SYNC_DEST.exists());
- CtfTmfTrace trace1 = CtfTmfTestTrace.SYNC_SRC.getTrace();
- CtfTmfTrace trace2 = CtfTmfTestTrace.SYNC_DEST.getTrace();
+ try (CtfTmfTrace trace1 = CtfTmfTestTrace.SYNC_SRC.getTrace();
+ CtfTmfTrace trace2 = CtfTmfTestTrace.SYNC_DEST.getTrace();) {
- List<ITmfTrace> tracearr = new LinkedList<>();
- tracearr.add(trace1);
- tracearr.add(trace2);
+ List<ITmfTrace> tracearr = new LinkedList<>();
+ tracearr.add(trace1);
+ tracearr.add(trace2);
- TmfEventMatching.registerMatchObject(new TcpEventMatching());
- TmfEventMatching.registerMatchObject(new TcpLttngEventMatching());
+ TmfEventMatching.registerMatchObject(new TcpEventMatching());
+ TmfEventMatching.registerMatchObject(new TcpLttngEventMatching());
- TmfNetworkEventMatching twoTraceMatch = new TmfNetworkEventMatching(tracearr);
- assertTrue(twoTraceMatch.matchEvents());
+ TmfNetworkEventMatching twoTraceMatch = new TmfNetworkEventMatching(tracearr);
+ assertTrue(twoTraceMatch.matchEvents());
- String stats = twoTraceMatch.toString();
- assertEquals("TmfEventMatches [ Number of matches found: 46 ]" +
- "Trace 0:" + cr +
- " 3 unmatched incoming events" + cr +
- " 2 unmatched outgoing events" + cr +
- "Trace 1:" + cr +
- " 2 unmatched incoming events" + cr +
- " 1 unmatched outgoing events" + cr, stats);
+ String stats = twoTraceMatch.toString();
+ assertEquals("TmfEventMatches [ Number of matches found: 46 ]" +
+ "Trace 0:" + cr +
+ " 3 unmatched incoming events" + cr +
+ " 2 unmatched outgoing events" + cr +
+ "Trace 1:" + cr +
+ " 2 unmatched incoming events" + cr +
+ " 1 unmatched outgoing events" + cr, stats);
- CtfTmfTestTrace.SYNC_SRC.dispose();
- CtfTmfTestTrace.SYNC_DEST.dispose();
+ }
}
}
diff --git a/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java b/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java
index 9965e424f6..ef09fc836b 100644
--- a/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java
+++ b/lttng/org.eclipse.linuxtools.lttng2.kernel.core.tests/src/org/eclipse/linuxtools/lttng2/kernel/core/tests/stateprovider/GenerateTestValues.java
@@ -57,8 +57,8 @@ public class GenerateTestValues {
/* Prepare the files */
File logFile = File.createTempFile("TestValues", ".java");
- final CtfTmfTrace trace = testTrace.getTrace();
- try (PrintWriter writer = new PrintWriter(new FileWriter(logFile), true);) {
+ try (final CtfTmfTrace trace = testTrace.getTrace();
+ PrintWriter writer = new PrintWriter(new FileWriter(logFile), true);) {
/* Build and query the state system */
TmfStateSystemAnalysisModule module = new TmfStateSystemAnalysisModule() {
@Override
diff --git a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/shared/org/eclipse/linuxtools/tmf/ctf/core/tests/shared/CtfTmfTestTrace.java b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/shared/org/eclipse/linuxtools/tmf/ctf/core/tests/shared/CtfTmfTestTrace.java
index 7b8e5740a8..fbf58b091d 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/shared/org/eclipse/linuxtools/tmf/ctf/core/tests/shared/CtfTmfTestTrace.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/shared/org/eclipse/linuxtools/tmf/ctf/core/tests/shared/CtfTmfTestTrace.java
@@ -77,7 +77,7 @@ public enum CtfTmfTestTrace {
*/
public synchronized CtfTmfTrace getTrace() {
if (fTrace != null) {
- fTrace.dispose();
+ fTrace.close();
}
fTrace = new CtfTmfTraceStub();
try {
diff --git a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfIteratorTest.java b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfIteratorTest.java
index e7daea7400..9100880f68 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfIteratorTest.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfIteratorTest.java
@@ -163,8 +163,9 @@ public class CtfIteratorTest {
*/
@Test
public void testGetCtfTmfTrace() {
- CtfTmfTrace result = iterator.getCtfTmfTrace();
- assertNotNull(result);
+ try (CtfTmfTrace result = iterator.getCtfTmfTrace();) {
+ assertNotNull(result);
+ }
}
/**
diff --git a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfEventTest.java b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfEventTest.java
index 492b045e40..09caf357d5 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfEventTest.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfEventTest.java
@@ -64,8 +64,8 @@ public class CtfTmfEventTest {
@Before
public void setUp() throws CTFReaderException {
assumeTrue(testTrace.exists());
- CtfTmfTrace trace = testTrace.getTrace();
- try (CtfIterator tr = new CtfIterator(trace);) {
+ try (CtfTmfTrace trace = testTrace.getTrace();
+ CtfIterator tr = new CtfIterator(trace);) {
tr.advance();
fixture = tr.getCurrentEvent();
}
@@ -172,12 +172,14 @@ public class CtfTmfEventTest {
@Test
public void testGetters() {
long rank = fixture.getRank();
- CtfTmfTrace trace = fixture.getTrace();
+ try (CtfTmfTrace trace = fixture.getTrace();) {
+ assertEquals("kernel", trace.getName());
+ }
String reference = fixture.getReference();
String source = fixture.getSource();
ITmfEventType type = fixture.getType();
assertEquals(ITmfContext.UNKNOWN_RANK, rank);
- assertEquals("kernel", trace.getName());
+
assertEquals("channel0_1", reference);
assertEquals("1", source);
assertEquals("lttng_statedump_vm_map", type.toString());
diff --git a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfTraceTest.java b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfTraceTest.java
index cff3f56312..c8cd380ef3 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfTraceTest.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/CtfTmfTraceTest.java
@@ -82,15 +82,15 @@ public class CtfTmfTraceTest {
*/
@Test
public void testCtfTmfTrace() {
- CtfTmfTrace result = new CtfTmfTrace();
-
- assertNotNull(result);
- assertNull(result.getEventType());
- assertEquals(1000, result.getCacheSize());
- assertEquals(0L, result.getNbEvents());
- assertEquals(0L, result.getStreamingInterval());
- assertNull(result.getResource());
- assertNull(result.getType());
+ try (CtfTmfTrace result = new CtfTmfTrace();) {
+ assertNotNull(result);
+ assertNull(result.getEventType());
+ assertEquals(1000, result.getCacheSize());
+ assertEquals(0L, result.getNbEvents());
+ assertEquals(0L, result.getStreamingInterval());
+ assertNull(result.getResource());
+ assertNull(result.getType());
+ }
}
/**
@@ -113,25 +113,15 @@ public class CtfTmfTraceTest {
fixture.broadcast(signal);
}
-
- /**
- * Run the void dispose() method test.
- */
- @Test
- public void testDispose() {
- CtfTmfTrace emptyFixture = new CtfTmfTrace();
- emptyFixture.dispose();
-
- }
-
/**
* Run the int getCacheSize() method test.
*/
@Test
public void testGetCacheSize() {
- CtfTmfTrace emptyFixture = new CtfTmfTrace();
- int result = emptyFixture.getCacheSize();
- assertEquals(1000, result);
+ try (CtfTmfTrace emptyFixture = new CtfTmfTrace();) {
+ int result = emptyFixture.getCacheSize();
+ assertEquals(1000, result);
+ }
}
/**
diff --git a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/headless/Benchmark.java b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/headless/Benchmark.java
index 6dfa6ffd5b..8782a70528 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/headless/Benchmark.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ctf.core.tests/src/org/eclipse/linuxtools/tmf/ctf/core/tests/headless/Benchmark.java
@@ -41,44 +41,44 @@ public class Benchmark {
// Work variables
long nbEvent = 0L;
final Vector<Double> benchs = new Vector<>();
- CtfTmfTrace trace = null;
long start, stop;
for (int loops = 0; loops < NUM_LOOPS; loops++) {
nbEvent = 0L;
- trace = new CtfTmfTrace();
- try {
- trace.initTrace(null, TRACE_PATH, CtfTmfEvent.class);
- } catch (final TmfTraceException e) {
- loops = NUM_LOOPS +1;
- break;
- }
-
- start = System.nanoTime();
- if (nbEvent != -1) {
- final CtfTmfContext traceReader = (CtfTmfContext) trace.seekEvent(0);
+ try (CtfTmfTrace trace = new CtfTmfTrace();) {
+ try {
+ trace.initTrace(null, TRACE_PATH, CtfTmfEvent.class);
+ } catch (final TmfTraceException e) {
+ loops = NUM_LOOPS + 1;
+ break;
+ }
start = System.nanoTime();
- CtfTmfEvent current = traceReader.getCurrentEvent();
- while (current != null) {
- nbEvent++;
- if (USE_TEXT) {
+ if (nbEvent != -1) {
+ final CtfTmfContext traceReader = (CtfTmfContext) trace.seekEvent(0);
- System.out.println("Event " + nbEvent + " Time "
- + current.getTimestamp().toString() + " type " + current.getType().getName()
- + " on CPU " + current.getSource() + " " + current.getContent().toString());
- }
- // advance the trace to the next event.
- boolean hasMore = traceReader.advance();
- if( hasMore ){
- // you can know the trace has more events.
+ start = System.nanoTime();
+ CtfTmfEvent current = traceReader.getCurrentEvent();
+ while (current != null) {
+ nbEvent++;
+ if (USE_TEXT) {
+
+ System.out.println("Event " + nbEvent + " Time "
+ + current.getTimestamp().toString() + " type " + current.getType().getName()
+ + " on CPU " + current.getSource() + " " + current.getContent().toString());
+ }
+ // advance the trace to the next event.
+ boolean hasMore = traceReader.advance();
+ if (hasMore) {
+ // you can know the trace has more events.
+ }
+ current = traceReader.getCurrentEvent();
}
- current = traceReader.getCurrentEvent();
}
- }
- stop = System.nanoTime();
- System.out.print('.');
- final double time = (stop - start) / (double) nbEvent;
- benchs.add(time);
+ stop = System.nanoTime();
+ System.out.print('.');
+ final double time = (stop - start) / (double) nbEvent;
+ benchs.add(time);
+ } // trace.close()
}
System.out.println("");
double avg = 0;
diff --git a/lttng/org.eclipse.linuxtools.tmf.ctf.core/src/org/eclipse/linuxtools/tmf/ctf/core/CtfTmfTrace.java b/lttng/org.eclipse.linuxtools.tmf.ctf.core/src/org/eclipse/linuxtools/tmf/ctf/core/CtfTmfTrace.java
index 4fbf97a05c..f23a0690d1 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ctf.core/src/org/eclipse/linuxtools/tmf/ctf/core/CtfTmfTrace.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ctf.core/src/org/eclipse/linuxtools/tmf/ctf/core/CtfTmfTrace.java
@@ -51,7 +51,8 @@ import org.eclipse.linuxtools.tmf.core.trace.location.ITmfLocation;
* @author Matthew khouzam
*/
public class CtfTmfTrace extends TmfTrace
- implements ITmfEventParser, ITmfTraceProperties, ITmfPersistentlyIndexable {
+ implements ITmfEventParser, ITmfTraceProperties, ITmfPersistentlyIndexable,
+ AutoCloseable {
// -------------------------------------------
// Constants
@@ -127,6 +128,11 @@ public class CtfTmfTrace extends TmfTrace
}
@Override
+ public void close() {
+ dispose();
+ }
+
+ @Override
public synchronized void dispose() {
CtfIteratorManager.removeTrace(this);
if (fTrace != null) {

Back to the top