Commit | Line | Data |
---|---|---|
fe75d403 MK |
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 | ||
f357bcd4 | 12 | package org.eclipse.tracecompass.ctf.core.tests.trace; |
fe75d403 MK |
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 | ||
680f9173 | 26 | import org.eclipse.tracecompass.ctf.core.CTFException; |
e8ece272 | 27 | import org.eclipse.tracecompass.ctf.core.event.IEventDefinition; |
c4d57ac1 | 28 | import org.eclipse.tracecompass.ctf.core.tests.shared.LttngKernelTraceGenerator; |
f357bcd4 AM |
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; | |
fe75d403 MK |
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 { | |
fe75d403 | 42 | |
c4d57ac1 AM |
43 | private final String fPathName = LttngKernelTraceGenerator.getPath(); |
44 | private final CTFTrace fixture = new CTFTrace(); | |
fe75d403 MK |
45 | |
46 | /** | |
47 | * Init | |
48 | * | |
49 | * @throws IOException | |
50 | * an IO error | |
51 | * @throws FileNotFoundException | |
52 | * file's not there | |
680f9173 | 53 | * @throws CTFException |
fe75d403 MK |
54 | * error in metadata |
55 | */ | |
56 | @Before | |
680f9173 | 57 | public void init() throws FileNotFoundException, IOException, CTFException { |
fe75d403 MK |
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 | * | |
680f9173 | 76 | * @throws CTFException |
fe75d403 MK |
77 | * will not happen |
78 | */ | |
79 | @Test | |
680f9173 | 80 | public void testEmptyStream() throws CTFException { |
dd9752d5 AM |
81 | try (CTFTraceReader reader = new CTFTraceReader(fixture);) { |
82 | assertNull(reader.getCurrentEventDef()); | |
83 | } | |
fe75d403 MK |
84 | } |
85 | ||
86 | /** | |
87 | * Add a stream | |
88 | * | |
680f9173 | 89 | * @throws CTFException |
fe75d403 MK |
90 | * should not happen |
91 | */ | |
92 | @Test | |
680f9173 | 93 | public void testAddStream() throws CTFException { |
fe75d403 | 94 | File stream = new File(fPathName + "/" + "channel1"); |
dd9752d5 AM |
95 | try (CTFTraceReader reader = new CTFTraceReader(fixture);) { |
96 | fixture.addStreamFile(stream); | |
97 | reader.update(); | |
98 | assertTrue(reader.advance()); | |
99 | assertNotNull(reader.getCurrentEventDef()); | |
100 | } | |
fe75d403 MK |
101 | } |
102 | ||
103 | /** | |
104 | * Adds two a stream | |
105 | * | |
680f9173 | 106 | * @throws CTFException |
fe75d403 MK |
107 | * should not happen |
108 | */ | |
109 | @Test | |
680f9173 | 110 | public void testAddTwoStreams1() throws CTFException { |
fe75d403 | 111 | File stream = new File(fPathName + "/" + "channel1"); |
dd9752d5 AM |
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()); | |
e8ece272 | 118 | IEventDefinition currentEventDef = reader.getCurrentEventDef(); |
dd9752d5 AM |
119 | assertNotNull(reader.getCurrentEventDef()); |
120 | assertEquals(16518l, currentEventDef.getTimestamp()); | |
121 | } | |
fe75d403 MK |
122 | } |
123 | ||
124 | /** | |
125 | * Adds two a stream | |
126 | * | |
680f9173 | 127 | * @throws CTFException |
fe75d403 MK |
128 | * should not happen |
129 | */ | |
130 | @Test | |
680f9173 | 131 | public void testAddTwoStreams2() throws CTFException { |
fe75d403 | 132 | File stream = new File(fPathName + "/" + "channel1"); |
dd9752d5 AM |
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()); | |
e8ece272 | 141 | IEventDefinition currentEventDef = reader.getCurrentEventDef(); |
dd9752d5 AM |
142 | assertNotNull(currentEventDef); |
143 | assertEquals(223007L, currentEventDef.getTimestamp()); | |
144 | } | |
fe75d403 MK |
145 | } |
146 | ||
147 | /** | |
148 | * Tests that update does not change the position | |
149 | * | |
680f9173 | 150 | * @throws CTFException |
fe75d403 MK |
151 | * should not happen |
152 | */ | |
153 | @Test | |
680f9173 | 154 | public void testAddTwoStreams3() throws CTFException { |
fe75d403 | 155 | File stream = new File(fPathName + "/" + "channel1"); |
dd9752d5 AM |
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()); | |
e8ece272 | 169 | IEventDefinition currentEventDef = reader.getCurrentEventDef(); |
dd9752d5 AM |
170 | assertNotNull(currentEventDef); |
171 | assertEquals(223007L, currentEventDef.getTimestamp()); | |
172 | } | |
fe75d403 MK |
173 | } |
174 | ||
175 | /** | |
176 | * Test adding a bad stream | |
177 | * | |
680f9173 | 178 | * @throws CTFException |
fe75d403 MK |
179 | * should happen |
180 | */ | |
680f9173 MK |
181 | @Test(expected = CTFException.class) |
182 | public void testAddStreamFail() throws CTFException { | |
fe75d403 | 183 | File stream = new File(fPathName + "/" + "metadata"); |
dd9752d5 AM |
184 | try (CTFTraceReader reader = new CTFTraceReader(fixture);) { |
185 | fixture.addStreamFile(stream); | |
186 | assertNull(reader.getCurrentEventDef()); | |
187 | } | |
fe75d403 MK |
188 | } |
189 | ||
190 | } |