1 /*******************************************************************************
2 * Copyright (c) 2012 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 * Mathieu Denis <mathieu.denis@polymtl.ca> - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.lttng2
.kernel
.core
.tests
.headless
;
16 import java
.util
.List
;
18 import org
.eclipse
.linuxtools
.internal
.lttng2
.kernel
.core
.Attributes
;
19 import org
.eclipse
.linuxtools
.internal
.lttng2
.kernel
.core
.stateprovider
.CtfKernelStateInput
;
20 import org
.eclipse
.linuxtools
.lttng2
.kernel
.core
.tests
.stateprovider
.CtfTestFiles
;
21 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.AttributeNotFoundException
;
22 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.StateValueTypeException
;
23 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TimeRangeException
;
24 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TmfTraceException
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.interval
.ITmfStateInterval
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.statesystem
.IStateChangeInput
;
27 import org
.eclipse
.linuxtools
.tmf
.core
.statesystem
.ITmfStateSystem
;
28 import org
.eclipse
.linuxtools
.tmf
.core
.statesystem
.StateSystemManager
;
31 * Simple example of how to use the state system using a CTF kernel trace.
33 * @author Mathieu Denis
35 public class BasicStateSystemExample
{
39 * @param args Arguments on the command-line
41 public static void main(String
[] args
) {
42 /* Read a trace and build the state system */
44 File newStateFile
= new File("/tmp/helloworldctf.ht"); //$NON-NLS-1$
45 IStateChangeInput input
= new CtfKernelStateInput(CtfTestFiles
.getTestTrace());
46 ITmfStateSystem ss
= StateSystemManager
.loadStateHistory(newStateFile
, input
, true);
49 } catch (TmfTraceException e
) {
55 * From a state system tree previously built with a CTF kernel trace, print
56 * to the console the interval of each state and the ID of the current
57 * thread running on each CPU.
60 * the State System Builder through which make request
62 private static void requestExample(final ITmfStateSystem ssb
) {
64 /* Request the current thread executing on each CPU */
65 List
<Integer
> currentThreadByCPUS
;
66 List
<ITmfStateInterval
> stateIntervals
;
67 StringBuilder output
= new StringBuilder();
69 currentThreadByCPUS
= ssb
.getQuarks(Attributes
.CPUS
, "*", Attributes
.CURRENT_THREAD
); //$NON-NLS-1$
71 for (Integer currentThread
: currentThreadByCPUS
) {
72 stateIntervals
= ssb
.queryHistoryRange(currentThread
.intValue(), ssb
.getStartTime(),
73 ssb
.getCurrentEndTime());
75 /* Output formatting */
76 output
.append("Value of attribute : "); //$NON-NLS-1$
77 output
.append(ssb
.getFullAttributePath(currentThread
.intValue()));
78 output
.append("\n------------------------------------------------\n"); //$NON-NLS-1$
79 for (ITmfStateInterval stateInterval
: stateIntervals
) {
80 /* Print the interval */
82 output
.append(String
.valueOf(stateInterval
.getStartTime()));
83 output
.append(", "); //$NON-NLS-1$
84 output
.append(String
.valueOf(stateInterval
.getEndTime()));
86 /* Print the attribute value */
87 output
.append(" = "); //$NON-NLS-1$
88 output
.append(stateInterval
.getStateValue().unboxInt());
92 System
.out
.println(output
.toString());
93 } catch (TimeRangeException e
) {
95 } catch (AttributeNotFoundException e
) {
97 } catch (StateValueTypeException e
) {