tmf: Add an ID to each state system that gets built
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.core.tests / src / org / eclipse / linuxtools / lttng2 / kernel / core / tests / headless / BasicStateSystemExample.java
CommitLineData
dee39dbd
MD
1/*******************************************************************************
2 * Copyright (c) 2012 Ericsson
3 *
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
8 *
9 * Contributors:
10 * Mathieu Denis <mathieu.denis@polymtl.ca> - Initial API and implementation
11 *******************************************************************************/
12
13package org.eclipse.linuxtools.lttng2.kernel.core.tests.headless;
14
15import java.io.File;
16import java.util.List;
17
18import org.eclipse.linuxtools.internal.lttng2.kernel.core.Attributes;
19import org.eclipse.linuxtools.internal.lttng2.kernel.core.stateprovider.CtfKernelStateInput;
20import org.eclipse.linuxtools.lttng2.kernel.core.tests.stateprovider.CtfTestFiles;
21import org.eclipse.linuxtools.tmf.core.exceptions.AttributeNotFoundException;
22import org.eclipse.linuxtools.tmf.core.exceptions.StateValueTypeException;
23import org.eclipse.linuxtools.tmf.core.exceptions.TimeRangeException;
24import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
25import org.eclipse.linuxtools.tmf.core.interval.ITmfStateInterval;
26import org.eclipse.linuxtools.tmf.core.statesystem.IStateChangeInput;
f1f86dfb 27import org.eclipse.linuxtools.tmf.core.statesystem.ITmfStateSystem;
dee39dbd
MD
28import org.eclipse.linuxtools.tmf.core.statesystem.StateSystemManager;
29
30/**
31 * Simple example of how to use the state system using a CTF kernel trace.
32 *
33 * @author Mathieu Denis
34 */
35public class BasicStateSystemExample {
36
d85d2a6d
AM
37 /**
38 * Run the program
39 * @param args Arguments on the command-line
40 */
dee39dbd
MD
41 public static void main(String[] args) {
42 /* Read a trace and build the state system */
43 try {
44 File newStateFile = new File("/tmp/helloworldctf.ht"); //$NON-NLS-1$
45 IStateChangeInput input = new CtfKernelStateInput(CtfTestFiles.getTestTrace());
a76f1067
AM
46 String name = "test-ss"; //$NON-NLS-1$
47 ITmfStateSystem ss = StateSystemManager.loadStateHistory(newStateFile, input, name, true);
dee39dbd
MD
48
49 requestExample(ss);
50 } catch (TmfTraceException e) {
51 e.printStackTrace();
52 }
53 }
54
55 /**
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.
59 *
60 * @param ssb
61 * the State System Builder through which make request
62 */
f1f86dfb 63 private static void requestExample(final ITmfStateSystem ssb) {
dee39dbd
MD
64 try {
65 /* Request the current thread executing on each CPU */
66 List<Integer> currentThreadByCPUS;
67 List<ITmfStateInterval> stateIntervals;
68 StringBuilder output = new StringBuilder();
69
70 currentThreadByCPUS = ssb.getQuarks(Attributes.CPUS, "*", Attributes.CURRENT_THREAD); //$NON-NLS-1$
71
72 for (Integer currentThread : currentThreadByCPUS) {
73 stateIntervals = ssb.queryHistoryRange(currentThread.intValue(), ssb.getStartTime(),
74 ssb.getCurrentEndTime());
75
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 */
82 output.append('[');
83 output.append(String.valueOf(stateInterval.getStartTime()));
84 output.append(", "); //$NON-NLS-1$
85 output.append(String.valueOf(stateInterval.getEndTime()));
86 output.append(']');
87 /* Print the attribute value */
88 output.append(" = "); //$NON-NLS-1$
89 output.append(stateInterval.getStateValue().unboxInt());
90 output.append('\n');
91 }
92 }
93 System.out.println(output.toString());
94 } catch (TimeRangeException e) {
95 e.printStackTrace();
96 } catch (AttributeNotFoundException e) {
97 e.printStackTrace();
98 } catch (StateValueTypeException e) {
99 e.printStackTrace();
100 }
101 }
102}
This page took 0.027896 seconds and 5 git commands to generate.