Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Unified Diff: tracing/tracing/extras/importer/streaming_event_expander_test.html

Issue 2635023002: [tracing] Support new heap dump format (Closed)
Patch Set: remove it again Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tracing/tracing/extras/importer/streaming_event_expander_test.html
diff --git a/tracing/tracing/extras/importer/streaming_event_expander_test.html b/tracing/tracing/extras/importer/streaming_event_expander_test.html
new file mode 100644
index 0000000000000000000000000000000000000000..111b9ee7987de6677502caf60d993199bdcdfdff
--- /dev/null
+++ b/tracing/tracing/extras/importer/streaming_event_expander_test.html
@@ -0,0 +1,251 @@
+<!DOCTYPE html>
+<!--
+Copyright 2017 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/streaming_event_expander.html">
+
+<script>
+'use strict';
+
+tr.b.unittest.testSuite(function() {
+ function makeEvent(json) {
+ return {
+ args: {
+ data: addVersion(json),
+ },
+ };
+ }
+
+ function addVersion(json) {
+ json['version'] = '1';
+ return json;
+ }
+
+ test('singularize', function() {
+ assert.strictEqual('name', tr.e.importer.singularize('names'));
+ assert.strictEqual('aircraft', tr.e.importer.singularize('aircraft'));
+ });
+
+ test('missing_version_key_errors', function() {
+ var data = {};
+ var expander = new tr.e.importer.StreamingEventExpander();
+ assert.throws(() => expander.expandData(data));
+ });
+
+ test('missing_map_ids_error', function() {
+ var data = addVersion({
+ maps: {
+ price: [
+ { 'i_dont_have_an_id_key': 100 },
+ ],
+ },
+ });
+ var expander = new tr.e.importer.StreamingEventExpander();
+ assert.throws(() => expander.expandData(data));
+ });
+
+ test('empty_method_makes_an_empty_expander', function() {
+ var expander = tr.e.importer.StreamingEventExpander.empty();
+ assert.equal(expander.metadata.size, 0);
+ assert.equal(expander.maps.size, 0);
+ assert.equal(expander.groups.size, 0);
+ });
+
+
+ test('single_event_with_single_group_and_single_row', function() {
+ var data = addVersion({
+ allocators: {
+ books: {
+ pages: [10, 20, 30],
+ },
+ },
+ });
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(data);
+ assert.deepEqual(expander2.raw.books, [
+ { pages: 10 },
+ { pages: 20 },
+ { pages: 30 },
+ ]);
+ });
+
+ test('can_take_event', function() {
+ var data = addVersion({
+ allocators: {
+ books: {
+ pages: [10, 20, 30],
+ },
+ },
+ });
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandEvent(makeEvent(data));
+ assert.deepEqual(expander2.raw.books, [
+ { pages: 10 },
+ { pages: 20 },
+ { pages: 30 },
+ ]);
+ });
+
+ test('handles_events', function() {
+ var data = addVersion({
+ allocators: {
+ books: {
+ pages: [10, 20, 30],
+ },
+ },
+ });
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandEvent(makeEvent(data));
+ assert.deepEqual(expander2.raw.books, [
+ { pages: 10 },
+ { pages: 20 },
+ { pages: 30 },
+ ]);
+ });
+
+ test('handles_extra_metadata', function() {
+ var data = addVersion({
+ myStringMetadata: '1',
+ myNumberMetadata: 2,
+ myArrayMetadata: [3],
+ });
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(data);
+ assert.deepEqual(expander2.metadata.get('myStringMetadata'), '1');
+ assert.deepEqual(expander2.metadata.get('myNumberMetadata'), 2);
+ assert.deepEqual(expander2.metadata.get('myArrayMetadata'), [3]);
+ });
+
+ test('single_event_with_multiple_groups_and_multiple_rows', function() {
+ var data = addVersion({
+ allocators: {
+ books: {
+ pages: [10, 20, 30],
+ wordCount: [100, 200, 300],
+ },
+ magazines: {
+ pages: [5, 10, 15],
+ wordCount: [50, 100, 150],
+ },
+ },
+ });
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(data);
+ assert.deepEqual(expander2.raw.books, [
+ { pages: 10, wordCount: 100 },
+ { pages: 20, wordCount: 200 },
+ { pages: 30, wordCount: 300 },
+ ]);
+ assert.deepEqual(expander2.raw.magazines, [
+ { pages: 5, wordCount: 50 },
+ { pages: 10, wordCount: 100 },
+ { pages: 15, wordCount: 150 },
+ ]);
+ });
+
+ test('multiple_events', function() {
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(addVersion({
+ maps: {
+ isbn: [{ id: 0, isbn: 'aaa' }],
+ },
+ }));
+ var expander3 = expander2.expandData(addVersion({
+ maps: {
+ isbn: [{ id: 1, isbn: 'bbb' }],
+ },
+ }));
+ assert.deepEqual(expander2.getMapValue('isbn', 0), { id: 0, isbn: 'aaa' });
+ assert.deepEqual(expander2.getMapValue('isbn', 1), undefined);
+ assert.deepEqual(expander3.getMapValue('isbn', 0), { id: 0, isbn: 'aaa' });
+ assert.deepEqual(expander3.getMapValue('isbn', 1), { id: 1, isbn: 'bbb' });
+ });
+
+ test('has_map', function() {
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(addVersion({
+ maps: {
+ a: [{ id: 0, name: 'aaa' }],
+ },
+ }));
+ var expander3 = expander2.expandData(addVersion({
+ maps: {
+ b: [{ id: 1, name: 'bbb' }],
+ },
+ }));
+ assert.isTrue(expander3.hasMap('a'));
+ assert.isTrue(expander3.hasMap('b'));
+ assert.isFalse(expander3.hasMap('c'));
+ });
+
+ test('can_handle_start_time', function() {
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(addVersion({
+ startTime: 100,
+ allocators: {
+ sales: {
+ timeDelta: [1, 1, 10, 10],
+ price: [1, 2, 3, 4],
+ },
+ },
+ }));
+ assert.deepEqual(expander2.raw.sales, [
+ { time: 101, timeDelta: 1, price: 1 },
+ { time: 102, timeDelta: 1, price: 2 },
+ { time: 112, timeDelta: 10, price: 3 },
+ { time: 122, timeDelta: 10, price: 4 },
+ ]);
+ });
+
+ test('can_handle_time_deltas', function() {
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(addVersion({
+ startTime: 100,
+ allocators: {
+ sales: {
+ price: [1, 2, 3, 4],
+ },
+ },
+ }));
+ assert.deepEqual(expander2.raw.sales, [
+ { time: 100, price: 1 },
+ { time: 100, price: 2 },
+ { time: 100, price: 3 },
+ { time: 100, price: 4 },
+ ]);
+ });
+
+ test('can_inflate', function() {
+ var expander1 = new tr.e.importer.StreamingEventExpander();
+ var expander2 = expander1.expandData(addVersion({
+ allocators: {
+ books: {
+ authors: [1, 1, 2, 3],
+ isbn: [100, 101, 102, 103],
+ },
+ },
+ maps: {
+ authors: [
+ { id: 1, name_sid: 1 },
+ { id: 2, name_sid: 1 },
+ { id: 3, name_sid: 2 },
+ ],
+ strings: [
+ { id: 1, string: 'DFW' },
+ { id: 2, string: 'C. Stross' },
+ ],
+ },
+ }));
+
+ assert.strictEqual(expander2.getMapValue('strings', 1).string, 'DFW');
+ assert.strictEqual(expander2.getString(2), 'C. Stross');
+ assert.strictEqual(expander2.inflated.books[0].author.name, 'DFW');
+ assert.strictEqual(expander2.inflated.books[0].isbn, 100);
+ });
+});
+</script>
+

Powered by Google App Engine
This is Rietveld 408576698