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
.StateSystemDisposedException
;
23 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.StateValueTypeException
;
24 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TimeRangeException
;
25 import org
.eclipse
.linuxtools
.tmf
.core
.exceptions
.TmfTraceException
;
26 import org
.eclipse
.linuxtools
.tmf
.core
.interval
.ITmfStateInterval
;
27 import org
.eclipse
.linuxtools
.tmf
.core
.statesystem
.IStateChangeInput
;
28 import org
.eclipse
.linuxtools
.tmf
.core
.statesystem
.ITmfStateSystem
;
29 import org
.eclipse
.linuxtools
.tmf
.core
.statesystem
.StateSystemManager
;
32 * Simple example of how to use the state system using a CTF kernel trace.
34 * @author Mathieu Denis
36 public class BasicStateSystemExample
{
40 * @param args Arguments on the command-line
42 public static void main(String
[] args
) {
43 /* Read a trace and build the state system */
45 File newStateFile
= new File("/tmp/helloworldctf.ht"); //$NON-NLS-1$
46 IStateChangeInput input
= new CtfKernelStateInput(CtfTestFiles
.getTestTrace());
47 ITmfStateSystem ss
= StateSystemManager
.loadStateHistory(newStateFile
, input
, true);
50 } catch (TmfTraceException e
) {
56 * From a state system tree previously built with a CTF kernel trace, print
57 * to the console the interval of each state and the ID of the current
58 * thread running on each CPU.
61 * the State System Builder through which make request
63 private static void requestExample(final ITmfStateSystem ssb
) {
65 /* Request the current thread executing on each CPU */
66 List
<Integer
> currentThreadByCPUS
;
67 List
<ITmfStateInterval
> stateIntervals
;
68 StringBuilder output
= new StringBuilder();
70 currentThreadByCPUS
= ssb
.getQuarks(Attributes
.CPUS
, "*", Attributes
.CURRENT_THREAD
); //$NON-NLS-1$
72 for (Integer currentThread
: currentThreadByCPUS
) {
73 stateIntervals
= ssb
.queryHistoryRange(currentThread
.intValue(), ssb
.getStartTime(),
74 ssb
.getCurrentEndTime());
76 /* Output formatting */
77 output
.append("Value of attribute : "); //$NON-NLS-1$
78 output
.append(ssb
.getFullAttributePath(currentThread
.intValue()));
79 output
.append("\n------------------------------------------------\n"); //$NON-NLS-1$
80 for (ITmfStateInterval stateInterval
: stateIntervals
) {
81 /* Print the interval */
83 output
.append(String
.valueOf(stateInterval
.getStartTime()));
84 output
.append(", "); //$NON-NLS-1$
85 output
.append(String
.valueOf(stateInterval
.getEndTime()));
87 /* Print the attribute value */
88 output
.append(" = "); //$NON-NLS-1$
89 output
.append(stateInterval
.getStateValue().unboxInt());
93 System
.out
.println(output
.toString());
94 } catch (TimeRangeException e
) {
96 } catch (AttributeNotFoundException e
) {
98 } catch (StateValueTypeException e
) {
100 } catch (StateSystemDisposedException e
) {