Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Unified Diff: tools/telemetry/telemetry/unittest/decorators_unittest.py

Issue 425613002: [Telemetry] Fix @Cache to maintain cache for life of instance for bound methods (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/telemetry/telemetry/decorators.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/unittest/decorators_unittest.py
diff --git a/tools/telemetry/telemetry/unittest/decorators_unittest.py b/tools/telemetry/telemetry/unittest/decorators_unittest.py
index 0487f3475aad2c6585adcd4ba1317ffb0e23ff28..45c56af1380f2826a23561aede982d38f7f7331a 100644
--- a/tools/telemetry/telemetry/unittest/decorators_unittest.py
+++ b/tools/telemetry/telemetry/unittest/decorators_unittest.py
@@ -7,8 +7,15 @@ import unittest
from telemetry import decorators
+_counter = 0
+
+
class Foo(object):
- pass
+ @decorators.Cache
+ def GetCountCached(self, _):
+ global _counter
+ _counter = _counter + 1
+ return _counter
def CreateFooUncached(_):
@@ -21,6 +28,7 @@ def CreateFooCached(_):
class DecoratorsUnitTest(unittest.TestCase):
+ # pylint: disable=C0102
def testCacheDecorator(self):
self.assertNotEquals(CreateFooUncached(1), CreateFooUncached(2))
@@ -28,3 +36,24 @@ class DecoratorsUnitTest(unittest.TestCase):
self.assertNotEquals(CreateFooUncached(1), CreateFooUncached(1))
self.assertEquals(CreateFooCached(1), CreateFooCached(1))
+
+ def testCacheableMemberCachesOnlyForSameArgs(self):
+ foo = Foo()
+ value_of_one = foo.GetCountCached(1)
+
+ self.assertEquals(value_of_one, foo.GetCountCached(1))
+ self.assertNotEquals(value_of_one, foo.GetCountCached(2))
+
+ def testCacheableMemberHasSeparateCachesForSiblingInstances(self):
+ foo = Foo()
+ sibling_foo = Foo()
+
+ self.assertNotEquals(foo.GetCountCached(1), sibling_foo.GetCountCached(1))
+
+ def testCacheableMemberHasSeparateCachesForNextGenerationInstances(self):
+ foo = Foo()
+ last_generation_count = foo.GetCountCached(1)
+ foo = None
+ foo = Foo()
+
+ self.assertNotEquals(last_generation_count, foo.GetCountCached(1))
« no previous file with comments | « tools/telemetry/telemetry/decorators.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698