| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/core/test_utils.html"> |
| <link rel="import" href="/extras/importer/etw/etw_importer.html"> |
| <link rel="import" href="/extras/importer/etw/eventtrace_parser.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { // @suppress longLineCheck |
| // Constants for EventTrace events. |
| var guid = '68FDD900-4A3E-11D1-84F4-0000F80464E3'; |
| var kEventTraceHeaderOpcode = 0; |
| |
| var kEventTraceHeaderPayload32bitV2 = |
| 'AAABAAYBAQWwHQAAEAAAABEs1WHICMwBYWECAGQAAAABAAAAAwAAAAEAAAAEAAAAAAAAA' + |
| 'FoJAAAFAAAABgAAACwBAABAAHQAegByAGUAcwAuAGQAbABsACwALQAxADEAMgAAAAAAAA' + |
| 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQACAAAAAAAAAAAAAABAAHQ' + |
| 'AegByAGUAcwAuAGQAbABsACwALQAxADEAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + |
| 'AAAAAAAAAAAAAAADAAAAAgACAAAAAAAAAMT///8AAAAAf0Ob368FzAGdrCMAAAAAACw0o' + |
| '2DICMwBAQAAAAAAAABNAGEAawBlACAAVABlAHMAdAAgAEQAYQB0AGEAIABTAGUAcwBzAG' + |
| 'kAbwBuAAAAYwA6AFwAcwByAGMAXABzAGEAdwBiAHUAYwBrAFwAdAByAHUAbgBrAFwAcwB' + |
| 'yAGMAXABzAGEAdwBiAHUAYwBrAFwAbABvAGcAXwBsAGkAYgBcAHQAZQBzAHQAXwBkAGEA' + |
| 'dABhAFwAaQBtAGEAZwBlAF8AZABhAHQAYQBfADMAMgBfAHYAMAAuAGUAdABsAAAA'; |
| |
| var kEventTraceHeaderPayload64bitV2 = |
| 'AAABAAYBAQWxHQAABAAAADsuzRRYLM8BYWECAAAAAAABAAEAtgEAAAEAAAAIAAAAHwAAA' + |
| 'KAGAAAAAAAAAAAAAAAAAAAAAAAALAEAAEAAdAB6AHIAZQBzAC4AZABsAGwALAAtADEAMQ' + |
| 'AyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAIAAAAAAAA' + |
| 'AAAAAAEAAdAB6AHIAZQBzAC4AZABsAGwALAAtADEAMQAxAAAAAAAAAAAAAAAAAAAAAAAA' + |
| 'AAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAIAAAAAAAAAxP///wAAAABZQyWiwCvPAX1GG' + |
| 'QAAAAAALWSZBFgszwEBAAAAAAAAAFIAZQBsAG8AZwBnAGUAcgAAAEMAOgBcAGsAZQByAG' + |
| '4AZQBsAC4AZQB0AGwAAAA='; |
| |
| test('DecodeFields', function() { |
| |
| var importer = new tr.e.importer.etw.EtwImporter('dummy', []); |
| var decoder = importer.decoder_; |
| var parser = new tr.e.importer.etw.EventTraceParser(importer); |
| var header; |
| var fields; |
| |
| // Validate a version 2 32-bit payload. |
| header = { |
| guid: guid, opcode: kEventTraceHeaderOpcode, version: 2, is64: 0 |
| }; |
| decoder.reset(kEventTraceHeaderPayload32bitV2); |
| fields = parser.decodeFields(header, decoder); |
| |
| assert.equal(fields.bufferSize, 65536); |
| assert.equal(fields.version, 83951878); |
| assert.equal(fields.providerVersion, 7600); |
| assert.equal(fields.numberOfProcessors, 16); |
| assert.strictEqual(fields.endTime, '01cc08c861d52c11'); |
| assert.equal(fields.timerResolution, 156001); |
| assert.equal(fields.maxFileSize, 100); |
| assert.equal(fields.logFileMode, 1); |
| assert.equal(fields.buffersWritten, 3); |
| assert.equal(fields.startBuffers, 1); |
| assert.equal(fields.pointerSize, 4); |
| assert.equal(fields.eventsLost, 0); |
| assert.equal(fields.cpuSpeed, 2394); |
| assert.equal(fields.loggerName, 5); |
| assert.equal(fields.logFileName, 6); |
| assert.strictEqual(fields.timeZoneInformation.standardName, |
| '@tzres.dll,-112'); |
| assert.strictEqual(fields.timeZoneInformation.daylightName, |
| '@tzres.dll,-111'); |
| assert.strictEqual(fields.bootTime, '01cc05afdf9b437f'); |
| assert.strictEqual(fields.perfFreq, '000000000023ac9d'); |
| assert.strictEqual(fields.startTime, '01cc08c860a3342c'); |
| assert.equal(fields.reservedFlags, 1); |
| assert.equal(fields.buffersLost, 0); |
| assert.strictEqual(fields.sessionNameString, 'Make Test Data Session'); |
| assert.strictEqual(fields.logFileNameString, |
| 'c:\\src\\sawbuck\\trunk\\src\\sawbuck\\log_lib\\' + |
| 'test_data\\image_data_32_v0.etl'); |
| |
| // Validate a version 2 64-bit payload. |
| header = { |
| guid: guid, opcode: kEventTraceHeaderOpcode, version: 2, is64: 1 |
| }; |
| decoder.reset(kEventTraceHeaderPayload64bitV2); |
| fields = parser.decodeFields(header, decoder); |
| |
| assert.equal(fields.bufferSize, 65536); |
| assert.equal(fields.version, 83951878); |
| assert.equal(fields.providerVersion, 7601); |
| assert.equal(fields.numberOfProcessors, 4); |
| assert.strictEqual(fields.endTime, '01cf2c5814cd2e3b'); |
| assert.equal(fields.timerResolution, 156001); |
| assert.equal(fields.maxFileSize, 0); |
| assert.equal(fields.logFileMode, 0x10001); |
| assert.equal(fields.buffersWritten, 438); |
| assert.equal(fields.startBuffers, 1); |
| assert.equal(fields.pointerSize, 8); |
| assert.equal(fields.eventsLost, 31); |
| assert.equal(fields.cpuSpeed, 1696); |
| assert.equal(fields.loggerName, 0); |
| assert.equal(fields.logFileName, 0); |
| assert.strictEqual(fields.timeZoneInformation.standardName, |
| '@tzres.dll,-112'); |
| assert.strictEqual(fields.timeZoneInformation.daylightName, |
| '@tzres.dll,-111'); |
| assert.strictEqual(fields.bootTime, '01cf2bc0a2254359'); |
| assert.strictEqual(fields.perfFreq, '000000000019467d'); |
| assert.strictEqual(fields.startTime, '01cf2c580499642d'); |
| assert.equal(fields.reservedFlags, 1); |
| assert.equal(fields.buffersLost, 0); |
| assert.strictEqual(fields.sessionNameString, 'Relogger'); |
| assert.strictEqual(fields.logFileNameString, 'C:\\kernel.etl'); |
| }); |
| }); |
| </script> |
| |