diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-03-05 17:34:47 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-03-06 10:04:14 +0000 |
commit | eaf1da4d961fbbda9455f9af3b23d1af777f43fa (patch) | |
tree | 95970599ecee31c4f7f940bc97ac98c61a3d0cad /chromium/third_party/catapult/tracing/tracing/extras/importer/etw/thread_parser_test.html | |
parent | 38a9a29f4f9436cace7f0e7abf9c586057df8a4e (diff) |
BASELINE: Update Chromium to 73.0.3683.64
Change-Id: I76517dc277ba4e16bfd7e098fda3d079656b3b9f
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/catapult/tracing/tracing/extras/importer/etw/thread_parser_test.html')
-rw-r--r-- | chromium/third_party/catapult/tracing/tracing/extras/importer/etw/thread_parser_test.html | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/chromium/third_party/catapult/tracing/tracing/extras/importer/etw/thread_parser_test.html b/chromium/third_party/catapult/tracing/tracing/extras/importer/etw/thread_parser_test.html new file mode 100644 index 00000000000..a15e3235a25 --- /dev/null +++ b/chromium/third_party/catapult/tracing/tracing/extras/importer/etw/thread_parser_test.html @@ -0,0 +1,176 @@ +<!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="/tracing/core/test_utils.html"> +<link rel="import" href="/tracing/extras/importer/etw/etw_importer.html"> +<link rel="import" href="/tracing/extras/importer/etw/thread_parser.html"> + +<script> +'use strict'; + +tr.b.unittest.testSuite(function() { + // Constants for Thread events. + const guid = '3D6FA8D1-FE05-11D0-9DDA-00C04FD7BA7C'; + const kThreadStartOpcode = 1; + const kThreadEndOpcode = 2; + const kThreadDCStartOpcode = 3; + const kThreadCSwitchOpcode = 36; + + const kThreadStartPayload32bitV1 = + 'BAAAAEwHAAAAYLfzADC38wAAAAAAAAAAhdse9wAAAAD/AAAA'; + + const kThreadEndPayload32bitV1 = 'BAAAALQAAAA='; + + + const kThreadDCStartPayload64bitV2 = + 'AAAAAAAAAAAAYPUCAPj//wAA9QIA+P//AAAAAAAAAAAAAAAAAAAAAIAlxwEA+P//gCXHA' + + 'QD4//8AAAAAAAAAAAAAAAA='; + + const kThreadStartPayload32bitV3 = + 'LAIAACwTAAAAUJixACCYsQAA1QAAwNQAAwAAAOkDq3cA4P1/AAAAAAkFAgA='; + + const kThreadStartPayload64bitV3 = + 'eCEAAJQUAAAAMA4nAND//wDQDScA0P//MP0LBgAAAAAAgAsGAAAAAP8AAAAAAAAALP1YX' + + 'AAAAAAAwBL/AAAAAAAAAAAIBQIA'; + + const kThreadCSwitchPayload32bitV2 = 'AAAAACwRAAAACQAAFwABABIAAAAmSAAA'; + const kThreadCSwitchPayload64bitV2 = 'zAgAAAAAAAAIAAEAAAACBAEAAACHbYg0'; + + test('DecodeFields', function() { + const importer = new tr.e.importer.etw.EtwImporter('dummy', []); + const decoder = importer.decoder_; + const parser = new tr.e.importer.etw.ThreadParser(importer); + let header; + let fields; + + // Validate a version 1 32-bit payload. + header = { guid, opcode: kThreadStartOpcode, version: 1, is64: 0 }; + decoder.reset(kThreadStartPayload32bitV1); + fields = parser.decodeFields(header, decoder); + + assert.strictEqual(fields.processId, 4); + assert.strictEqual(fields.threadId, 1868); + assert.strictEqual(fields.stackBase, 4088881152); + assert.strictEqual(fields.stackLimit, 4088868864); + assert.strictEqual(fields.userStackBase, 0); + assert.strictEqual(fields.userStackLimit, 0); + assert.strictEqual(fields.startAddr, 4145994629); + assert.strictEqual(fields.win32StartAddr, 0); + assert.strictEqual(fields.waitMode, -1); + + // Validate an End version 1 32-bit payload. + header = { guid, opcode: kThreadEndOpcode, version: 1, is64: 0 }; + decoder.reset(kThreadStartPayload32bitV1); + fields = parser.decodeFields(header, decoder); + + assert.strictEqual(fields.processId, 4); + assert.strictEqual(fields.threadId, 1868); + + // Validate a version 2 64-bit payload. + header = { guid, opcode: kThreadDCStartOpcode, version: 2, is64: 1 }; + decoder.reset(kThreadDCStartPayload64bitV2); + fields = parser.decodeFields(header, decoder); + + assert.strictEqual(fields.processId, 0); + assert.strictEqual(fields.threadId, 0); + assert.strictEqual(fields.stackBase, 'fffff80002f56000'); + assert.strictEqual(fields.stackLimit, 'fffff80002f50000'); + assert.strictEqual(fields.userStackBase, '0000000000000000'); + assert.strictEqual(fields.userStackLimit, '0000000000000000'); + assert.strictEqual(fields.startAddr, 'fffff80001c72580'); + assert.strictEqual(fields.win32StartAddr, 'fffff80001c72580'); + assert.strictEqual(fields.tebBase, '0000000000000000'); + assert.strictEqual(fields.subProcessTag, 0); + + // Validate a version 3 32-bit payload. + header = { guid, opcode: kThreadStartOpcode, version: 3, is64: 0 }; + decoder.reset(kThreadStartPayload32bitV3); + fields = parser.decodeFields(header, decoder); + + assert.strictEqual(fields.processId, 556); + assert.strictEqual(fields.threadId, 4908); + assert.strictEqual(fields.stackBase, 2979549184); + assert.strictEqual(fields.stackLimit, 2979536896); + assert.strictEqual(fields.userStackBase, 13959168); + assert.strictEqual(fields.userStackLimit, 13942784); + assert.strictEqual(fields.affinity, 3); + assert.strictEqual(fields.win32StartAddr, 2007696361); + assert.strictEqual(fields.tebBase, 2147344384); + assert.strictEqual(fields.subProcessTag, 0); + assert.strictEqual(fields.basePriority, 9); + assert.strictEqual(fields.pagePriority, 5); + assert.strictEqual(fields.ioPriority, 2); + assert.strictEqual(fields.threadFlags, 0); + + // Validate a version 3 64-bit payload. + header = { guid, opcode: kThreadStartOpcode, version: 3, is64: 1 }; + decoder.reset(kThreadStartPayload64bitV3); + fields = parser.decodeFields(header, decoder); + + assert.strictEqual(fields.processId, 8568); + assert.strictEqual(fields.threadId, 5268); + assert.strictEqual(fields.stackBase, 'ffffd000270e3000'); + assert.strictEqual(fields.stackLimit, 'ffffd000270dd000'); + assert.strictEqual(fields.userStackBase, '00000000060bfd30'); + assert.strictEqual(fields.userStackLimit, '00000000060b8000'); + assert.strictEqual(fields.affinity, '00000000000000ff'); + assert.strictEqual(fields.win32StartAddr, '000000005c58fd2c'); + assert.strictEqual(fields.tebBase, '00000000ff12c000'); + assert.strictEqual(fields.subProcessTag, 0); + assert.strictEqual(fields.basePriority, 8); + assert.strictEqual(fields.pagePriority, 5); + assert.strictEqual(fields.ioPriority, 2); + assert.strictEqual(fields.threadFlags, 0); + }); + + test('DecodeCSwitchFields', function() { + const importer = new tr.e.importer.etw.EtwImporter('dummy', []); + const decoder = importer.decoder_; + const parser = new tr.e.importer.etw.ThreadParser(importer); + let header; + let fields; + + + // Validate a version 2 CSwitch 32-bit payload. + header = { guid, opcode: kThreadCSwitchOpcode, version: 2, is64: 0 }; + decoder.reset(kThreadCSwitchPayload32bitV2); + fields = parser.decodeCSwitchFields(header, decoder); + + assert.strictEqual(fields.newThreadId, 0); + assert.strictEqual(fields.oldThreadId, 4396); + assert.strictEqual(fields.newThreadPriority, 0); + assert.strictEqual(fields.oldThreadPriority, 9); + assert.strictEqual(fields.previousCState, 0); + assert.strictEqual(fields.spareByte, 0); + assert.strictEqual(fields.oldThreadWaitReason, 23); + assert.strictEqual(fields.oldThreadWaitMode, 0); + assert.strictEqual(fields.oldThreadState, 1); + assert.strictEqual(fields.oldThreadWaitIdealProcessor, 0); + assert.strictEqual(fields.newThreadWaitTime, 18); + assert.strictEqual(fields.reserved, 18470); + + // Validate a version 2 CSwitch 64-bit payload. + header = { guid, opcode: kThreadCSwitchOpcode, version: 2, is64: 1 }; + decoder.reset(kThreadCSwitchPayload64bitV2); + fields = parser.decodeCSwitchFields(header, decoder); + + assert.strictEqual(fields.newThreadId, 2252); + assert.strictEqual(fields.oldThreadId, 0); + assert.strictEqual(fields.newThreadPriority, 8); + assert.strictEqual(fields.oldThreadPriority, 0); + assert.strictEqual(fields.previousCState, 1); + assert.strictEqual(fields.spareByte, 0); + assert.strictEqual(fields.oldThreadWaitReason, 0); + assert.strictEqual(fields.oldThreadWaitMode, 0); + assert.strictEqual(fields.oldThreadState, 2); + assert.strictEqual(fields.oldThreadWaitIdealProcessor, 4); + assert.strictEqual(fields.newThreadWaitTime, 1); + assert.strictEqual(fields.reserved, 881356167); + }); +}); +</script> + |