| <!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/core/test_utils.html"> |
| <link rel="import" href="/tracing/metrics/metric_registry.html"> |
| <link rel="import" href="/tracing/value/histogram.html"> |
| |
| <script> |
| 'use strict'; |
| |
| tr.b.unittest.testSuite(function() { |
| test('FindMetricByName', function() { |
| function sampleMetricA(values, model) { |
| var n1 = new tr.v.Histogram('foo', tr.b.Unit.byName.count); |
| n1.addSample(1); |
| values.addHistogram(n1); |
| } |
| tr.metrics.MetricRegistry.register(sampleMetricA); |
| |
| function sampleMetricB(values, model) { |
| var n1 = new tr.v.Histogram('foo', tr.b.Unit.byName.count); |
| var n2 = new tr.v.Histogram('bar', tr.b.Unit.byName.count); |
| n1.addSample(1); |
| n2.addSample(2); |
| values.addHistogram(n1); |
| values.addHistogram(n2); |
| } |
| tr.metrics.MetricRegistry.register(sampleMetricB); |
| |
| function sampleMetricC(values, model) { |
| var n1 = new tr.v.Histogram('foo', tr.b.Unit.byName.count); |
| var n2 = new tr.v.Histogram('bar', tr.b.Unit.byName.count); |
| var n3 = new tr.v.Histogram('baz', tr.b.Unit.byName.count); |
| n1.addSample(1); |
| n2.addSample(2); |
| n3.addSample(3); |
| values.addHistogram(n1); |
| values.addHistogram(n2); |
| values.addHistogram(n3); |
| } |
| tr.metrics.MetricRegistry.register(sampleMetricC); |
| |
| var typeInfo = tr.metrics.MetricRegistry.findTypeInfoWithName( |
| 'sampleMetricB'); |
| assert.strictEqual(typeInfo.constructor, sampleMetricB); |
| }); |
| |
| test('registerNonFunctionThrows', function() { |
| assert.throws(function() { |
| tr.metrics.MetricRegistry.register('not a function'); |
| }); |
| |
| assert.throws(function() { |
| tr.metrics.MetricRegistry.register(function() {}); |
| }); |
| |
| assert.throws(function() { |
| tr.metrics.MetricRegistry.register(function(a) {}); |
| }); |
| }); |
| }); |
| </script> |