def testMerge(self):
        events = histogram.RelatedEventSet()
        events.Add({
            'stableId': '0.0',
            'title': 'foo',
            'start': 0,
            'duration': 1,
        })
        generic = histogram.Generic('generic diagnostic')
        generic2 = histogram.Generic('generic diagnostic 2')
        related_set = histogram.RelatedHistogramSet([
            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, hist, hist2)
        self.assertIs(generic, hist.diagnostics['a'])

        # Separate keys are not merged.
        hist3 = histogram.Histogram('', 'count')
        hist3.diagnostics['b'] = generic2
        hist.diagnostics.Merge(hist3.diagnostics, hist, hist3)
        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_set
        hist.diagnostics.Merge(hist4.diagnostics, hist, hist4)
        self.assertIsInstance(hist.diagnostics['a'],
                              histogram.UnmergeableDiagnosticSet)
        diagnostics = list(hist.diagnostics['a'])
        self.assertIs(generic, diagnostics[0])
        self.assertIs(related_set, diagnostics[1])

        # UnmergeableDiagnosticSets are mergeable.
        hist5 = histogram.Histogram('', 'count')
        hist5.diagnostics['a'] = histogram.UnmergeableDiagnosticSet(
            [events, generic2])
        hist.diagnostics.Merge(hist5.diagnostics, hist, hist5)
        self.assertIsInstance(hist.diagnostics['a'],
                              histogram.UnmergeableDiagnosticSet)
        diagnostics = list(hist.diagnostics['a'])
        self.assertIs(generic, diagnostics[0])
        self.assertIs(related_set, diagnostics[1])
        self.assertIs(events, diagnostics[2])
        self.assertIs(generic2, diagnostics[3])
Exemplo n.º 2
0
 def testRoundtrip(self):
     events = histogram.RelatedEventSet()
     events.Add({
         'stableId': '0.0',
         'title': 'foo',
         'start': 0,
         'duration': 1,
     })
     d = events.AsDict()
     clone = diagnostic.Diagnostic.FromDict(d)
     self.assertEqual(ToJSON(d), 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)