TMF: Add functions to verify if events are present in a CTF Trace
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.core.tests / src / org / eclipse / linuxtools / tmf / core / tests / request / TmfRequestExecutorTest.java
CommitLineData
d18dd09b 1/*******************************************************************************
61759503 2 * Copyright (c) 2009, 2013 Ericsson
96b353c5 3 *
d18dd09b
ASL
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
96b353c5 8 *
d18dd09b
ASL
9 * Contributors:
10 * Francois Chouinard - Initial API and implementation
6e1886bc 11 * Alexandre Montplaisir - Port to JUnit4
d18dd09b
ASL
12 *******************************************************************************/
13
6c13869b 14package org.eclipse.linuxtools.tmf.core.tests.request;
d18dd09b 15
6e1886bc
AM
16import static org.junit.Assert.assertEquals;
17import static org.junit.Assert.assertFalse;
18import static org.junit.Assert.assertTrue;
d18dd09b 19
2f185a65 20import org.eclipse.linuxtools.internal.tmf.core.component.TmfEventThread;
8fd82db5 21import org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor;
2f185a65
FC
22import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider;
23import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
24import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
5419a136
AM
25import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
26import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
27import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
2f185a65
FC
28import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
29import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
30import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
5c00c0b7 31
6e1886bc
AM
32import org.junit.After;
33import org.junit.Before;
34import org.junit.Test;
35
d18dd09b 36/**
d18dd09b
ASL
37 * Test suite for the TmfRequestExecutor class.
38 */
6e1886bc 39public class TmfRequestExecutorTest {
d18dd09b 40
96b353c5
FC
41 // ------------------------------------------------------------------------
42 // Variables
43 // ------------------------------------------------------------------------
44
45 private TmfRequestExecutor fExecutor;
5c00c0b7 46
6e1886bc
AM
47 // ------------------------------------------------------------------------
48 // Housekeeping
49 // ------------------------------------------------------------------------
d18dd09b 50
6e1886bc
AM
51 /**
52 * Setup
53 */
54 @Before
55 public void setUp() {
96b353c5 56 fExecutor = new TmfRequestExecutor();
96b353c5
FC
57 }
58
6e1886bc
AM
59 /**
60 * Cleanup
61 */
62 @After
63 public void tearDown() {
96b353c5
FC
64 fExecutor.stop();
65 }
d18dd09b 66
6e1886bc
AM
67 // ------------------------------------------------------------------------
68 // Constructors
69 // ------------------------------------------------------------------------
70
71 /**
72 * Test method for
73 * {@link org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor#TmfRequestExecutor()}
74 */
75 @Test
76 public void testTmfRequestExecutor() {
77 TmfRequestExecutor executor = new TmfRequestExecutor();
78 assertFalse("isShutdown", executor.isShutdown());
79 assertFalse("isTerminated", executor.isTerminated());
80 }
81
82 /**
83 * Test method for
84 * {@link org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor#stop()}
85 */
86 @Test
87 public void testStop() {
88 TmfRequestExecutor executor = new TmfRequestExecutor();
89 executor.stop();
90 assertTrue("isShutdown", executor.isShutdown());
91 assertTrue("isTerminated", executor.isTerminated());
92 }
93
94 // ------------------------------------------------------------------------
95 // execute
96 // ------------------------------------------------------------------------
97
98 // Dummy context
99 private static class MyContext implements ITmfContext {
100 private long fNbRequested;
2f185a65
FC
101 private long fRank;
102
103 public MyContext(long requested) {
104 fNbRequested = requested;
105 fRank = 0;
106 }
6e1886bc 107
2f185a65
FC
108 @Override
109 public long getRank() {
110 return (fRank <= fNbRequested) ? fRank : -1;
111 }
6e1886bc 112
2f185a65
FC
113 @Override
114 public ITmfLocation getLocation() {
115 return null;
116 }
6e1886bc 117
2f185a65
FC
118 @Override
119 public boolean hasValidRank() {
120 return true;
121 }
6e1886bc 122
2f185a65
FC
123 @Override
124 public void setLocation(ITmfLocation location) {
125 }
6e1886bc 126
2f185a65
FC
127 @Override
128 public void setRank(long rank) {
129 fRank = rank;
130 }
6e1886bc 131
2f185a65
FC
132 @Override
133 public void increaseRank() {
134 fRank++;
135 }
6e1886bc 136
2f185a65
FC
137 @Override
138 public void dispose() {
139 }
6e1886bc 140
2f185a65
FC
141 @Override
142 public MyContext clone() {
143 return this;
144 }
6e1886bc 145 }
2f185a65 146
6e1886bc
AM
147 // Dummy provider
148 private static class MyProvider extends TmfDataProvider {
149 private ITmfEvent fEvent = new TmfEvent();
2f185a65
FC
150
151 @Override
152 public String getName() {
153 return null;
154 }
6e1886bc 155
2f185a65
FC
156 @Override
157 public void dispose() {
158 }
6e1886bc 159
2f185a65
FC
160 @Override
161 public void broadcast(TmfSignal signal) {
162 }
6e1886bc 163
2f185a65 164 @Override
5419a136 165 public void sendRequest(ITmfDataRequest request) {
2f185a65 166 }
6e1886bc 167
2f185a65
FC
168 @Override
169 public void fireRequest() {
170 }
6e1886bc 171
2f185a65
FC
172 @Override
173 public void notifyPendingRequest(boolean isIncrement) {
174 }
6e1886bc 175
2f185a65
FC
176 @Override
177 public ITmfEvent getNext(ITmfContext context) {
178 context.increaseRank();
179 return context.getRank() >= 0 ? fEvent : null;
180 }
6e1886bc 181
2f185a65 182 @Override
5419a136 183 public ITmfContext armRequest(ITmfDataRequest request) {
2f185a65
FC
184 return new MyContext(request.getNbRequested());
185 }
6e1886bc 186 }
2f185a65 187
6e1886bc 188 // Dummy request
5419a136
AM
189 private static class MyRequest extends TmfDataRequest {
190 public MyRequest(ExecutionType priority, int requested) {
191 super(ITmfEvent.class, 0, requested, priority);
2f185a65 192 }
6e1886bc 193
2f185a65 194 @Override
5419a136 195 public void done() {
2f185a65
FC
196 synchronized (monitor) {
197 monitor.notifyAll();
198 }
199 }
200 }
201
202 // Dummy thread
203 private static class MyThread extends TmfEventThread {
5419a136 204 public MyThread(TmfDataProvider provider, ITmfDataRequest request) {
2f185a65 205 super(provider, request);
2f185a65
FC
206 }
207 }
208
5419a136 209 private final static Object monitor = new Object();
2f185a65
FC
210
211 /**
6e1886bc
AM
212 * Test method for
213 * {@link org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor#execute(java.lang.Runnable)}
214 */
215 @Test
216 public void testExecute() {
2f185a65 217 MyProvider provider = new MyProvider();
6e1886bc
AM
218 MyRequest request1 = new MyRequest(ExecutionType.BACKGROUND, Integer.MAX_VALUE / 5);
219 MyThread thread1 = new MyThread(provider, request1);
220 MyRequest request2 = new MyRequest(ExecutionType.FOREGROUND, Integer.MAX_VALUE / 10);
221 MyThread thread2 = new MyThread(provider, request2);
222 MyRequest request3 = new MyRequest(ExecutionType.FOREGROUND, Integer.MAX_VALUE / 10);
223 MyThread thread3 = new MyThread(provider, request3);
2f185a65
FC
224
225 // Start thread1
5419a136
AM
226 fExecutor.execute(thread1);
227 try {
228 Thread.sleep(1000);
229 } catch (InterruptedException e) {
2f185a65 230 }
6e1886bc 231 assertTrue("isRunning", thread1.isRunning());
2f185a65
FC
232
233 // Start higher priority thread2
5419a136
AM
234 fExecutor.execute(thread2);
235 try {
236 Thread.sleep(1000);
237 } catch (InterruptedException e) {
2f185a65 238 }
5419a136
AM
239 assertFalse("isRunning", thread1.isRunning());
240 assertTrue("isRunning", thread2.isRunning());
2f185a65
FC
241
242 // Wait for end of thread2
243 try {
5419a136
AM
244 synchronized (monitor) {
245 monitor.wait();
246 Thread.sleep(1000);
2f185a65
FC
247 }
248 } catch (InterruptedException e) {
249 }
5419a136
AM
250 assertTrue("isCompleted", thread2.isCompleted());
251 assertTrue("isRunning", thread1.isRunning());
2f185a65
FC
252
253 // Start higher priority thread3
5419a136
AM
254 fExecutor.execute(thread3);
255 try {
256 Thread.sleep(500);
257 } catch (InterruptedException e) {
2f185a65 258 }
5419a136
AM
259 assertFalse("isRunning", thread1.isRunning());
260 assertTrue("isRunning", thread3.isRunning());
2f185a65
FC
261
262 // Wait for end of thread3
263 try {
5419a136
AM
264 synchronized (monitor) {
265 monitor.wait();
266 Thread.sleep(500);
2f185a65
FC
267 }
268 } catch (InterruptedException e) {
269 }
5419a136
AM
270 assertTrue("isCompleted", thread3.isCompleted());
271 assertTrue("isRunning", thread1.isRunning());
2f185a65
FC
272
273 // Wait for thread1 completion
274 try {
5419a136
AM
275 synchronized (monitor) {
276 monitor.wait();
2f185a65
FC
277 }
278 } catch (InterruptedException e) {
279 }
5419a136 280 assertTrue("isCompleted", thread1.isCompleted());
2f185a65 281 }
ff4ed569 282
6e1886bc
AM
283 // ------------------------------------------------------------------------
284 // toString
285 // ------------------------------------------------------------------------
ff4ed569 286
6e1886bc
AM
287 /**
288 * Test method for
289 * {@link org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor#toString()}
290 */
291 @Test
292 public void testToString() {
96b353c5
FC
293 TmfRequestExecutor executor = new TmfRequestExecutor();
294 String expected = "[TmfRequestExecutor(ThreadPoolExecutor)]";
295 assertEquals("toString", expected, executor.toString());
6e1886bc 296 }
d18dd09b
ASL
297
298}
This page took 0.055115 seconds and 5 git commands to generate.