3 Copyright (c) 2014 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file.
8 <link rel="import" href="/tracing/test_utils.html">
9 <link rel="import" href="/tracing/importer/etw_importer.html">
10 <link rel="import" href="/tracing/importer/etw/eventtrace_parser.html">
15 tv.unittest.testSuite(function() { // @suppress longLineCheck
16 // Constants for EventTrace events.
17 var guid = '68FDD900-4A3E-11D1-84F4-0000F80464E3';
18 var kEventTraceHeaderOpcode = 0;
20 var kEventTraceHeaderPayload32bitV2 =
21 'AAABAAYBAQWwHQAAEAAAABEs1WHICMwBYWECAGQAAAABAAAAAwAAAAEAAAAEAAAAAAAAA' +
22 'FoJAAAFAAAABgAAACwBAABAAHQAegByAGUAcwAuAGQAbABsACwALQAxADEAMgAAAAAAAA' +
23 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQACAAAAAAAAAAAAAABAAHQ' +
24 'AegByAGUAcwAuAGQAbABsACwALQAxADEAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +
25 'AAAAAAAAAAAAAAADAAAAAgACAAAAAAAAAMT///8AAAAAf0Ob368FzAGdrCMAAAAAACw0o' +
26 '2DICMwBAQAAAAAAAABNAGEAawBlACAAVABlAHMAdAAgAEQAYQB0AGEAIABTAGUAcwBzAG' +
27 'kAbwBuAAAAYwA6AFwAcwByAGMAXABzAGEAdwBiAHUAYwBrAFwAdAByAHUAbgBrAFwAcwB' +
28 'yAGMAXABzAGEAdwBiAHUAYwBrAFwAbABvAGcAXwBsAGkAYgBcAHQAZQBzAHQAXwBkAGEA' +
29 'dABhAFwAaQBtAGEAZwBlAF8AZABhAHQAYQBfADMAMgBfAHYAMAAuAGUAdABsAAAA';
31 var kEventTraceHeaderPayload64bitV2 =
32 'AAABAAYBAQWxHQAABAAAADsuzRRYLM8BYWECAAAAAAABAAEAtgEAAAEAAAAIAAAAHwAAA' +
33 'KAGAAAAAAAAAAAAAAAAAAAAAAAALAEAAEAAdAB6AHIAZQBzAC4AZABsAGwALAAtADEAMQ' +
34 'AyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAIAAAAAAAA' +
35 'AAAAAAEAAdAB6AHIAZQBzAC4AZABsAGwALAAtADEAMQAxAAAAAAAAAAAAAAAAAAAAAAAA' +
36 'AAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAIAAAAAAAAAxP///wAAAABZQyWiwCvPAX1GG' +
37 'QAAAAAALWSZBFgszwEBAAAAAAAAAFIAZQBsAG8AZwBnAGUAcgAAAEMAOgBcAGsAZQByAG' +
38 '4AZQBsAC4AZQB0AGwAAAA=';
40 test('DecodeFields', function() {
42 var importer = new tracing.importer.EtwImporter('dummy', []);
43 var decoder = importer.decoder_;
44 var parser = new tracing.importer.etw.EventTraceParser(importer);
48 // Validate a version 2 32-bit payload.
50 guid: guid, opcode: kEventTraceHeaderOpcode, version: 2, is64: 0
52 decoder.reset(kEventTraceHeaderPayload32bitV2);
53 fields = parser.decodeFields(header, decoder);
55 assertTrue(fields.bufferSize == 65536);
56 assertTrue(fields.version == 83951878);
57 assertTrue(fields.providerVersion == 7600);
58 assertTrue(fields.numberOfProcessors == 16);
59 assertTrue(fields.endTime === '01cc08c861d52c11');
60 assertTrue(fields.timerResolution == 156001);
61 assertTrue(fields.maxFileSize == 100);
62 assertTrue(fields.logFileMode == 1);
63 assertTrue(fields.buffersWritten == 3);
64 assertTrue(fields.startBuffers == 1);
65 assertTrue(fields.pointerSize == 4);
66 assertTrue(fields.eventsLost == 0);
67 assertTrue(fields.cpuSpeed == 2394);
68 assertTrue(fields.loggerName == 5);
69 assertTrue(fields.logFileName == 6);
70 assertTrue(fields.timeZoneInformation.standardName === '@tzres.dll,-112');
71 assertTrue(fields.timeZoneInformation.daylightName === '@tzres.dll,-111');
72 assertTrue(fields.bootTime === '01cc05afdf9b437f');
73 assertTrue(fields.perfFreq === '000000000023ac9d');
74 assertTrue(fields.startTime === '01cc08c860a3342c');
75 assertTrue(fields.reservedFlags == 1);
76 assertTrue(fields.buffersLost == 0);
77 assertTrue(fields.sessionNameString === 'Make Test Data Session');
78 assertTrue(fields.logFileNameString ===
79 'c:\\src\\sawbuck\\trunk\\src\\sawbuck\\log_lib\\' +
80 'test_data\\image_data_32_v0.etl');
82 // Validate a version 2 64-bit payload.
84 guid: guid, opcode: kEventTraceHeaderOpcode, version: 2, is64: 1
86 decoder.reset(kEventTraceHeaderPayload64bitV2);
87 fields = parser.decodeFields(header, decoder);
89 assertTrue(fields.bufferSize == 65536);
90 assertTrue(fields.version == 83951878);
91 assertTrue(fields.providerVersion == 7601);
92 assertTrue(fields.numberOfProcessors == 4);
93 assertTrue(fields.endTime === '01cf2c5814cd2e3b');
94 assertTrue(fields.timerResolution == 156001);
95 assertTrue(fields.maxFileSize == 0);
96 assertTrue(fields.logFileMode == 0x10001);
97 assertTrue(fields.buffersWritten == 438);
98 assertTrue(fields.startBuffers == 1);
99 assertTrue(fields.pointerSize == 8);
100 assertTrue(fields.eventsLost == 31);
101 assertTrue(fields.cpuSpeed == 1696);
102 assertTrue(fields.loggerName == 0);
103 assertTrue(fields.logFileName == 0);
104 assertTrue(fields.timeZoneInformation.standardName === '@tzres.dll,-112');
105 assertTrue(fields.timeZoneInformation.daylightName === '@tzres.dll,-111');
106 assertTrue(fields.bootTime === '01cf2bc0a2254359');
107 assertTrue(fields.perfFreq === '000000000019467d');
108 assertTrue(fields.startTime === '01cf2c580499642d');
109 assertTrue(fields.reservedFlags == 1);
110 assertTrue(fields.buffersLost == 0);
111 assertTrue(fields.sessionNameString === 'Relogger');
112 assertTrue(fields.logFileNameString === 'C:\\kernel.etl');