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'])
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 & and " and '</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'])
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>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.')
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)
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'])