Chromium Code Reviews| Index: appengine/findit/crash/test/component_classifier_test.py |
| diff --git a/appengine/findit/crash/test/component_classifier_test.py b/appengine/findit/crash/test/component_classifier_test.py |
| index 3578931ed5183ed9807ad2fb908aca1a643c07ed..d153f9fd9a757ca149ac4860682094703167b04c 100644 |
| --- a/appengine/findit/crash/test/component_classifier_test.py |
| +++ b/appengine/findit/crash/test/component_classifier_test.py |
| @@ -4,47 +4,67 @@ |
| from common.pipeline_wrapper import pipeline_handlers |
| from crash.callstack import StackFrame, CallStack |
| +from crash.component import Component |
| from crash.component_classifier import ComponentClassifier |
| from crash.results import Result |
| from crash.test.crash_testcase import CrashTestCase |
| from model.crash.crash_config import CrashConfig |
| +# N.B., the call to Get() in CrashConfigComponentClassifier.__init__ |
| +# must only be executed from within the testFoo methods of |
| +# ComponentClassifierTest. That is, we can't just do this once and for all |
| +# when doing ComponentClassifierTest.__init__, because that'll cause some |
| +# strange issues in mocking. But factoring it out like this so it gets |
|
Sharu Jiang
2016/09/20 00:31:29
You should do this in ComponentClassifierTest.setU
wrengr
2016/09/27 22:00:40
I agree it shouldn't, but it does.
|
| +# (re)called ever time a testFoo is run, that works. |
| +class CrashConfigComponentClassifier(ComponentClassifier): |
| + """A ComponentClassifier which gets its components from CrashConfig.""" |
| + def __init__(self): |
| + config = CrashConfig.Get().component_classifier |
| + super(CrashConfigComponentClassifier, self).__init__( |
| + [ Component(name, path, function) |
|
Sharu Jiang
2016/09/20 00:31:29
nit: no space after [
wrengr
2016/09/27 22:00:40
Done.
|
| + for path, function, name |
| + in config.get('path_function_component', [])], |
| + config.get('top_n', 0)) |
| + |
| + |
| class ComponentClassifierTest(CrashTestCase): |
| def testGetClassFromStackFrame(self): |
| frame = StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]) |
| self.assertEqual( |
| - ComponentClassifier().GetClassFromStackFrame(frame), |
| + CrashConfigComponentClassifier().GetClassFromStackFrame(frame), |
| 'Comp1>Dummy') |
| frame = StackFrame(0, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [32]) |
| self.assertEqual( |
| - ComponentClassifier().GetClassFromStackFrame(frame), |
| + CrashConfigComponentClassifier().GetClassFromStackFrame(frame), |
| 'Comp2>Dummy') |
| frame = StackFrame(0, 'src/', 'no_func', 'comp2.cc', 'src/comp2.cc', [32]) |
| self.assertEqual( |
| - ComponentClassifier().GetClassFromStackFrame(frame), |
| + CrashConfigComponentClassifier().GetClassFromStackFrame(frame), |
| '') |
| frame = StackFrame(0, 'src/', 'func2', 'a.cc', 'src/a.cc', [6]) |
| self.assertEqual( |
| - ComponentClassifier().GetClassFromStackFrame(frame), |
| + CrashConfigComponentClassifier().GetClassFromStackFrame(frame), |
| '') |
| def testGetClassFromResult(self): |
| result = Result(self.GetDummyChangeLog(), 'src/') |
| - self.assertEqual(ComponentClassifier().GetClassFromResult(result), |
| - '') |
| + self.assertEqual( |
| + CrashConfigComponentClassifier().GetClassFromResult(result), |
| + '') |
| result.file_to_stack_infos = { |
| 'comp1.cc': [ |
| (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) |
| ] |
| } |
| - self.assertEqual(ComponentClassifier().GetClassFromResult(result), |
| - 'Comp1>Dummy') |
| + self.assertEqual( |
| + CrashConfigComponentClassifier().GetClassFromResult(result), |
| + 'Comp1>Dummy') |
| def testClassifyCrashStack(self): |
| crash_stack = CallStack(0) |
| @@ -54,7 +74,7 @@ class ComponentClassifierTest(CrashTestCase): |
| StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) |
| ]) |
| - self.assertEqual(ComponentClassifier().Classify([], crash_stack), |
| + self.assertEqual(CrashConfigComponentClassifier().Classify([], crash_stack), |
| ['Comp1>Dummy', 'Comp2>Dummy']) |
| def testClassifyResults(self): |
| @@ -65,8 +85,9 @@ class ComponentClassifierTest(CrashTestCase): |
| ] |
| } |
| - self.assertEqual(ComponentClassifier().Classify([result], CallStack(0)), |
| - ['Comp1>Dummy']) |
| + self.assertEqual( |
| + CrashConfigComponentClassifier().Classify([result], CallStack(0)), |
| + ['Comp1>Dummy']) |
| def testClassifierDoNotHaveConfig(self): |
| crash_config = CrashConfig.Get() |
| @@ -86,5 +107,6 @@ class ComponentClassifierTest(CrashTestCase): |
| ] |
| } |
| - self.assertEqual(ComponentClassifier().Classify([result], crash_stack), |
| - []) |
| + self.assertEqual( |
| + CrashConfigComponentClassifier().Classify([result], crash_stack), |
| + []) |