def testUpdateNameWithTokens(self, _, input_xml):
        histogram_with_token = xml.dom.minidom.parseString(input_xml)
        histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree(
            histogram_with_token, {})
        histograms_dict, _ = extract_histograms._UpdateHistogramsWithTokens(
            histograms_dict)
        self.assertIn('HistogramName.red.small', histograms_dict)
        self.assertIn('HistogramName.green.small', histograms_dict)
        self.assertIn('HistogramName.red.medium', histograms_dict)
        self.assertIn('HistogramName.green.medium', histograms_dict)
        self.assertIn('HistogramName.red.large', histograms_dict)
        self.assertIn('HistogramName.green.large', histograms_dict)
        self.assertIn('HistogramName.red', histograms_dict)
        self.assertIn('HistogramName.green', histograms_dict)
        self.assertNotIn('HistogramName{Color}{Size}', histograms_dict)

        # Make sure generated histograms do not have tokens.
        self.assertNotIn('tokens', histograms_dict['HistogramName.red.small'])
        self.assertNotIn('tokens',
                         histograms_dict['HistogramName.green.large'])
Пример #2
0
    def testHistogramWithEscapeCharacters(self):
        histogram_with_owner_placeholder = xml.dom.minidom.parseString("""
<histogram-configuration>
<histograms>
 <histogram name="Test.Histogram" units="things">
  <owner> Please list the metric's owners. Add more owner tags as needed.
  </owner>
  <summary>This is a summary with &amp; and &quot; and &apos;</summary>
 </histogram>
</histograms>
</histogram-configuration>
""")
        (hists,
         have_errors) = extract_histograms._ExtractHistogramsFromXmlTree(
             histogram_with_owner_placeholder, {})
        self.assertFalse(have_errors)
        self.assertIn('Test.Histogram', hists)
        self.assertIn('summary', hists['Test.Histogram'])
        self.assertEquals('This is a summary with & and " and \'',
                          hists['Test.Histogram']['summary'])
Пример #3
0
  def testUpdateWithTokenObsolete(self, _, input_xml):
    histogram_with_token = xml.dom.minidom.parseString(input_xml)
    histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree(
        histogram_with_token, {})
    histograms_dict, _ = extract_histograms._UpdateHistogramsWithTokens(
        histograms_dict)

    # New histograms should inherit the obsolete reason of the last
    # obsolete token by order of appearance.
    self.assertEqual('Obsolete small',
                     histograms_dict['HistogramName.red.small']['obsolete'])
    self.assertEqual('Obsolete red',
                     histograms_dict['HistogramName.red.medium']['obsolete'])
    self.assertEqual('Obsolete red',
                     histograms_dict['HistogramName.red.large']['obsolete'])
    self.assertEqual('Obsolete red',
                     histograms_dict['HistogramName.red']['obsolete'])
    self.assertEqual('Obsolete small',
                     histograms_dict['HistogramName.green.small']['obsolete'])
    self.assertNotIn('obsolete', histograms_dict['HistogramName.green.medium'])
    self.assertNotIn('obsolete', histograms_dict['HistogramName.green.large'])
    self.assertNotIn('obsolete', histograms_dict['HistogramName.green'])
    def testMultiParagraphSummary(self):
        multiple_paragraph_pattern = xml.dom.minidom.parseString("""
<histogram-configuration>
<histograms>
  <histogram name="MultiParagraphTest.Test1" units="units"
      expires_after="2019-01-01">
    <owner>[email protected]</owner>
    <summary>
      Sample description
      Sample description.
    </summary>
  </histogram>

  <histogram name="MultiParagraphTest.Test2" units="units"
      expires_after="2019-01-01">
    <owner>[email protected]</owner>
    <summary>
      Multi-paragraph sample description UI&gt;Browser.
      Words.

      Still multi-paragraph sample description.

      <!--Comments are allowed.-->

      Here.
    </summary>
  </histogram>
</histograms>
</histogram-configuration>
""")
        histograms, _ = extract_histograms._ExtractHistogramsFromXmlTree(
            multiple_paragraph_pattern, {})
        self.assertEqual(histograms['MultiParagraphTest.Test1']['summary'],
                         'Sample description Sample description.')
        self.assertEqual(
            histograms['MultiParagraphTest.Test2']['summary'],
            'Multi-paragraph sample description UI>Browser. Words.\n\n'
            'Still multi-paragraph sample description.\n\nHere.')
Пример #5
0
  def testVariantsNotExists(self):
    histogram_without_corresponding_variants = xml.dom.minidom.parseString("""
<histogram-configuration>
<histograms>
<histogram name="Histogram{Color}{SizeNone}" units="things"
    expires_after="2017-10-16">
  <owner>[email protected]</owner>
  <summary>
    This is a histogram for button of {Color} color and {SizeNone} size.
  </summary>
  <token key="Color">
    <variant name="" label="all"/>
    <variant name=".red" label="red"/>
    <variant name=".green" label="green"/>
  </token>
  <token key="SizeNone" variants="HistogramNameSize"/>
</histogram>
</histograms>
</histogram-configuration>
""")
    _, have_errors = extract_histograms._ExtractHistogramsFromXmlTree(
        histogram_without_corresponding_variants, {})
    self.assertTrue(have_errors)
Пример #6
0
  def testUpdateWithTokenOwner(self, _, input_xml):
    histogram_with_token = xml.dom.minidom.parseString(input_xml)
    histograms_dict, _ = extract_histograms._ExtractHistogramsFromXmlTree(
        histogram_with_token, {})
    histograms_dict, _ = extract_histograms._UpdateHistogramsWithTokens(
        histograms_dict)

    self.assertEqual(['*****@*****.**'],
                     histograms_dict['HistogramName.red.small']['owners'])
    self.assertEqual(['*****@*****.**'],
                     histograms_dict['HistogramName.red.medium']['owners'])
    self.assertEqual(['*****@*****.**'],
                     histograms_dict['HistogramName.red.large']['owners'])
    self.assertEqual(['*****@*****.**'],
                     histograms_dict['HistogramName.red']['owners'])
    self.assertEqual(['*****@*****.**', '*****@*****.**'],
                     histograms_dict['HistogramName.green.small']['owners'])
    self.assertEqual(['*****@*****.**'],
                     histograms_dict['HistogramName.green.medium']['owners'])
    self.assertEqual(['*****@*****.**'],
                     histograms_dict['HistogramName.green.large']['owners'])
    self.assertEqual(['*****@*****.**'],
                     histograms_dict['HistogramName.green']['owners'])