1 /*******************************************************************************
2 * Copyright (c) 2014 Ericsson
4 * All rights reserved. This program and the accompanying materials are made
5 * available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
9 * Contributors: Matthew Khouzam - Initial API and implementation
10 *******************************************************************************/
12 package org
.eclipse
.linuxtools
.ctf
.core
.tests
.trace
;
14 import static org
.junit
.Assert
.assertEquals
;
15 import static org
.junit
.Assert
.assertNotNull
;
16 import static org
.junit
.Assert
.assertNull
;
17 import static org
.junit
.Assert
.assertTrue
;
19 import java
.io
.BufferedReader
;
21 import java
.io
.FileInputStream
;
22 import java
.io
.FileNotFoundException
;
23 import java
.io
.IOException
;
24 import java
.io
.InputStreamReader
;
26 import org
.eclipse
.linuxtools
.ctf
.core
.event
.EventDefinition
;
27 import org
.eclipse
.linuxtools
.ctf
.core
.tests
.shared
.CtfTestTrace
;
28 import org
.eclipse
.linuxtools
.ctf
.core
.trace
.CTFReaderException
;
29 import org
.eclipse
.linuxtools
.ctf
.core
.trace
.CTFTrace
;
30 import org
.eclipse
.linuxtools
.ctf
.core
.trace
.CTFTraceReader
;
31 import org
.eclipse
.linuxtools
.ctf
.core
.trace
.Metadata
;
32 import org
.junit
.Before
;
33 import org
.junit
.Test
;
36 * Tests for streaming support
38 * @author Matthew Khouzam
41 public class CTFTraceGrowingTest
{
42 final private String fPathName
= CtfTestTrace
.SYNTHETIC_TRACE
.getPath();
44 final private CTFTrace fixture
= new CTFTrace();
51 * @throws FileNotFoundException
53 * @throws CTFReaderException
57 public void init() throws FileNotFoundException
, IOException
, CTFReaderException
{
58 Metadata md
= new Metadata(fixture
);
59 File metadata
= new File(fPathName
+ "/" + "metadata");
61 try (BufferedReader reader
= new BufferedReader(new InputStreamReader(new FileInputStream(metadata
)))) {
63 StringBuilder sb
= new StringBuilder();
65 while ((line
= reader
.readLine()) != null) {
68 String result
= sb
.toString();
76 * @throws CTFReaderException
80 public void testEmptyStream() throws CTFReaderException
{
81 try (CTFTraceReader reader
= new CTFTraceReader(fixture
);) {
82 assertNull(reader
.getCurrentEventDef());
89 * @throws CTFReaderException
93 public void testAddStream() throws CTFReaderException
{
94 File stream
= new File(fPathName
+ "/" + "channel1");
95 try (CTFTraceReader reader
= new CTFTraceReader(fixture
);) {
96 fixture
.addStreamFile(stream
);
98 assertTrue(reader
.advance());
99 assertNotNull(reader
.getCurrentEventDef());
106 * @throws CTFReaderException
110 public void testAddTwoStreams1() throws CTFReaderException
{
111 File stream
= new File(fPathName
+ "/" + "channel1");
112 try (CTFTraceReader reader
= new CTFTraceReader(fixture
);) {
113 fixture
.addStreamFile(stream
);
114 stream
= new File(fPathName
+ "/" + "channel2");
115 fixture
.addStreamFile(stream
);
117 assertTrue(reader
.advance());
118 EventDefinition currentEventDef
= reader
.getCurrentEventDef();
119 assertNotNull(reader
.getCurrentEventDef());
120 assertEquals(16518l, currentEventDef
.getTimestamp());
127 * @throws CTFReaderException
131 public void testAddTwoStreams2() throws CTFReaderException
{
132 File stream
= new File(fPathName
+ "/" + "channel1");
133 try (CTFTraceReader reader
= new CTFTraceReader(fixture
);) {
134 fixture
.addStreamFile(stream
);
135 stream
= new File(fPathName
+ "/" + "channel2");
137 assertTrue(reader
.advance());
138 fixture
.addStreamFile(stream
);
140 assertTrue(reader
.advance());
141 EventDefinition currentEventDef
= reader
.getCurrentEventDef();
142 assertNotNull(currentEventDef
);
143 assertEquals(223007L, currentEventDef
.getTimestamp());
148 * Tests that update does not change the position
150 * @throws CTFReaderException
154 public void testAddTwoStreams3() throws CTFReaderException
{
155 File stream
= new File(fPathName
+ "/" + "channel1");
156 try (CTFTraceReader reader
= new CTFTraceReader(fixture
);) {
157 fixture
.addStreamFile(stream
);
158 stream
= new File(fPathName
+ "/" + "channel2");
162 assertTrue(reader
.advance());
163 fixture
.addStreamFile(stream
);
168 assertTrue(reader
.advance());
169 EventDefinition currentEventDef
= reader
.getCurrentEventDef();
170 assertNotNull(currentEventDef
);
171 assertEquals(223007L, currentEventDef
.getTimestamp());
176 * Test adding a bad stream
178 * @throws CTFReaderException
181 @Test(expected
= CTFReaderException
.class)
182 public void testAddStreamFail() throws CTFReaderException
{
183 File stream
= new File(fPathName
+ "/" + "metadata");
184 try (CTFTraceReader reader
= new CTFTraceReader(fixture
);) {
185 fixture
.addStreamFile(stream
);
186 assertNull(reader
.getCurrentEventDef());