def _fake_processed_crash(self): d = DotDict() # these keys survive redaction d.a = DotDict() d.a.b = DotDict() d.a.b.c = 11 d.sensitive = DotDict() d.sensitive.x = 2 d.not_url = 'not a url' return d
def test_action_predicate_accept(self): """test all of the case where the predicate should return True""" filter_rule = DontConsiderTheseFilter() fake_processor = create_basic_fake_processor() # find non-plugin crashes test_raw_crash = DotDict() test_raw_crash.PluginHang = '0' test_raw_dumps = {} ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find non-Firefox crashes test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Internet Explorer" ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with no Version info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with faulty Version info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = 'dwight' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with no BuildID info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with faulty BuildID info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' test_raw_crash.BuildID = '201307E2' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with faulty BuildID info (not integer) test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' test_raw_crash.BuildID = '201307E2' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with faulty BuildID info (bad month & day) test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' test_raw_crash.BuildID = '20131458' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with pre-17 version test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '15' test_raw_crash.BuildID = '20121015' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with 18 version but build date less than 2012-10-23 test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '18' test_raw_crash.BuildID = '20121015' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with build date less than 2012-10-17 # and version 17 or above test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17' test_raw_crash.BuildID = '20121015' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, DotDict(), fake_processor )) # find crashes with no default dump test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # find crashes with no architecture info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # find crashes with amd64 architecture info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.cpu_arch = 'amd64' ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # find crashes with main dump processing errors test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = False ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # find crashes with extra dump processing errors test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = False ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # find crashes with missing critical attribute test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = False ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # find crashes with missing critical attribute test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = False ok_(filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # reject the perfect crash test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = True ok_(not filter_rule.predicate( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor )) # test the do-nothing action test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = True ok_(filter_rule.action( test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor ))
def test_action_predicate_accept(self): """test all of the case where the predicate should return True""" filter_rule = DontConsiderTheseFilter() fake_processor = create_basic_fake_processor() # find non-plugin crashes test_raw_crash = DotDict() test_raw_crash.PluginHang = '0' test_raw_dumps = {} ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find non-Firefox crashes test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Internet Explorer" ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with no Version info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with faulty Version info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = 'dwight' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with no BuildID info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with faulty BuildID info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' test_raw_crash.BuildID = '201307E2' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with faulty BuildID info (not integer) test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' test_raw_crash.BuildID = '201307E2' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with faulty BuildID info (bad month & day) test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17.1' test_raw_crash.BuildID = '20131458' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with pre-17 version test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '15' test_raw_crash.BuildID = '20121015' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with 18 version but build date less than 2012-10-23 test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '18' test_raw_crash.BuildID = '20121015' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with build date less than 2012-10-17 # and version 17 or above test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '17' test_raw_crash.BuildID = '20121015' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, DotDict(), fake_processor)) # find crashes with no default dump test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # find crashes with no architecture info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # find crashes with amd64 architecture info test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.cpu_arch = 'amd64' ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # find crashes with main dump processing errors test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = False ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # find crashes with extra dump processing errors test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = False ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # find crashes with missing critical attribute test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = False ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # find crashes with missing critical attribute test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = False ok_( filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # reject the perfect crash test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = True ok_(not filter_rule.predicate(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor)) # test the do-nothing action test_raw_crash = DotDict() test_raw_crash.PluginHang = '1' test_raw_crash.ProductName = "Firefox" test_raw_crash.Version = '19' test_raw_crash.BuildID = '20121031' test_processed_crash = DotDict() test_processed_crash.dump = 'fake dump' test_processed_crash.json_dump = DotDict() test_processed_crash.json_dump.system_info = DotDict() test_processed_crash.json_dump.system_info.cpu_arch = 'x86' test_processed_crash.success = True test_processed_crash.additional_minidumps = ['a', 'b', 'c'] test_processed_crash.a = DotDict() test_processed_crash.a.success = True test_processed_crash.b = DotDict() test_processed_crash.b.success = True test_processed_crash.c = DotDict() test_processed_crash.c.success = True ok_( filter_rule.action(test_raw_crash, test_raw_dumps, test_processed_crash, fake_processor))