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 String name
= "test-ss"; //$NON-NLS-1$
47 ITmfStateSystem ss
= StateSystemManager
.loadStateHistory(newStateFile
, input
, name
, 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
) {