Commit | Line | Data |
---|---|---|
eb1bab5b | 1 | /********************************************************************** |
60ae41e1 | 2 | * Copyright (c) 2012, 2014 Ericsson |
b0318660 | 3 | * |
eb1bab5b BH |
4 | * All rights reserved. This program and the accompanying materials are |
5 | * made 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 | |
b0318660 AM |
8 | * |
9 | * Contributors: | |
eb1bab5b | 10 | * Bernd Hufmann - Initial API and implementation |
2ba3d0a1 | 11 | * Alexandre Montplaisir - Port to JUnit4 |
eb1bab5b | 12 | **********************************************************************/ |
2ba3d0a1 | 13 | |
8e8c0226 | 14 | package org.eclipse.linuxtools.lttng2.control.core.tests.model.impl; |
eb1bab5b | 15 | |
2ba3d0a1 AM |
16 | import static org.junit.Assert.*; |
17 | ||
eb1bab5b BH |
18 | import java.util.LinkedList; |
19 | import java.util.List; | |
20 | ||
8e8c0226 AM |
21 | import org.eclipse.linuxtools.internal.lttng2.control.core.model.IChannelInfo; |
22 | import org.eclipse.linuxtools.internal.lttng2.control.core.model.IEventInfo; | |
0ad9fc89 | 23 | import org.eclipse.linuxtools.internal.lttng2.control.core.model.TraceChannelOutputType; |
8e8c0226 AM |
24 | import org.eclipse.linuxtools.internal.lttng2.control.core.model.TraceEnablement; |
25 | import org.eclipse.linuxtools.internal.lttng2.control.core.model.impl.BufferType; | |
26 | import org.eclipse.linuxtools.internal.lttng2.control.core.model.impl.ChannelInfo; | |
27 | import org.eclipse.linuxtools.internal.lttng2.control.core.model.impl.EventInfo; | |
2ba3d0a1 AM |
28 | import org.junit.Before; |
29 | import org.junit.Test; | |
eb1bab5b BH |
30 | |
31 | /** | |
2ba3d0a1 AM |
32 | * The class <code>ChannelInfoTest</code> contains tests for the class |
33 | * <code>{@link ChannelInfo}</code>. | |
eb1bab5b | 34 | */ |
2ba3d0a1 AM |
35 | public class ChannelInfoTest { |
36 | ||
eb1bab5b BH |
37 | // ------------------------------------------------------------------------ |
38 | // Test data | |
39 | // ------------------------------------------------------------------------ | |
2ba3d0a1 | 40 | |
eb1bab5b BH |
41 | private IChannelInfo fChannelInfo1 = null; |
42 | private IChannelInfo fChannelInfo2 = null; | |
b0318660 | 43 | |
eb1bab5b BH |
44 | // ------------------------------------------------------------------------ |
45 | // Housekeeping | |
46 | // ------------------------------------------------------------------------ | |
b0318660 | 47 | |
eb1bab5b BH |
48 | /** |
49 | * Perform pre-test initialization. | |
eb1bab5b | 50 | */ |
2ba3d0a1 | 51 | @Before |
eb1bab5b BH |
52 | public void setUp() { |
53 | ModelImplFactory factory = new ModelImplFactory(); | |
54 | fChannelInfo1 = factory.getChannel1(); | |
55 | fChannelInfo2 = factory.getChannel2(); | |
56 | } | |
57 | ||
eb1bab5b BH |
58 | // ------------------------------------------------------------------------ |
59 | // Tests | |
60 | // ------------------------------------------------------------------------ | |
b0318660 | 61 | |
eb1bab5b BH |
62 | // ------------------------------------------------------------------------ |
63 | // Constructors | |
64 | // ------------------------------------------------------------------------ | |
65 | ||
66 | /** | |
67 | * Run the ChannelInfo() constructor test. | |
eb1bab5b | 68 | */ |
2ba3d0a1 | 69 | @Test |
eb1bab5b BH |
70 | public void testChannelInfo() { |
71 | ChannelInfo result = new ChannelInfo("test"); | |
72 | assertNotNull(result); | |
b0318660 | 73 | |
eb1bab5b BH |
74 | assertEquals("test", result.getName()); |
75 | assertEquals(0, result.getNumberOfSubBuffers()); | |
0ad9fc89 JRJ |
76 | assertEquals("unknown", result.getOutputType().getInName()); |
77 | assertEquals(TraceChannelOutputType.UNKNOWN, result.getOutputType()); | |
eb1bab5b BH |
78 | assertEquals(false, result.isOverwriteMode()); |
79 | assertEquals(0, result.getReadTimer()); | |
80 | assertEquals("disabled", result.getState().getInName()); | |
81 | assertEquals(0, result.getSubBufferSize()); | |
82 | assertEquals(0, result.getSwitchTimer()); | |
e799e5f3 SD |
83 | assertEquals(0, result.getMaxSizeTraceFiles()); |
84 | assertEquals(0, result.getMaxNumberTraceFiles()); | |
6303c000 | 85 | assertEquals(BufferType.BUFFER_TYPE_UNKNOWN, result.getBufferType()); |
eb1bab5b BH |
86 | } |
87 | ||
2ba3d0a1 AM |
88 | /** |
89 | * Test copy constructor. | |
90 | */ | |
91 | @Test | |
eb1bab5b BH |
92 | public void testChannelInfoCopy() { |
93 | ChannelInfo channelInfo = new ChannelInfo((ChannelInfo)fChannelInfo1); | |
b0318660 | 94 | |
eb1bab5b BH |
95 | assertEquals(fChannelInfo1.getName(), channelInfo.getName()); |
96 | assertEquals(fChannelInfo1.getNumberOfSubBuffers(), channelInfo.getNumberOfSubBuffers()); | |
97 | assertEquals(fChannelInfo1.getOutputType(), channelInfo.getOutputType()); | |
98 | assertEquals(fChannelInfo1.isOverwriteMode(), channelInfo.isOverwriteMode()); | |
99 | assertEquals(fChannelInfo1.getReadTimer(), channelInfo.getReadTimer()); | |
100 | assertEquals(fChannelInfo1.getState(), channelInfo.getState()); | |
101 | assertEquals(fChannelInfo1.getSwitchTimer(), channelInfo.getSwitchTimer()); | |
102 | assertEquals(fChannelInfo1.getEvents().length, channelInfo.getEvents().length); | |
e799e5f3 SD |
103 | assertEquals(fChannelInfo1.getMaxSizeTraceFiles(), channelInfo.getMaxSizeTraceFiles()); |
104 | assertEquals(fChannelInfo1.getMaxNumberTraceFiles(), channelInfo.getMaxNumberTraceFiles()); | |
83051fc3 | 105 | assertEquals(fChannelInfo1.getBufferType(), channelInfo.getBufferType()); |
b0318660 | 106 | |
eb1bab5b BH |
107 | IEventInfo[] orignalEvents = fChannelInfo1.getEvents(); |
108 | IEventInfo[] resultEvents = channelInfo.getEvents(); | |
109 | for (int i = 0; i < orignalEvents.length; i++) { | |
110 | assertEquals(orignalEvents[i], resultEvents[i]); | |
111 | } | |
112 | } | |
113 | ||
2ba3d0a1 AM |
114 | /** |
115 | * Test copy constructor with a null value. | |
116 | */ | |
117 | @Test | |
eb1bab5b BH |
118 | public void testChannelCopy2() { |
119 | try { | |
120 | ChannelInfo channel = null; | |
121 | new ChannelInfo(channel); | |
122 | fail("null copy"); | |
123 | } | |
124 | catch (IllegalArgumentException e) { | |
125 | // Success | |
126 | } | |
127 | } | |
128 | ||
129 | /** | |
130 | * Run the IEventInfo[] getEvents() method test. | |
eb1bab5b | 131 | */ |
2ba3d0a1 | 132 | @Test |
eb1bab5b BH |
133 | public void testAddAndGetEvents_1() { |
134 | ChannelInfo fixture = new ChannelInfo("test"); | |
135 | fixture.setSwitchTimer(1L); | |
136 | fixture.setOverwriteMode(true); | |
137 | fixture.setReadTimer(1L); | |
138 | fixture.setState(TraceEnablement.DISABLED); | |
139 | fixture.setNumberOfSubBuffers(1); | |
140 | fixture.setOutputType(""); | |
141 | fixture.setSubBufferSize(1L); | |
b0318660 | 142 | |
eb1bab5b BH |
143 | // add an event |
144 | IEventInfo event = new EventInfo("event"); | |
145 | fixture.addEvent(event); | |
146 | ||
147 | // Verify the stored events | |
148 | IEventInfo[] result = fixture.getEvents(); | |
149 | ||
150 | assertNotNull(result); | |
151 | assertEquals(1, result.length); | |
152 | assertNotNull(result[0]); | |
153 | assertTrue(event.equals(result[0])); | |
154 | } | |
155 | ||
156 | /** | |
157 | * Run the long getNumberOfSubBuffers() method test. | |
eb1bab5b | 158 | */ |
2ba3d0a1 | 159 | @Test |
eb1bab5b BH |
160 | public void testGetAndSetters() { |
161 | ChannelInfo fixture = new ChannelInfo("test"); | |
162 | fixture.setSwitchTimer(2L); | |
163 | fixture.setOverwriteMode(true); | |
164 | fixture.setReadTimer(3L); | |
165 | fixture.setState(TraceEnablement.DISABLED); | |
166 | fixture.setNumberOfSubBuffers(4); | |
167 | fixture.setOutputType("splice()"); | |
168 | fixture.setSubBufferSize(1L); | |
e799e5f3 SD |
169 | fixture.setMaxSizeTraceFiles(1024); |
170 | fixture.setMaxNumberTraceFiles(20); | |
83051fc3 | 171 | fixture.setBufferType(BufferType.BUFFER_PER_UID); |
eb1bab5b BH |
172 | fixture.addEvent(new EventInfo("event")); |
173 | ||
174 | long switchTimer = fixture.getSwitchTimer(); | |
175 | assertEquals(2L, switchTimer); | |
b0318660 | 176 | |
eb1bab5b BH |
177 | boolean mode = fixture.isOverwriteMode(); |
178 | assertTrue(mode); | |
b0318660 | 179 | |
eb1bab5b BH |
180 | long readTimer = fixture.getReadTimer(); |
181 | assertEquals(3L, readTimer); | |
b0318660 | 182 | |
eb1bab5b BH |
183 | TraceEnablement state = fixture.getState(); |
184 | assertEquals("disabled", state.getInName()); | |
b0318660 | 185 | |
eb1bab5b BH |
186 | long numSubBuffers = fixture.getNumberOfSubBuffers(); |
187 | assertEquals(4, numSubBuffers); | |
b0318660 | 188 | |
0ad9fc89 | 189 | String outputType = fixture.getOutputType().getInName(); |
eb1bab5b | 190 | assertEquals("splice()", outputType); |
b0318660 | 191 | |
eb1bab5b BH |
192 | long subBufferSize = fixture.getSubBufferSize(); |
193 | assertEquals(1L, subBufferSize); | |
194 | ||
e799e5f3 SD |
195 | int maxSizeTraceFiles = fixture.getMaxSizeTraceFiles(); |
196 | assertEquals(1024, maxSizeTraceFiles); | |
197 | ||
198 | int maxNumberTraceFiles = fixture.getMaxNumberTraceFiles(); | |
199 | assertEquals(20, maxNumberTraceFiles); | |
200 | ||
83051fc3 BH |
201 | BufferType bufferType = fixture.getBufferType(); |
202 | assertTrue(bufferType == BufferType.BUFFER_PER_UID); | |
e799e5f3 | 203 | |
eb1bab5b BH |
204 | fixture.setSwitchTimer(5L); |
205 | fixture.setOverwriteMode(false); | |
206 | fixture.setReadTimer(6L); | |
207 | fixture.setState(TraceEnablement.ENABLED); | |
208 | fixture.setNumberOfSubBuffers(7); | |
209 | fixture.setOutputType("mmap()"); | |
210 | fixture.setSubBufferSize(8L); | |
e799e5f3 SD |
211 | fixture.setMaxSizeTraceFiles(4096); |
212 | fixture.setMaxNumberTraceFiles(10); | |
83051fc3 | 213 | fixture.setBufferType(BufferType.BUFFER_PER_PID); |
eb1bab5b BH |
214 | |
215 | switchTimer = fixture.getSwitchTimer(); | |
216 | assertEquals(5L, switchTimer); | |
b0318660 | 217 | |
eb1bab5b BH |
218 | mode = fixture.isOverwriteMode(); |
219 | assertFalse(mode); | |
b0318660 | 220 | |
eb1bab5b BH |
221 | readTimer = fixture.getReadTimer(); |
222 | assertEquals(6L, readTimer); | |
b0318660 | 223 | |
eb1bab5b BH |
224 | state = fixture.getState(); |
225 | assertEquals("enabled", state.getInName()); | |
b0318660 | 226 | |
eb1bab5b BH |
227 | numSubBuffers = fixture.getNumberOfSubBuffers(); |
228 | assertEquals(7, numSubBuffers); | |
b0318660 | 229 | |
0ad9fc89 | 230 | outputType = fixture.getOutputType().getInName(); |
eb1bab5b | 231 | assertEquals("mmap()", outputType); |
b0318660 | 232 | |
eb1bab5b BH |
233 | subBufferSize = fixture.getSubBufferSize(); |
234 | assertEquals(8L, subBufferSize); | |
e799e5f3 SD |
235 | |
236 | maxSizeTraceFiles = fixture.getMaxSizeTraceFiles(); | |
237 | assertEquals(4096, maxSizeTraceFiles); | |
238 | ||
239 | maxNumberTraceFiles = fixture.getMaxNumberTraceFiles(); | |
240 | assertEquals(10, maxNumberTraceFiles); | |
241 | ||
83051fc3 BH |
242 | bufferType = fixture.getBufferType(); |
243 | assertTrue(bufferType == BufferType.BUFFER_PER_PID); | |
eb1bab5b BH |
244 | } |
245 | ||
246 | /** | |
247 | * Run the void setEvents(List<IEventInfo>) method test. | |
eb1bab5b | 248 | */ |
2ba3d0a1 | 249 | @Test |
eb1bab5b BH |
250 | public void testSetEvents_1() { |
251 | ChannelInfo fixture = new ChannelInfo("test"); | |
252 | fixture.setSwitchTimer(1L); | |
253 | fixture.setOverwriteMode(true); | |
254 | fixture.setReadTimer(1L); | |
255 | fixture.setState(TraceEnablement.DISABLED); | |
256 | fixture.setNumberOfSubBuffers(1); | |
257 | fixture.setOutputType(""); | |
258 | fixture.setSubBufferSize(1L); | |
e0838ca1 | 259 | List<IEventInfo> events = new LinkedList<>(); |
b0318660 | 260 | |
eb1bab5b BH |
261 | for (int i = 0; i < 2; i++) { |
262 | IEventInfo info = new EventInfo("event" + i); | |
263 | info.setEventType("tracepoint"); | |
264 | info.setState((i % 2 == 0 ? "enabled" : "disabled")); | |
265 | events.add(info); | |
266 | } | |
267 | ||
268 | fixture.setEvents(events); | |
269 | ||
270 | IEventInfo[] infos = fixture.getEvents(); | |
b0318660 | 271 | |
eb1bab5b | 272 | assertEquals(events.size(), infos.length); |
b0318660 | 273 | |
eb1bab5b BH |
274 | for (int i = 0; i < infos.length; i++) { |
275 | assertEquals(events.get(i), infos[i]); | |
276 | } | |
277 | } | |
278 | ||
2ba3d0a1 AM |
279 | /** |
280 | * Run the String toString() method test. | |
281 | */ | |
282 | @Test | |
eb1bab5b BH |
283 | public void testToString_1() { |
284 | ChannelInfo fixture = new ChannelInfo("channel"); | |
285 | fixture.setSwitchTimer(1L); | |
286 | fixture.setOverwriteMode(true); | |
287 | fixture.setReadTimer(1L); | |
288 | fixture.setState(TraceEnablement.DISABLED); | |
289 | fixture.setNumberOfSubBuffers(1); | |
290 | fixture.setOutputType("splice()"); | |
291 | fixture.setSubBufferSize(1L); | |
292 | ||
293 | String result = fixture.toString(); | |
294 | ||
295 | // add additional test code here | |
296 | assertEquals("[ChannelInfo([TraceInfo(Name=channel)],State=DISABLED,OverwriteMode=true,SubBuffersSize=1,NumberOfSubBuffers=1,SwitchTimer=1,ReadTimer=1,output=splice(),Events=None)]", result); | |
297 | } | |
298 | ||
299 | /** | |
2ba3d0a1 | 300 | * Run another String toString() method test. |
eb1bab5b | 301 | */ |
2ba3d0a1 | 302 | @Test |
eb1bab5b BH |
303 | public void testToString_2() { |
304 | String result = fChannelInfo1.toString(); | |
305 | ||
306 | // add additional test code here | |
54f2dcc0 | 307 | assertEquals("[ChannelInfo([TraceInfo(Name=channel1)],State=DISABLED,OverwriteMode=true,SubBuffersSize=13,NumberOfSubBuffers=12,SwitchTimer=10,ReadTimer=11,output=splice(),Events=[EventInfo([BaseEventInfo([TraceInfo(Name=event1)],type=TRACEPOINT,level=TRACE_DEBUG)],State=ENABLED,levelType=LOGLEVEL_ONLY)])]", result); |
eb1bab5b | 308 | } |
b0318660 | 309 | |
eb1bab5b BH |
310 | // ------------------------------------------------------------------------ |
311 | // equals | |
312 | // ------------------------------------------------------------------------ | |
313 | ||
2ba3d0a1 AM |
314 | /** |
315 | * Run the equals() method test. | |
316 | */ | |
317 | @Test | |
eb1bab5b BH |
318 | public void testEqualsReflexivity() { |
319 | assertTrue("equals", fChannelInfo1.equals(fChannelInfo1)); | |
320 | assertTrue("equals", fChannelInfo2.equals(fChannelInfo2)); | |
321 | ||
322 | assertTrue("equals", !fChannelInfo1.equals(fChannelInfo2)); | |
323 | assertTrue("equals", !fChannelInfo2.equals(fChannelInfo1)); | |
324 | } | |
b0318660 | 325 | |
2ba3d0a1 AM |
326 | /** |
327 | * Run the equals() method test. | |
328 | */ | |
329 | @Test | |
eb1bab5b BH |
330 | public void testEqualsSymmetry() { |
331 | ChannelInfo event1 = new ChannelInfo((ChannelInfo)fChannelInfo1); | |
332 | ChannelInfo event2 = new ChannelInfo((ChannelInfo)fChannelInfo2); | |
333 | ||
334 | assertTrue("equals", event1.equals(fChannelInfo1)); | |
335 | assertTrue("equals", fChannelInfo1.equals(event1)); | |
336 | ||
337 | assertTrue("equals", event2.equals(fChannelInfo2)); | |
338 | assertTrue("equals", fChannelInfo2.equals(event2)); | |
339 | } | |
b0318660 | 340 | |
2ba3d0a1 AM |
341 | /** |
342 | * Run the equals() method test. | |
343 | */ | |
344 | @Test | |
eb1bab5b BH |
345 | public void testEqualsTransivity() { |
346 | ChannelInfo channel1 = new ChannelInfo((ChannelInfo)fChannelInfo1); | |
347 | ChannelInfo channel2 = new ChannelInfo((ChannelInfo)fChannelInfo1); | |
348 | ChannelInfo channel3 = new ChannelInfo((ChannelInfo)fChannelInfo1); | |
349 | ||
350 | assertTrue("equals", channel1.equals(channel2)); | |
351 | assertTrue("equals", channel2.equals(channel3)); | |
352 | assertTrue("equals", channel1.equals(channel3)); | |
353 | } | |
b0318660 | 354 | |
2ba3d0a1 AM |
355 | /** |
356 | * Run the equals() method test. | |
357 | */ | |
358 | @Test | |
ea21cd65 | 359 | public void testEqualsNull() { |
eb1bab5b BH |
360 | assertTrue("equals", !fChannelInfo1.equals(null)); |
361 | assertTrue("equals", !fChannelInfo2.equals(null)); | |
362 | } | |
b0318660 | 363 | |
eb1bab5b BH |
364 | // ------------------------------------------------------------------------ |
365 | // hashCode | |
366 | // ------------------------------------------------------------------------ | |
367 | ||
2ba3d0a1 AM |
368 | /** |
369 | * Run the hashCode() method test. | |
370 | */ | |
371 | @Test | |
eb1bab5b BH |
372 | public void testHashCode() { |
373 | ChannelInfo channel1 = new ChannelInfo((ChannelInfo)fChannelInfo1); | |
374 | ChannelInfo channel2 = new ChannelInfo((ChannelInfo)fChannelInfo2); | |
375 | ||
376 | assertTrue("hashCode", fChannelInfo1.hashCode() == channel1.hashCode()); | |
377 | assertTrue("hashCode", fChannelInfo2.hashCode() == channel2.hashCode()); | |
378 | ||
379 | assertTrue("hashCode", fChannelInfo1.hashCode() != channel2.hashCode()); | |
380 | assertTrue("hashCode", fChannelInfo2.hashCode() != channel1.hashCode()); | |
381 | } | |
382 | } |