ctf: Introduce IEventDefinition
[deliverable/tracecompass.git] / ctf / org.eclipse.tracecompass.ctf.core.tests / src / org / eclipse / tracecompass / ctf / core / tests / trace / CTFTraceGrowingTest.java
1 /*******************************************************************************
2 * Copyright (c) 2014 Ericsson
3 *
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
8 *
9 * Contributors: Matthew Khouzam - Initial API and implementation
10 *******************************************************************************/
11
12 package org.eclipse.tracecompass.ctf.core.tests.trace;
13
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;
18
19 import java.io.BufferedReader;
20 import java.io.File;
21 import java.io.FileInputStream;
22 import java.io.FileNotFoundException;
23 import java.io.IOException;
24 import java.io.InputStreamReader;
25
26 import org.eclipse.tracecompass.ctf.core.CTFException;
27 import org.eclipse.tracecompass.ctf.core.event.IEventDefinition;
28 import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator;
29 import org.eclipse.tracecompass.ctf.core.trace.CTFTrace;
30 import org.eclipse.tracecompass.ctf.core.trace.CTFTraceReader;
31 import org.eclipse.tracecompass.ctf.core.trace.Metadata;
32 import org.junit.Before;
33 import org.junit.Test;
34
35 /**
36 * Tests for streaming support
37 *
38 * @author Matthew Khouzam
39 *
40 */
41 public class CTFTraceGrowingTest {
42
43 private final String fPathName = LttngKernelTraceGenerator.getPath();
44 private final CTFTrace fixture = new CTFTrace();
45
46 /**
47 * Init
48 *
49 * @throws IOException
50 * an IO error
51 * @throws FileNotFoundException
52 * file's not there
53 * @throws CTFException
54 * error in metadata
55 */
56 @Before
57 public void init() throws FileNotFoundException, IOException, CTFException {
58 Metadata md = new Metadata(fixture);
59 File metadata = new File(fPathName + "/" + "metadata");
60
61 try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(metadata)))) {
62
63 StringBuilder sb = new StringBuilder();
64 String line = null;
65 while ((line = reader.readLine()) != null) {
66 sb.append(line);
67 }
68 String result = sb.toString();
69 md.parseText(result);
70 }
71 }
72
73 /**
74 * Empty trace test
75 *
76 * @throws CTFException
77 * will not happen
78 */
79 @Test
80 public void testEmptyStream() throws CTFException {
81 try (CTFTraceReader reader = new CTFTraceReader(fixture);) {
82 assertNull(reader.getCurrentEventDef());
83 }
84 }
85
86 /**
87 * Add a stream
88 *
89 * @throws CTFException
90 * should not happen
91 */
92 @Test
93 public void testAddStream() throws CTFException {
94 File stream = new File(fPathName + "/" + "channel1");
95 try (CTFTraceReader reader = new CTFTraceReader(fixture);) {
96 fixture.addStreamFile(stream);
97 reader.update();
98 assertTrue(reader.advance());
99 assertNotNull(reader.getCurrentEventDef());
100 }
101 }
102
103 /**
104 * Adds two a stream
105 *
106 * @throws CTFException
107 * should not happen
108 */
109 @Test
110 public void testAddTwoStreams1() throws CTFException {
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);
116 reader.update();
117 assertTrue(reader.advance());
118 IEventDefinition currentEventDef = reader.getCurrentEventDef();
119 assertNotNull(reader.getCurrentEventDef());
120 assertEquals(16518l, currentEventDef.getTimestamp());
121 }
122 }
123
124 /**
125 * Adds two a stream
126 *
127 * @throws CTFException
128 * should not happen
129 */
130 @Test
131 public void testAddTwoStreams2() throws CTFException {
132 File stream = new File(fPathName + "/" + "channel1");
133 try (CTFTraceReader reader = new CTFTraceReader(fixture);) {
134 fixture.addStreamFile(stream);
135 stream = new File(fPathName + "/" + "channel2");
136 reader.update();
137 assertTrue(reader.advance());
138 fixture.addStreamFile(stream);
139 reader.update();
140 assertTrue(reader.advance());
141 IEventDefinition currentEventDef = reader.getCurrentEventDef();
142 assertNotNull(currentEventDef);
143 assertEquals(223007L, currentEventDef.getTimestamp());
144 }
145 }
146
147 /**
148 * Tests that update does not change the position
149 *
150 * @throws CTFException
151 * should not happen
152 */
153 @Test
154 public void testAddTwoStreams3() throws CTFException {
155 File stream = new File(fPathName + "/" + "channel1");
156 try (CTFTraceReader reader = new CTFTraceReader(fixture);) {
157 fixture.addStreamFile(stream);
158 stream = new File(fPathName + "/" + "channel2");
159 reader.update();
160 reader.update();
161 reader.update();
162 assertTrue(reader.advance());
163 fixture.addStreamFile(stream);
164 reader.update();
165 reader.update();
166 reader.update();
167 reader.update();
168 assertTrue(reader.advance());
169 IEventDefinition currentEventDef = reader.getCurrentEventDef();
170 assertNotNull(currentEventDef);
171 assertEquals(223007L, currentEventDef.getTimestamp());
172 }
173 }
174
175 /**
176 * Test adding a bad stream
177 *
178 * @throws CTFException
179 * should happen
180 */
181 @Test(expected = CTFException.class)
182 public void testAddStreamFail() throws CTFException {
183 File stream = new File(fPathName + "/" + "metadata");
184 try (CTFTraceReader reader = new CTFTraceReader(fixture);) {
185 fixture.addStreamFile(stream);
186 assertNull(reader.getCurrentEventDef());
187 }
188 }
189
190 }
This page took 0.035785 seconds and 5 git commands to generate.