<!DOCTYPE html>
<!--
Copyright 2016 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/model/clock_sync_manager.html">

<script>
'use strict';

tr.b.unittest.testSuite(function() {

  var ClockDomainId = tr.model.ClockDomainId;
  var ClockSyncManager = tr.model.ClockSyncManager;

  var testOptions = {
    setUp: function() {
      // Add a few testing clock domains to the list of permissible domains.
      ClockDomainId.DOMAIN_1 = 'domain1';
      ClockDomainId.DOMAIN_2 = 'domain2';
      ClockDomainId.DOMAIN_3 = 'domain3';
      ClockDomainId.DOMAIN_4 = 'domain4';
      ClockDomainId.DOMAIN_5 = 'domain5';
    },

    tearDown: function() {
      delete ClockDomainId.DOMAIN_1;
      delete ClockDomainId.DOMAIN_2;
      delete ClockDomainId.DOMAIN_3;
      delete ClockDomainId.DOMAIN_4;
      delete ClockDomainId.DOMAIN_5;
    }
  };

  test('addClockSyncMarker_throwsWithUnknownClockDomain', function() {
    var mgr = new ClockSyncManager();

    assert.throws(function() {
      mgr.addClockSyncMarker('unknown', 'sync1', 100, 200);
    }, '"unknown" is not in the list of known clock domain IDs.');
  }, testOptions);


  test('addClockSyncMarker_throwsWhenSelfSyncing', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100, 200);

    assert.throws(function() {
      mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 200, 300);
    }, 'A clock domain cannot sync with itself.');
  }, testOptions);

  test('addClockSyncMarker_throwsWhenAddingThirdSyncMarkerToSync', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 100);

    assert.throws(function() {
      mgr.addClockSyncMarker(ClockDomainId.DOMAIN_3, 'sync1', 100);
    }, 'Clock sync with ID "sync1" is already complete - cannot add a third ' +
        'clock sync marker to it.');
  }, testOptions);

  test('addClockSyncMarker_throwsWhenAddingDuplicateConnectors', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 100);

    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync2', 100);

    assert.throws(function() {
      mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync2', 100);
    }, 'Cannot add multiple connectors between the same clock domains.');
  }, testOptions);

  test('addClockSyncMarker_throwsAfterGetModelTimeTransformer', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 100);

    mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_1);

    assert.throws(function() {
      mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync2', 100);
    }, 'Cannot add new clock sync markers after getting a model time ' +
        'transformer.');
  }, testOptions);

  test('getModelTimeTransformer_oneIncompleteSync', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);

    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_1)(100), 100);
  }, testOptions);

  test('getModelTimeTransformer_oneCompleteSync', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 350);

    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_2)(350), 100);
    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_1)(100), 100);
  }, testOptions);

  test('getModelTimeTransformer_twoCompleteSyncs', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 350);

    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync2', 200);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_3, 'sync2', 250);

    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_2)(350), 100);
    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_1)(100), 100);
    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_3)(250), 200);
  }, testOptions);

  test('getModelTimeTransformer_twoSyncMarkersWithEndTs', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100, 200);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 350);

    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_2)(350), 150);
    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_1)(150), 150);
  }, testOptions);

  test('getModelTimeTransformer_battorSyncUsesChromeStartTs_battorMaster',
      function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.CHROME, 'sync1', 100, 200);
    mgr.addClockSyncMarker(ClockDomainId.BATTOR, 'sync1', 350);

    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.CHROME)(100),
        350);
  }, testOptions);

  test('getModelTimeTransformer_battorSyncUsesChromeStartTs_chromeMaster',
      function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.CHROME, 'sync1', 100, 200);
    mgr.addClockSyncMarker(ClockDomainId.BATTOR, 'sync1', 350);

    // We have to add another clock domain attached to chrome to guarantee
    // that the manager chooses chrome as the master clock domain and not
    // battor, which it would usually select because battor comes first
    // alphabetically and they'd both be connected to one other domain.
    mgr.addClockSyncMarker(ClockDomainId.CHROME, 'sync2', 0, 50);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync2', 0);

    assert.strictEqual(
        mgr.getModelTimeTransformer(ClockDomainId.BATTOR)(350),
        100);
  }, testOptions);

  test('getModelTimeTransformer_throwsWithNoAgentMarker', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);

    assert.throws(function() {
      mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_2);
    }, 'No clock sync markers exist pairing clock domain "domain2" with model' +
        ' clock domain "domain1".');
  }, testOptions);

  test('getModelTimeTransformer_throwsWithTwoDistinctGraphs', function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 100);

    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync2', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_3, 'sync2', 100);

    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_4, 'sync3', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_5, 'sync3', 100);

    assert.throws(function() {
      mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_5);
    }, 'Unable to select a master clock domain because no clock domain is ' +
        'directly connected to all others.');
  }, testOptions);

  test('getModelTimeTransformer_throwsWithIndirectlyConnectedGraph',
      function() {
    var mgr = new ClockSyncManager();
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_1, 'sync1', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync1', 100);

    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_2, 'sync2', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_3, 'sync2', 100);

    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_3, 'sync3', 100);
    mgr.addClockSyncMarker(ClockDomainId.DOMAIN_4, 'sync3', 100);

    assert.throws(function() {
      mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_1);
    }, 'Unable to select a master clock domain because no clock domain is ' +
        'directly connected to all others.');
  }, testOptions);

  test('getModelTimeTransformer_throwsWithNoClockSyncMarkers', function() {
    var mgr = new ClockSyncManager();

    assert.throws(function() {
      mgr.getModelTimeTransformer(ClockDomainId.DOMAIN_1);
    }, 'Unable to select a master clock domain because no clock domain is ' +
        'directly connected to all others.');
  }, testOptions);
});
</script>
