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
* Matthew Khouzam - Initial API and implementation
11
*******************************************************************************/
13
package org.eclipse.linuxtools.ctf.core.tests.headless;
15
import java.text.DateFormat;
16
import java.text.SimpleDateFormat;
17
import java.util.Date;
19
import java.util.Vector;
21
import org.eclipse.linuxtools.ctf.core.event.EventDefinition;
22
import org.eclipse.linuxtools.ctf.core.trace.CTFReaderException;
23
import org.eclipse.linuxtools.ctf.core.trace.CTFTrace;
24
import org.eclipse.linuxtools.ctf.core.trace.CTFTraceReader;
25
import org.eclipse.linuxtools.internal.ctf.core.trace.Stream;
27
@SuppressWarnings("javadoc")
28
public class ReadTrace {
33
@SuppressWarnings("nls")
34
public static void main(String[] args) {
35
final String TRACE_PATH = "traces/kernel";
37
// Change this to enable text output
38
final boolean USE_TEXT = false;
40
final int LOOP_COUNT = 1;
44
Vector<Double> benchs = new Vector<Double>();
45
CTFTrace trace = null;
47
for (int loops = 0; loops < LOOP_COUNT; loops++) {
50
trace = new CTFTrace(TRACE_PATH);
51
} catch (CTFReaderException e) {
55
start = System.nanoTime();
57
System.out.println("Event, " + " Time, " + " type, " + " CPU ");
60
CTFTraceReader traceReader = new CTFTraceReader(trace);
62
start = System.nanoTime();
64
while (traceReader.hasMoreEvents()) {
65
EventDefinition ed = traceReader.getCurrentEventDef();
68
String output = formatDate(ed.getTimestamp()
70
System.out.println(nbEvent + ", "
71
+ output + ", " + ed.getDeclaration().getName()
72
+ ", " + ed.getCPU() + ed.getFields().toString()) ;
74
long endTime = traceReader.getEndTime();
75
long timestamp = traceReader.getCurrentEventDef().getTimestamp();
76
traceReader.advance();
78
Map<Long, Stream> streams = traceReader.getTrace().getStreams();
80
stop = System.nanoTime();
82
System.out.print('.');
83
double time = (stop - start) / (double) nbEvent;
86
System.out.println("");
88
for (Double val : benchs) {
92
System.out.println("Time to read " + nbEvent + " events = " + avg
94
for (Double val : benchs) {
95
System.out.print(val);
96
System.out.print(", ");
102
* the timestamp in UTC to convert to nanoseconds.
103
* @return formatted string.
105
private static String formatDate(long timestamp) {
106
Date d = new Date(timestamp / 1000000);
107
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss."); //$NON-NLS-1$
108
String output = df.format(d) + (timestamp % 1000000000);