blob: c0e8a9ce5d9e059d0b1439258abe7a4612b9bcea [file] [log] [blame]
<!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>