1 /**********************************************************************
2 * Copyright (c) 2012, 2014 Ericsson
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
10 * Bernd Hufmann - Initial API and implementation
11 * Alexandre Montplaisir - Port to JUnit4
12 **********************************************************************/
14 package org
.eclipse
.linuxtools
.lttng2
.control
.core
.tests
.model
.impl
;
16 import static org
.junit
.Assert
.*;
18 import java
.util
.LinkedList
;
19 import java
.util
.List
;
21 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.core
.model
.IChannelInfo
;
22 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.core
.model
.IEventInfo
;
23 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.core
.model
.TraceEnablement
;
24 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.core
.model
.impl
.BufferType
;
25 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.core
.model
.impl
.ChannelInfo
;
26 import org
.eclipse
.linuxtools
.internal
.lttng2
.control
.core
.model
.impl
.EventInfo
;
27 import org
.junit
.Before
;
28 import org
.junit
.Test
;
31 * The class <code>ChannelInfoTest</code> contains tests for the class
32 * <code>{@link ChannelInfo}</code>.
34 public class ChannelInfoTest
{
36 // ------------------------------------------------------------------------
38 // ------------------------------------------------------------------------
40 private IChannelInfo fChannelInfo1
= null;
41 private IChannelInfo fChannelInfo2
= null;
43 // ------------------------------------------------------------------------
45 // ------------------------------------------------------------------------
48 * Perform pre-test initialization.
52 ModelImplFactory factory
= new ModelImplFactory();
53 fChannelInfo1
= factory
.getChannel1();
54 fChannelInfo2
= factory
.getChannel2();
57 // ------------------------------------------------------------------------
59 // ------------------------------------------------------------------------
61 // ------------------------------------------------------------------------
63 // ------------------------------------------------------------------------
66 * Run the ChannelInfo() constructor test.
69 public void testChannelInfo() {
70 ChannelInfo result
= new ChannelInfo("test");
71 assertNotNull(result
);
73 assertEquals("test", result
.getName());
74 assertEquals(0, result
.getNumberOfSubBuffers());
75 assertEquals("", result
.getOutputType());
76 assertEquals(false, result
.isOverwriteMode());
77 assertEquals(0, result
.getReadTimer());
78 assertEquals("disabled", result
.getState().getInName());
79 assertEquals(0, result
.getSubBufferSize());
80 assertEquals(0, result
.getSwitchTimer());
81 assertEquals(0, result
.getMaxSizeTraceFiles());
82 assertEquals(0, result
.getMaxNumberTraceFiles());
83 assertEquals(BufferType
.BUFFER_TYPE_UNKNOWN
, result
.getBufferType());
87 * Test copy constructor.
90 public void testChannelInfoCopy() {
91 ChannelInfo channelInfo
= new ChannelInfo((ChannelInfo
)fChannelInfo1
);
93 assertEquals(fChannelInfo1
.getName(), channelInfo
.getName());
94 assertEquals(fChannelInfo1
.getNumberOfSubBuffers(), channelInfo
.getNumberOfSubBuffers());
95 assertEquals(fChannelInfo1
.getOutputType(), channelInfo
.getOutputType());
96 assertEquals(fChannelInfo1
.isOverwriteMode(), channelInfo
.isOverwriteMode());
97 assertEquals(fChannelInfo1
.getReadTimer(), channelInfo
.getReadTimer());
98 assertEquals(fChannelInfo1
.getState(), channelInfo
.getState());
99 assertEquals(fChannelInfo1
.getSwitchTimer(), channelInfo
.getSwitchTimer());
100 assertEquals(fChannelInfo1
.getEvents().length
, channelInfo
.getEvents().length
);
101 assertEquals(fChannelInfo1
.getMaxSizeTraceFiles(), channelInfo
.getMaxSizeTraceFiles());
102 assertEquals(fChannelInfo1
.getMaxNumberTraceFiles(), channelInfo
.getMaxNumberTraceFiles());
103 assertEquals(fChannelInfo1
.getBufferType(), channelInfo
.getBufferType());
105 IEventInfo
[] orignalEvents
= fChannelInfo1
.getEvents();
106 IEventInfo
[] resultEvents
= channelInfo
.getEvents();
107 for (int i
= 0; i
< orignalEvents
.length
; i
++) {
108 assertEquals(orignalEvents
[i
], resultEvents
[i
]);
113 * Test copy constructor with a null value.
116 public void testChannelCopy2() {
118 ChannelInfo channel
= null;
119 new ChannelInfo(channel
);
122 catch (IllegalArgumentException e
) {
128 * Run the IEventInfo[] getEvents() method test.
131 public void testAddAndGetEvents_1() {
132 ChannelInfo fixture
= new ChannelInfo("test");
133 fixture
.setSwitchTimer(1L);
134 fixture
.setOverwriteMode(true);
135 fixture
.setReadTimer(1L);
136 fixture
.setState(TraceEnablement
.DISABLED
);
137 fixture
.setNumberOfSubBuffers(1);
138 fixture
.setOutputType("");
139 fixture
.setSubBufferSize(1L);
142 IEventInfo event
= new EventInfo("event");
143 fixture
.addEvent(event
);
145 // Verify the stored events
146 IEventInfo
[] result
= fixture
.getEvents();
148 assertNotNull(result
);
149 assertEquals(1, result
.length
);
150 assertNotNull(result
[0]);
151 assertTrue(event
.equals(result
[0]));
155 * Run the long getNumberOfSubBuffers() method test.
158 public void testGetAndSetters() {
159 ChannelInfo fixture
= new ChannelInfo("test");
160 fixture
.setSwitchTimer(2L);
161 fixture
.setOverwriteMode(true);
162 fixture
.setReadTimer(3L);
163 fixture
.setState(TraceEnablement
.DISABLED
);
164 fixture
.setNumberOfSubBuffers(4);
165 fixture
.setOutputType("splice()");
166 fixture
.setSubBufferSize(1L);
167 fixture
.setMaxSizeTraceFiles(1024);
168 fixture
.setMaxNumberTraceFiles(20);
169 fixture
.setBufferType(BufferType
.BUFFER_PER_UID
);
170 fixture
.addEvent(new EventInfo("event"));
172 long switchTimer
= fixture
.getSwitchTimer();
173 assertEquals(2L, switchTimer
);
175 boolean mode
= fixture
.isOverwriteMode();
178 long readTimer
= fixture
.getReadTimer();
179 assertEquals(3L, readTimer
);
181 TraceEnablement state
= fixture
.getState();
182 assertEquals("disabled", state
.getInName());
184 long numSubBuffers
= fixture
.getNumberOfSubBuffers();
185 assertEquals(4, numSubBuffers
);
187 String outputType
= fixture
.getOutputType();
188 assertEquals("splice()", outputType
);
190 long subBufferSize
= fixture
.getSubBufferSize();
191 assertEquals(1L, subBufferSize
);
193 int maxSizeTraceFiles
= fixture
.getMaxSizeTraceFiles();
194 assertEquals(1024, maxSizeTraceFiles
);
196 int maxNumberTraceFiles
= fixture
.getMaxNumberTraceFiles();
197 assertEquals(20, maxNumberTraceFiles
);
199 BufferType bufferType
= fixture
.getBufferType();
200 assertTrue(bufferType
== BufferType
.BUFFER_PER_UID
);
202 fixture
.setSwitchTimer(5L);
203 fixture
.setOverwriteMode(false);
204 fixture
.setReadTimer(6L);
205 fixture
.setState(TraceEnablement
.ENABLED
);
206 fixture
.setNumberOfSubBuffers(7);
207 fixture
.setOutputType("mmap()");
208 fixture
.setSubBufferSize(8L);
209 fixture
.setMaxSizeTraceFiles(4096);
210 fixture
.setMaxNumberTraceFiles(10);
211 fixture
.setBufferType(BufferType
.BUFFER_PER_PID
);
213 switchTimer
= fixture
.getSwitchTimer();
214 assertEquals(5L, switchTimer
);
216 mode
= fixture
.isOverwriteMode();
219 readTimer
= fixture
.getReadTimer();
220 assertEquals(6L, readTimer
);
222 state
= fixture
.getState();
223 assertEquals("enabled", state
.getInName());
225 numSubBuffers
= fixture
.getNumberOfSubBuffers();
226 assertEquals(7, numSubBuffers
);
228 outputType
= fixture
.getOutputType();
229 assertEquals("mmap()", outputType
);
231 subBufferSize
= fixture
.getSubBufferSize();
232 assertEquals(8L, subBufferSize
);
234 maxSizeTraceFiles
= fixture
.getMaxSizeTraceFiles();
235 assertEquals(4096, maxSizeTraceFiles
);
237 maxNumberTraceFiles
= fixture
.getMaxNumberTraceFiles();
238 assertEquals(10, maxNumberTraceFiles
);
240 bufferType
= fixture
.getBufferType();
241 assertTrue(bufferType
== BufferType
.BUFFER_PER_PID
);
245 * Run the void setEvents(List<IEventInfo>) method test.
248 public void testSetEvents_1() {
249 ChannelInfo fixture
= new ChannelInfo("test");
250 fixture
.setSwitchTimer(1L);
251 fixture
.setOverwriteMode(true);
252 fixture
.setReadTimer(1L);
253 fixture
.setState(TraceEnablement
.DISABLED
);
254 fixture
.setNumberOfSubBuffers(1);
255 fixture
.setOutputType("");
256 fixture
.setSubBufferSize(1L);
257 List
<IEventInfo
> events
= new LinkedList
<>();
259 for (int i
= 0; i
< 2; i
++) {
260 IEventInfo info
= new EventInfo("event" + i
);
261 info
.setEventType("tracepoint");
262 info
.setState((i
% 2 == 0 ?
"enabled" : "disabled"));
266 fixture
.setEvents(events
);
268 IEventInfo
[] infos
= fixture
.getEvents();
270 assertEquals(events
.size(), infos
.length
);
272 for (int i
= 0; i
< infos
.length
; i
++) {
273 assertEquals(events
.get(i
), infos
[i
]);
278 * Run the String toString() method test.
281 public void testToString_1() {
282 ChannelInfo fixture
= new ChannelInfo("channel");
283 fixture
.setSwitchTimer(1L);
284 fixture
.setOverwriteMode(true);
285 fixture
.setReadTimer(1L);
286 fixture
.setState(TraceEnablement
.DISABLED
);
287 fixture
.setNumberOfSubBuffers(1);
288 fixture
.setOutputType("splice()");
289 fixture
.setSubBufferSize(1L);
291 String result
= fixture
.toString();
293 // add additional test code here
294 assertEquals("[ChannelInfo([TraceInfo(Name=channel)],State=DISABLED,OverwriteMode=true,SubBuffersSize=1,NumberOfSubBuffers=1,SwitchTimer=1,ReadTimer=1,output=splice(),Events=None)]", result
);
298 * Run another String toString() method test.
301 public void testToString_2() {
302 String result
= fChannelInfo1
.toString();
304 // add additional test code here
305 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
);
308 // ------------------------------------------------------------------------
310 // ------------------------------------------------------------------------
313 * Run the equals() method test.
316 public void testEqualsReflexivity() {
317 assertTrue("equals", fChannelInfo1
.equals(fChannelInfo1
));
318 assertTrue("equals", fChannelInfo2
.equals(fChannelInfo2
));
320 assertTrue("equals", !fChannelInfo1
.equals(fChannelInfo2
));
321 assertTrue("equals", !fChannelInfo2
.equals(fChannelInfo1
));
325 * Run the equals() method test.
328 public void testEqualsSymmetry() {
329 ChannelInfo event1
= new ChannelInfo((ChannelInfo
)fChannelInfo1
);
330 ChannelInfo event2
= new ChannelInfo((ChannelInfo
)fChannelInfo2
);
332 assertTrue("equals", event1
.equals(fChannelInfo1
));
333 assertTrue("equals", fChannelInfo1
.equals(event1
));
335 assertTrue("equals", event2
.equals(fChannelInfo2
));
336 assertTrue("equals", fChannelInfo2
.equals(event2
));
340 * Run the equals() method test.
343 public void testEqualsTransivity() {
344 ChannelInfo channel1
= new ChannelInfo((ChannelInfo
)fChannelInfo1
);
345 ChannelInfo channel2
= new ChannelInfo((ChannelInfo
)fChannelInfo1
);
346 ChannelInfo channel3
= new ChannelInfo((ChannelInfo
)fChannelInfo1
);
348 assertTrue("equals", channel1
.equals(channel2
));
349 assertTrue("equals", channel2
.equals(channel3
));
350 assertTrue("equals", channel1
.equals(channel3
));
354 * Run the equals() method test.
357 public void testEqualsNull() {
358 assertTrue("equals", !fChannelInfo1
.equals(null));
359 assertTrue("equals", !fChannelInfo2
.equals(null));
362 // ------------------------------------------------------------------------
364 // ------------------------------------------------------------------------
367 * Run the hashCode() method test.
370 public void testHashCode() {
371 ChannelInfo channel1
= new ChannelInfo((ChannelInfo
)fChannelInfo1
);
372 ChannelInfo channel2
= new ChannelInfo((ChannelInfo
)fChannelInfo2
);
374 assertTrue("hashCode", fChannelInfo1
.hashCode() == channel1
.hashCode());
375 assertTrue("hashCode", fChannelInfo2
.hashCode() == channel2
.hashCode());
377 assertTrue("hashCode", fChannelInfo1
.hashCode() != channel2
.hashCode());
378 assertTrue("hashCode", fChannelInfo2
.hashCode() != channel1
.hashCode());