166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved.
266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be
366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file.
466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict';
666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model');
866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model_settings');
966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.trace_model_settings', function() {
1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('process_name_uniqueness_0', function() {
1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.hasUniqueSettingKey(p1));
1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('process_name_uniqueness_1', function() {
2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Browser';
2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.hasUniqueSettingKey(p1));
2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('process_name_uniqueness_2', function() {
2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p2 = model.getOrCreateProcess(2);
3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Renderer';
3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.hasUniqueSettingKey(p1));
3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.hasUniqueSettingKey(p2));
3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('process_name_uniqueness_3', function() {
3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p2 = model.getOrCreateProcess(2);
4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Renderer';
4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.labels.push('Google Search');
4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.hasUniqueSettingKey(p1));
4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.hasUniqueSettingKey(p2));
4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('thread_name_uniqueness_0', function() {
5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p2 = model.getOrCreateProcess(2);
5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t1 = p1.getOrCreateThread(1);
5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t2 = p2.getOrCreateThread(2);
5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Browser';
5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1.name = 'Main';
5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2.name = 'Main';
6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.hasUniqueSettingKey(t1));
6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.hasUniqueSettingKey(t2));
6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('thread_name_uniqueness_1', function() {
6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p2 = model.getOrCreateProcess(2);
6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t1 = p1.getOrCreateThread(1);
7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t2 = p2.getOrCreateThread(2);
7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Renderer';
7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1.name = 'Main';
7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2.name = 'Main';
7566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.hasUniqueSettingKey(t1));
7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.hasUniqueSettingKey(t2));
7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
7966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
8066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('process_persistence_when_not_unique', function() {
8166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
8266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
8366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
8466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.getSettingFor(p1, 'true_by_default', true));
8566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
8666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings.setSettingFor(p1, 'true_by_default', false);
8766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.getSettingFor(p1, 'true_by_default', true));
8866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
8966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    // Now, clobber the model, and verify that it didn't persist.
9066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    model = new tracing.TraceModel();
9166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1 = model.getOrCreateProcess(1);
9266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings = new tracing.TraceModelSettings(model);
9366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.getSettingFor(p1, 'true_by_default', true));
9466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
9566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
9666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('process_persistence_when_not_unique_with_name', function() {
9766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
9866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
9966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Browser';
10066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
10166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.getSettingFor(p1, 'true_by_default', true));
10266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
10366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings.setSettingFor(p1, 'true_by_default', false);
10466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.getSettingFor(p1, 'true_by_default', true));
10566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
10666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    // Now, clobber the model, and verify that it persisted.
10766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    model = new tracing.TraceModel();
10866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1 = model.getOrCreateProcess(1);
10966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Browser';
11066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings = new tracing.TraceModelSettings(model);
11166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.getSettingFor(p1, 'true_by_default', true));
11266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
11366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
11466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('thread_persistence_when_not_unique', function() {
11566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
11666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
11766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p2 = model.getOrCreateProcess(2);
11866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t1 = p1.getOrCreateThread(1);
11966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t2 = p2.getOrCreateThread(2);
12066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Renderer';
12166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
12266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1.name = 'Main';
12366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2.name = 'Main';
12466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
12566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.getSettingFor(t1, 'true_by_default', true));
12666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
12766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings.setSettingFor(t1, 'true_by_default', false);
12866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.getSettingFor(t1, 'true_by_default', true));
12966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
13066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    // Now, clobber the model, and verify that it persisted.
13166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    model = new tracing.TraceModel();
13266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1 = model.getOrCreateProcess(1);
13366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2 = model.getOrCreateProcess(2);
13466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1 = p1.getOrCreateThread(1);
13566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2 = p2.getOrCreateThread(2);
13666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Renderer';
13766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
13866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1.name = 'Main';
13966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2.name = 'Main';
14066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings = new tracing.TraceModelSettings(model);
14166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.getSettingFor(t1, 'true_by_default', true));
14266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
14366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
14466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('thread_persistence_when_unique', function() {
14566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var model = new tracing.TraceModel();
14666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p1 = model.getOrCreateProcess(1);
14766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var p2 = model.getOrCreateProcess(2);
14866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t1 = p1.getOrCreateThread(1);
14966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var t2 = p2.getOrCreateThread(2);
15066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Browser';
15166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
15266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1.name = 'Main';
15366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2.name = 'Main';
15466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var settings = new tracing.TraceModelSettings(model);
15566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertTrue(settings.getSettingFor(t1, 'true_by_default', true));
15666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
15766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings.setSettingFor(t1, 'true_by_default', false);
15866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.getSettingFor(t1, 'true_by_default', true));
15966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
16066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    // Now, clobber the model, and verify that it persisted.
16166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    model = new tracing.TraceModel();
16266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1 = model.getOrCreateProcess(1);
16366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2 = model.getOrCreateProcess(2);
16466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1 = p1.getOrCreateThread(1);
16566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2 = p2.getOrCreateThread(2);
16666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p1.name = 'Browser';
16766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    p2.name = 'Renderer';
16866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t1.name = 'Main';
16966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    t2.name = 'Main';
17066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    settings = new tracing.TraceModelSettings(model);
17166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    assertFalse(settings.getSettingFor(t1, 'true_by_default', true));
17266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
17366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
17466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis});
175