1 /*******************************************************************************
2 * Copyright (c) 2012, 2014 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
.io
.FileNotFoundException
;
16 import java
.text
.DateFormat
;
17 import java
.text
.SimpleDateFormat
;
18 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
;
26 @SuppressWarnings("javadoc")
27 public class ReadTrace
{
31 * @throws FileNotFoundException
33 public static void main(String
[] args
) throws FileNotFoundException
{
34 final String TRACE_PATH
= "traces/kernel";
36 // Change this to enable text output
37 final boolean USE_TEXT
= false;
39 final int LOOP_COUNT
= 10;
43 Vector
<Double
> benchs
= new Vector
<>();
44 CTFTrace trace
= null;
46 for (int loops
= 0; loops
< LOOP_COUNT
; loops
++) {
49 trace
= new CTFTrace(TRACE_PATH
);
50 } catch (CTFReaderException e
) {
51 throw new FileNotFoundException(TRACE_PATH
);
53 start
= System
.nanoTime();
55 System
.out
.println("Event, " + " Time, " + " type, " + " CPU ");
57 try (CTFTraceReader traceReader
= new CTFTraceReader(trace
);) {
58 start
= System
.nanoTime();
60 while (traceReader
.hasMoreEvents()) {
61 EventDefinition ed
= traceReader
.getCurrentEventDef();
64 String output
= formatDate(ed
.getTimestamp()
66 System
.out
.println(nbEvent
+ ", "
67 + output
+ ", " + ed
.getDeclaration().getName()
68 + ", " + ed
.getCPU() + ed
.getFields().toString());
71 traceReader
.advance();
74 stop
= System
.nanoTime();
76 System
.out
.print('.');
77 double time
= (stop
- start
) / (double) nbEvent
;
79 } catch (CTFReaderException e
) {
80 System
.out
.println("error");
83 System
.out
.println("");
85 for (Double val
: benchs
) {
89 System
.out
.println("Time to read " + nbEvent
+ " events = " + avg
91 for (Double val
: benchs
) {
92 System
.out
.print(val
);
93 System
.out
.print(", ");
99 * the timestamp in UTC to convert to nanoseconds.
100 * @return formatted string.
102 private static String
formatDate(long timestamp
) {
103 Date d
= new Date(timestamp
/ 1000000);
104 DateFormat df
= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.");
105 String output
= df
.format(d
) + (timestamp
% 1000000000);