def testSerialize(self): hist = histogram.Histogram('aaa', 'count_biggerIsBetter') hist.description = 'lorem ipsum' hist.diagnostics['bbb'] = related_name_map.RelatedNameMap({ 'ccc': 'a:c', 'ddd': 'a:d', }) hist.diagnostics['hhh'] = generic_set.GenericSet(['ggg']) hist.AddSample(0, { 'bbb': breakdown.Breakdown.FromEntries({ 'ccc': 11, 'ddd': 31, }), 'eee': related_event_set.RelatedEventSet([{ 'stableId': 'fff', 'title': 'ggg', 'start': 3, 'duration': 4, }]), }) data = histogram_serializer.Serialize([hist]) self.assertEqual(data, [ [ 'aaa', [1, [1, 1000.0, 20]], '', 'ccc', 'ddd', [3, 4], 'ggg', 'avg', 'count', 'max', 'min', 'std', 'sum', 'lorem ipsum', 'a:c', 'a:d', ], { 'Breakdown': {'bbb': {5: [2, 5, 11, 31]}}, 'GenericSet': { 'hhh': {0: 6}, 'statisticsNames': {1: [7, 8, 9, 10, 11, 12]}, 'description': {3: 13}, }, 'RelatedEventSet': {'eee': {4: [['fff', 6, 3, 4]]}}, 'RelatedNameMap': {'bbb': {2: [5, 14, 15]}}, }, [ 0, 'count+', 1, [0, 1, 2, 3], [1, 0, None, 0, 0, 0, 0], {0: [1, [None, 4, 5]]}, 0, ] ])
def testMerge(self): events = related_event_set.RelatedEventSet() events.Add({ 'stableId': '0.0', 'title': 'foo', 'start': 0, 'duration': 1, }) generic = generic_set.GenericSet(['generic diagnostic']) generic2 = generic_set.GenericSet(['generic diagnostic 2']) related_map = histogram.RelatedHistogramMap() related_map.Set('a', histogram.Histogram('histogram', 'count')) hist = histogram.Histogram('', 'count') # When Histograms are merged, first an empty clone is created with an empty # DiagnosticMap. hist2 = histogram.Histogram('', 'count') hist2.diagnostics['a'] = generic hist.diagnostics.Merge(hist2.diagnostics) self.assertIs(generic, hist.diagnostics['a']) # Separate keys are not merged. hist3 = histogram.Histogram('', 'count') hist3.diagnostics['b'] = generic2 hist.diagnostics.Merge(hist3.diagnostics) self.assertIs(generic, hist.diagnostics['a']) self.assertIs(generic2, hist.diagnostics['b']) # Merging unmergeable diagnostics should produce an # UnmergeableDiagnosticSet. hist4 = histogram.Histogram('', 'count') hist4.diagnostics['a'] = related_map hist.diagnostics.Merge(hist4.diagnostics) self.assertIsInstance(hist.diagnostics['a'], ums.UnmergeableDiagnosticSet) diagnostics = list(hist.diagnostics['a']) self.assertIs(generic, diagnostics[0]) self.assertIs(related_map, diagnostics[1]) # UnmergeableDiagnosticSets are mergeable. hist5 = histogram.Histogram('', 'count') hist5.diagnostics['a'] = ums.UnmergeableDiagnosticSet( [events, generic2]) hist.diagnostics.Merge(hist5.diagnostics) self.assertIsInstance(hist.diagnostics['a'], ums.UnmergeableDiagnosticSet) diagnostics = list(hist.diagnostics['a']) self.assertIs(generic, diagnostics[0]) self.assertIs(related_map, diagnostics[1]) self.assertIs(events, diagnostics[2]) self.assertIs(generic2, diagnostics[3])
def testRoundtrip(self): events = related_event_set.RelatedEventSet() events.Add({ 'stableId': '0.0', 'title': 'foo', 'start': 0, 'duration': 1, }) d = events.AsDict() clone = diagnostic.Diagnostic.FromDict(d) self.assertEqual(histogram_unittest.ToJSON(d), histogram_unittest.ToJSON(clone.AsDict())) self.assertEqual(len(events), 1) event = list(events)[0] self.assertEqual(event['stableId'], '0.0') self.assertEqual(event['title'], 'foo') self.assertEqual(event['start'], 0) self.assertEqual(event['duration'], 1)