// Copyright (c) 2013 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. 'use strict'; base.require('tracing.trace_model'); base.require('tracing.trace_model_settings'); base.unittest.testSuite('tracing.trace_model_settings', function() { test('process_name_uniqueness_0', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var settings = new tracing.TraceModelSettings(model); assertFalse(settings.hasUniqueSettingKey(p1)); }); test('process_name_uniqueness_1', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); p1.name = 'Browser'; var settings = new tracing.TraceModelSettings(model); assertTrue(settings.hasUniqueSettingKey(p1)); }); test('process_name_uniqueness_2', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var p2 = model.getOrCreateProcess(2); p1.name = 'Renderer'; p2.name = 'Renderer'; var settings = new tracing.TraceModelSettings(model); assertFalse(settings.hasUniqueSettingKey(p1)); assertFalse(settings.hasUniqueSettingKey(p2)); }); test('process_name_uniqueness_3', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var p2 = model.getOrCreateProcess(2); p1.name = 'Renderer'; p1.labels.push('Google Search'); p2.name = 'Renderer'; var settings = new tracing.TraceModelSettings(model); assertTrue(settings.hasUniqueSettingKey(p1)); assertTrue(settings.hasUniqueSettingKey(p2)); }); test('thread_name_uniqueness_0', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var p2 = model.getOrCreateProcess(2); var t1 = p1.getOrCreateThread(1); var t2 = p2.getOrCreateThread(2); p1.name = 'Browser'; p2.name = 'Renderer'; t1.name = 'Main'; t2.name = 'Main'; var settings = new tracing.TraceModelSettings(model); assertTrue(settings.hasUniqueSettingKey(t1)); assertTrue(settings.hasUniqueSettingKey(t2)); }); test('thread_name_uniqueness_1', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var p2 = model.getOrCreateProcess(2); var t1 = p1.getOrCreateThread(1); var t2 = p2.getOrCreateThread(2); p1.name = 'Renderer'; p2.name = 'Renderer'; t1.name = 'Main'; t2.name = 'Main'; var settings = new tracing.TraceModelSettings(model); assertFalse(settings.hasUniqueSettingKey(t1)); assertFalse(settings.hasUniqueSettingKey(t2)); }); test('process_persistence_when_not_unique', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var settings = new tracing.TraceModelSettings(model); assertTrue(settings.getSettingFor(p1, 'true_by_default', true)); settings.setSettingFor(p1, 'true_by_default', false); assertFalse(settings.getSettingFor(p1, 'true_by_default', true)); // Now, clobber the model, and verify that it didn't persist. model = new tracing.TraceModel(); p1 = model.getOrCreateProcess(1); settings = new tracing.TraceModelSettings(model); assertTrue(settings.getSettingFor(p1, 'true_by_default', true)); }); test('process_persistence_when_not_unique_with_name', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); p1.name = 'Browser'; var settings = new tracing.TraceModelSettings(model); assertTrue(settings.getSettingFor(p1, 'true_by_default', true)); settings.setSettingFor(p1, 'true_by_default', false); assertFalse(settings.getSettingFor(p1, 'true_by_default', true)); // Now, clobber the model, and verify that it persisted. model = new tracing.TraceModel(); p1 = model.getOrCreateProcess(1); p1.name = 'Browser'; settings = new tracing.TraceModelSettings(model); assertFalse(settings.getSettingFor(p1, 'true_by_default', true)); }); test('thread_persistence_when_not_unique', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var p2 = model.getOrCreateProcess(2); var t1 = p1.getOrCreateThread(1); var t2 = p2.getOrCreateThread(2); p1.name = 'Renderer'; p2.name = 'Renderer'; t1.name = 'Main'; t2.name = 'Main'; var settings = new tracing.TraceModelSettings(model); assertTrue(settings.getSettingFor(t1, 'true_by_default', true)); settings.setSettingFor(t1, 'true_by_default', false); assertFalse(settings.getSettingFor(t1, 'true_by_default', true)); // Now, clobber the model, and verify that it persisted. model = new tracing.TraceModel(); p1 = model.getOrCreateProcess(1); p2 = model.getOrCreateProcess(2); t1 = p1.getOrCreateThread(1); t2 = p2.getOrCreateThread(2); p1.name = 'Renderer'; p2.name = 'Renderer'; t1.name = 'Main'; t2.name = 'Main'; settings = new tracing.TraceModelSettings(model); assertTrue(settings.getSettingFor(t1, 'true_by_default', true)); }); test('thread_persistence_when_unique', function() { var model = new tracing.TraceModel(); var p1 = model.getOrCreateProcess(1); var p2 = model.getOrCreateProcess(2); var t1 = p1.getOrCreateThread(1); var t2 = p2.getOrCreateThread(2); p1.name = 'Browser'; p2.name = 'Renderer'; t1.name = 'Main'; t2.name = 'Main'; var settings = new tracing.TraceModelSettings(model); assertTrue(settings.getSettingFor(t1, 'true_by_default', true)); settings.setSettingFor(t1, 'true_by_default', false); assertFalse(settings.getSettingFor(t1, 'true_by_default', true)); // Now, clobber the model, and verify that it persisted. model = new tracing.TraceModel(); p1 = model.getOrCreateProcess(1); p2 = model.getOrCreateProcess(2); t1 = p1.getOrCreateThread(1); t2 = p2.getOrCreateThread(2); p1.name = 'Browser'; p2.name = 'Renderer'; t1.name = 'Main'; t2.name = 'Main'; settings = new tracing.TraceModelSettings(model); assertFalse(settings.getSettingFor(t1, 'true_by_default', true)); }); });