1 /*******************************************************************************
2 * Copyright (c) 2013, 2015 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 * Alexandre Montplaisir - Initial API and implementation
11 ******************************************************************************/
13 package org
.eclipse
.tracecompass
.lttng2
.kernel
.core
.tests
.analysis
.kernel
.statesystem
;
16 import java
.io
.FileWriter
;
17 import java
.io
.PrintWriter
;
18 import java
.util
.List
;
20 import org
.eclipse
.jdt
.annotation
.NonNull
;
21 import org
.eclipse
.tracecompass
.analysis
.os
.linux
.core
.kernelanalysis
.KernelAnalysisModule
;
22 import org
.eclipse
.tracecompass
.statesystem
.core
.ITmfStateSystem
;
23 import org
.eclipse
.tracecompass
.statesystem
.core
.interval
.ITmfStateInterval
;
24 import org
.eclipse
.tracecompass
.statesystem
.core
.statevalue
.ITmfStateValue
;
25 import org
.eclipse
.tracecompass
.testtraces
.ctf
.CtfTestTrace
;
26 import org
.eclipse
.tracecompass
.tmf
.core
.statesystem
.TmfStateSystemAnalysisModule
;
27 import org
.eclipse
.tracecompass
.tmf
.ctf
.core
.tests
.shared
.CtfTmfTestTraceUtils
;
28 import org
.eclipse
.tracecompass
.tmf
.ctf
.core
.trace
.CtfTmfTrace
;
29 import org
.junit
.Test
;
32 * Small program to regenerate the values used in "TestValues.java" from the
33 * current LTTng-kernel state provider.
35 * It will write its output the a file called 'TestValues<something>.java' in
36 * your temporary files directory.
38 * @author Alexandre Montplaisir
40 public class GenerateTestValues
{
42 private static @NonNull CtfTestTrace testTrace
= CtfTestTrace
.TRACE2
;
43 private static final long targetTimestamp
= 18670067372290L + 1331649577946812237L;
44 private static final String INDENT
= " ";
47 * Test wrapper to run main properly
50 * we're messing with exception
53 public void test() throws Exception
{
61 * Command-line arguments, unused.
63 * I'm messing with Exception. Come at me bro!
65 public static void main(String
[] args
) throws Exception
{
66 /* Prepare the files */
67 File logFile
= File
.createTempFile("TestValues", ".java");
68 try (PrintWriter writer
= new PrintWriter(new FileWriter(logFile
), true);) {
70 /* Build and query the state system */
71 final CtfTmfTrace trace
= CtfTmfTestTraceUtils
.getTrace(testTrace
);
72 TmfStateSystemAnalysisModule module
= new KernelAnalysisModule() {
74 protected String
getSsFileName() {
79 if (!module
.setTrace(trace
)) {
80 throw new IllegalStateException();
82 module
.setId("test-values");
84 module
.waitForCompletion();
85 ITmfStateSystem ssq
= module
.getStateSystem();
87 throw new IllegalStateException();
90 List
<ITmfStateInterval
> fullState
= ssq
.queryFullState(targetTimestamp
);
92 /* Start printing the java file's contents */
93 writer
.println("interface TestValues {");
95 writer
.println(INDENT
+ "int size = " + fullState
.size() + ";");
98 /* Print the array contents */
99 writer
.println(INDENT
+ "long[] startTimes = {");
100 for (ITmfStateInterval interval
: fullState
) {
101 writer
.println(INDENT
+ INDENT
+ String
.valueOf(interval
.getStartTime()) + "L,");
103 writer
.println(INDENT
+ "};");
106 writer
.println(INDENT
+ "long[] endTimes = {");
107 for (ITmfStateInterval interval
: fullState
) {
108 writer
.println(INDENT
+ INDENT
+ String
.valueOf(interval
.getEndTime()) + "L,");
110 writer
.println(INDENT
+ "};");
113 writer
.println(INDENT
+ "ITmfStateValue[] values = {");
114 for (ITmfStateInterval interval
: fullState
) {
115 ITmfStateValue val
= interval
.getStateValue();
116 writer
.print(INDENT
+ INDENT
);
118 switch (val
.getType()) {
120 writer
.println("TmfStateValue.nullValue(),");
123 writer
.println("TmfStateValue.newValueInt(" + val
.unboxInt() + "),");
126 writer
.println("TmfStateValue.newValueLong(" + val
.unboxLong() + "),");
129 writer
.println("TmfStateValue.newValueDouble(" + val
.unboxDouble() + "),");
132 writer
.println("TmfStateValue.newValueString(\"" + val
.unboxStr() + "\"),");
135 writer
.println(val
.toString());
139 writer
.println(INDENT
+ "};");