OLD | NEW |
1 # Copyright 2017 The Chromium Authors. All rights reserved. | 1 # Copyright 2017 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import json | 5 import json |
6 import math | 6 import math |
7 import time | 7 import time |
8 import unittest | 8 import unittest |
9 | 9 |
10 from tracing.value import histogram | 10 from tracing.value import histogram |
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 clone = diagnostic.Diagnostic.FromDict(d) | 648 clone = diagnostic.Diagnostic.FromDict(d) |
649 self.assertEqual(ToJSON(d), ToJSON(clone.AsDict())) | 649 self.assertEqual(ToJSON(d), ToJSON(clone.AsDict())) |
650 self.assertEqual(len(events), 1) | 650 self.assertEqual(len(events), 1) |
651 event = list(events)[0] | 651 event = list(events)[0] |
652 self.assertEqual(event['stableId'], '0.0') | 652 self.assertEqual(event['stableId'], '0.0') |
653 self.assertEqual(event['title'], 'foo') | 653 self.assertEqual(event['title'], 'foo') |
654 self.assertEqual(event['start'], 0) | 654 self.assertEqual(event['start'], 0) |
655 self.assertEqual(event['duration'], 1) | 655 self.assertEqual(event['duration'], 1) |
656 | 656 |
657 | 657 |
658 class RelatedHistogramBreakdownUnittest(unittest.TestCase): | |
659 def testRoundtrip(self): | |
660 breakdown = histogram.RelatedHistogramBreakdown() | |
661 hista = histogram.Histogram('a', 'unitless') | |
662 histb = histogram.Histogram('b', 'unitless') | |
663 breakdown.Add(hista) | |
664 breakdown.Add(histb) | |
665 d = breakdown.AsDict() | |
666 clone = diagnostic.Diagnostic.FromDict(d) | |
667 self.assertEqual(ToJSON(d), ToJSON(clone.AsDict())) | |
668 self.assertEqual(hista.guid, clone.Get('a').guid) | |
669 self.assertEqual(histb.guid, clone.Get('b').guid) | |
670 | |
671 | |
672 class DateRangeUnittest(unittest.TestCase): | 658 class DateRangeUnittest(unittest.TestCase): |
673 def testRoundtrip(self): | 659 def testRoundtrip(self): |
674 dr = histogram.DateRange(1496693745000) | 660 dr = histogram.DateRange(1496693745000) |
675 dr.AddDiagnostic(histogram.DateRange(1496693746000)) | 661 dr.AddDiagnostic(histogram.DateRange(1496693746000)) |
676 self.assertEqual(time.mktime(dr.min_date.timetuple()), 1496693745) | 662 self.assertEqual(time.mktime(dr.min_date.timetuple()), 1496693745) |
677 self.assertEqual(time.mktime(dr.max_date.timetuple()), 1496693746) | 663 self.assertEqual(time.mktime(dr.max_date.timetuple()), 1496693746) |
678 clone = diagnostic.Diagnostic.FromDict(dr.AsDict()) | 664 clone = diagnostic.Diagnostic.FromDict(dr.AsDict()) |
679 self.assertEqual(clone.min_date, dr.min_date) | 665 self.assertEqual(clone.min_date, dr.min_date) |
680 self.assertEqual(clone.max_date, dr.max_date) | 666 self.assertEqual(clone.max_date, dr.max_date) |
681 | 667 |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
810 def testMerge(self): | 796 def testMerge(self): |
811 events = histogram.RelatedEventSet() | 797 events = histogram.RelatedEventSet() |
812 events.Add({ | 798 events.Add({ |
813 'stableId': '0.0', | 799 'stableId': '0.0', |
814 'title': 'foo', | 800 'title': 'foo', |
815 'start': 0, | 801 'start': 0, |
816 'duration': 1, | 802 'duration': 1, |
817 }) | 803 }) |
818 generic = histogram.GenericSet(['generic diagnostic']) | 804 generic = histogram.GenericSet(['generic diagnostic']) |
819 generic2 = histogram.GenericSet(['generic diagnostic 2']) | 805 generic2 = histogram.GenericSet(['generic diagnostic 2']) |
820 related_map = histogram.RelatedHistogramMap() | 806 date_range = histogram.DateRange(15e11) |
821 related_map.Set('a', histogram.Histogram('histogram', 'count')) | |
822 | 807 |
823 hist = histogram.Histogram('', 'count') | 808 hist = histogram.Histogram('', 'count') |
824 | 809 |
825 # When Histograms are merged, first an empty clone is created with an empty | 810 # When Histograms are merged, first an empty clone is created with an empty |
826 # DiagnosticMap. | 811 # DiagnosticMap. |
827 hist2 = histogram.Histogram('', 'count') | 812 hist2 = histogram.Histogram('', 'count') |
828 hist2.diagnostics['a'] = generic | 813 hist2.diagnostics['a'] = generic |
829 hist.diagnostics.Merge(hist2.diagnostics, hist, hist2) | 814 hist.diagnostics.Merge(hist2.diagnostics, hist, hist2) |
830 self.assertIs(generic, hist.diagnostics['a']) | 815 self.assertIs(generic, hist.diagnostics['a']) |
831 | 816 |
832 # Separate keys are not merged. | 817 # Separate keys are not merged. |
833 hist3 = histogram.Histogram('', 'count') | 818 hist3 = histogram.Histogram('', 'count') |
834 hist3.diagnostics['b'] = generic2 | 819 hist3.diagnostics['b'] = generic2 |
835 hist.diagnostics.Merge(hist3.diagnostics, hist, hist3) | 820 hist.diagnostics.Merge(hist3.diagnostics, hist, hist3) |
836 self.assertIs(generic, hist.diagnostics['a']) | 821 self.assertIs(generic, hist.diagnostics['a']) |
837 self.assertIs(generic2, hist.diagnostics['b']) | 822 self.assertIs(generic2, hist.diagnostics['b']) |
838 | 823 |
839 # Merging unmergeable diagnostics should produce an | 824 # Merging unmergeable diagnostics should produce an |
840 # UnmergeableDiagnosticSet. | 825 # UnmergeableDiagnosticSet. |
841 hist4 = histogram.Histogram('', 'count') | 826 hist4 = histogram.Histogram('', 'count') |
842 hist4.diagnostics['a'] = related_map | 827 hist4.diagnostics['a'] = date_range |
843 hist.diagnostics.Merge(hist4.diagnostics, hist, hist4) | 828 hist.diagnostics.Merge(hist4.diagnostics, hist, hist4) |
844 self.assertIsInstance( | 829 self.assertIsInstance( |
845 hist.diagnostics['a'], histogram.UnmergeableDiagnosticSet) | 830 hist.diagnostics['a'], histogram.UnmergeableDiagnosticSet) |
846 diagnostics = list(hist.diagnostics['a']) | 831 diagnostics = list(hist.diagnostics['a']) |
847 self.assertIs(generic, diagnostics[0]) | 832 self.assertIs(generic, diagnostics[0]) |
848 self.assertIs(related_map, diagnostics[1]) | 833 self.assertIs(date_range, diagnostics[1]) |
849 | 834 |
850 # UnmergeableDiagnosticSets are mergeable. | 835 # UnmergeableDiagnosticSets are mergeable. |
851 hist5 = histogram.Histogram('', 'count') | 836 hist5 = histogram.Histogram('', 'count') |
852 hist5.diagnostics['a'] = histogram.UnmergeableDiagnosticSet( | 837 hist5.diagnostics['a'] = histogram.UnmergeableDiagnosticSet( |
853 [events, generic2]) | 838 [events, generic2]) |
854 hist.diagnostics.Merge(hist5.diagnostics, hist, hist5) | 839 hist.diagnostics.Merge(hist5.diagnostics, hist, hist5) |
855 self.assertIsInstance( | 840 self.assertIsInstance( |
856 hist.diagnostics['a'], histogram.UnmergeableDiagnosticSet) | 841 hist.diagnostics['a'], histogram.UnmergeableDiagnosticSet) |
857 diagnostics = list(hist.diagnostics['a']) | 842 diagnostics = list(hist.diagnostics['a']) |
858 self.assertIs(generic, diagnostics[0]) | 843 self.assertIs(generic, diagnostics[0]) |
859 self.assertIs(related_map, diagnostics[1]) | 844 self.assertIs(date_range, diagnostics[1]) |
860 self.assertIs(events, diagnostics[2]) | 845 self.assertIs(events, diagnostics[2]) |
861 self.assertIs(generic2, diagnostics[3]) | 846 self.assertIs(generic2, diagnostics[3]) |
OLD | NEW |