1# Copyright 2013 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import unittest 6 7from telemetry.page import page 8from telemetry.page import page_filter 9from telemetry.page import page_set 10 11 12class MockUrlFilterOptions(object): 13 def __init__(self, page_filter_include, page_filter_exclude): 14 self.page_filter = page_filter_include 15 self.page_filter_exclude = page_filter_exclude 16 self.page_label_filter = None 17 self.page_label_filter_exclude = None 18 19 20class MockLabelFilterOptions(object): 21 def __init__(self, page_label_filter, page_label_filter_exclude): 22 self.page_filter = None 23 self.page_filter_exclude = None 24 self.page_label_filter = page_label_filter 25 self.page_label_filter_exclude = page_label_filter_exclude 26 27 28class PageFilterTest(unittest.TestCase): 29 def setUp(self): 30 ps = page_set.PageSet() 31 self.p1 = page.Page( 32 'file://conformance/textures/tex-sub-image-2d.html', page_set=ps, 33 name='WebglConformance.conformance_textures_tex_sub_image_2d') 34 self.p2 = page.Page( 35 'file://othersuite/textures/tex-sub-image-3d.html', page_set=ps, 36 name='OtherSuite.textures_tex_sub_image_3d') 37 self.p3 = page.Page( 38 'file://othersuite/textures/tex-sub-image-3d.html', page_set=ps) 39 40 def testURLPattern(self): 41 options = MockUrlFilterOptions('conformance/textures', '') 42 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 43 self.assertTrue(page_filter.PageFilter.IsSelected(self.p1)) 44 self.assertFalse(page_filter.PageFilter.IsSelected(self.p2)) 45 options = MockUrlFilterOptions('textures', '') 46 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 47 self.assertTrue(page_filter.PageFilter.IsSelected(self.p1)) 48 self.assertTrue(page_filter.PageFilter.IsSelected(self.p2)) 49 options = MockUrlFilterOptions('somethingelse', '') 50 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 51 self.assertFalse(page_filter.PageFilter.IsSelected(self.p1)) 52 self.assertFalse(page_filter.PageFilter.IsSelected(self.p2)) 53 54 def testName(self): 55 options = MockUrlFilterOptions('somethingelse', '') 56 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 57 self.assertFalse(page_filter.PageFilter.IsSelected(self.p1)) 58 self.assertFalse(page_filter.PageFilter.IsSelected(self.p2)) 59 options = MockUrlFilterOptions('textures_tex_sub_image', '') 60 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 61 self.assertTrue(page_filter.PageFilter.IsSelected(self.p1)) 62 self.assertTrue(page_filter.PageFilter.IsSelected(self.p2)) 63 options = MockUrlFilterOptions('WebglConformance', '') 64 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 65 self.assertTrue(page_filter.PageFilter.IsSelected(self.p1)) 66 self.assertFalse(page_filter.PageFilter.IsSelected(self.p2)) 67 options = MockUrlFilterOptions('OtherSuite', '') 68 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 69 self.assertFalse(page_filter.PageFilter.IsSelected(self.p1)) 70 self.assertTrue(page_filter.PageFilter.IsSelected(self.p2)) 71 72 def testNameNone(self): 73 options = MockUrlFilterOptions('othersuite/textures', '') 74 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 75 self.assertTrue(page_filter.PageFilter.IsSelected(self.p3)) 76 options = MockUrlFilterOptions('conformance/textures', '') 77 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 78 self.assertFalse(page_filter.PageFilter.IsSelected(self.p3)) 79 80 def testLabelFilters(self): 81 self.p1.label1 = True 82 self.p2.label1 = True 83 self.p3.label1 = False 84 self.p1.label2 = True 85 self.p2.label2 = False 86 self.p3.label2 = True 87 88 # Include both labels 89 options = MockLabelFilterOptions('label1,label2', '') 90 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 91 self.assertTrue(page_filter.PageFilter.IsSelected(self.p1)) 92 self.assertTrue(page_filter.PageFilter.IsSelected(self.p2)) 93 self.assertTrue(page_filter.PageFilter.IsSelected(self.p3)) 94 # Exclude takes priority 95 options = MockLabelFilterOptions('label1', 'label2') 96 page_filter.PageFilter.ProcessCommandLineArgs(None, options) 97 self.assertFalse(page_filter.PageFilter.IsSelected(self.p1)) 98 self.assertTrue(page_filter.PageFilter.IsSelected(self.p2)) 99 self.assertFalse(page_filter.PageFilter.IsSelected(self.p3)) 100