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