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

Unified Diff: chrome/common/extensions/docs/server2/cache_chain_object_store_test.py

Issue 14218004: Devserver: only populate data during cron jobs, meaning all data from instances (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix integration test Created 7 years, 8 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
Index: chrome/common/extensions/docs/server2/cache_chain_object_store_test.py
diff --git a/chrome/common/extensions/docs/server2/cache_chain_object_store_test.py b/chrome/common/extensions/docs/server2/cache_chain_object_store_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..a2fa22467b7c29fac8cabcc2f96ca77c9a855cfb
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/cache_chain_object_store_test.py
@@ -0,0 +1,162 @@
+#!/usr/bin/env python
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from cache_chain_object_store import CacheChainObjectStore
+from test_object_store import TestObjectStore
+import unittest
+
+class CacheChainObjectStoreTest(unittest.TestCase):
+ def setUp(self):
+ self._first = TestObjectStore('first', init={
+ 'storage.html': 'storage',
+ })
+ self._second = TestObjectStore('second', init={
+ 'runtime.html': 'runtime',
+ 'storage.html': 'storage',
+ })
+ self._third = TestObjectStore('third', init={
+ 'commands.html': 'commands',
+ 'runtime.html': 'runtime',
+ 'storage.html': 'storage',
+ })
+ self._store = CacheChainObjectStore(
+ (self._first, self._second, self._third))
+
+ def testGetFromFirstLayer(self):
+ self.assertEqual('storage', self._store.Get('storage.html').Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1))
+ # Found in first layer, stop.
+ self.assertTrue(*self._second.CheckAndReset())
+ self.assertTrue(*self._third.CheckAndReset())
+ # Cached in memory, won't re-query.
+ self.assertEqual('storage', self._store.Get('storage.html').Get())
+ self.assertTrue(*self._first.CheckAndReset())
+ self.assertTrue(*self._second.CheckAndReset())
+ self.assertTrue(*self._third.CheckAndReset())
+
+ def testGetFromSecondLayer(self):
+ self.assertEqual('runtime', self._store.Get('runtime.html').Get())
+ # Not found in first layer but found in second.
+ self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1))
+ self.assertTrue(*self._third.CheckAndReset())
+ # First will now have it cached.
+ self.assertEqual('runtime', self._first.Get('runtime.html').Get())
+ self._first.Reset()
+ # Cached in memory, won't re-query.
+ self.assertEqual('runtime', self._store.Get('runtime.html').Get())
+ self.assertTrue(*self._first.CheckAndReset())
+ self.assertTrue(*self._second.CheckAndReset())
+ self.assertTrue(*self._third.CheckAndReset())
+
+ def testGetFromThirdLayer(self):
+ self.assertEqual('commands', self._store.Get('commands.html').Get())
+ # As above but for third.
+ self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._third.CheckAndReset(get_count=1))
+ # First and second will now have it cached.
+ self.assertEqual('commands', self._first.Get('commands.html').Get())
+ self.assertEqual('commands', self._second.Get('commands.html').Get())
+ self._first.Reset()
+ self._second.Reset()
+ # Cached in memory, won't re-query.
+ self.assertEqual('commands', self._store.Get('commands.html').Get())
+ self.assertTrue(*self._first.CheckAndReset())
+ self.assertTrue(*self._second.CheckAndReset())
+ self.assertTrue(*self._third.CheckAndReset())
+
+ def testGetFromAllLayers(self):
+ self.assertEqual({
+ 'commands.html': 'commands',
+ 'runtime.html': 'runtime',
+ 'storage.html': 'storage',
+ }, self._store.GetMulti(('commands.html',
+ 'runtime.html',
+ 'storage.html')).Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._third.CheckAndReset(get_count=1))
+ # First and second will have it all cached.
+ self.assertEqual('runtime', self._first.Get('runtime.html').Get())
+ self.assertEqual('commands', self._first.Get('commands.html').Get())
+ self.assertEqual('commands', self._second.Get('commands.html').Get())
+ self._first.Reset()
+ self._second.Reset()
+ # Cached in memory.
+ self.assertEqual({
+ 'commands.html': 'commands',
+ 'runtime.html': 'runtime',
+ 'storage.html': 'storage',
+ }, self._store.GetMulti(('commands.html',
+ 'runtime.html',
+ 'storage.html')).Get())
+ self.assertTrue(*self._first.CheckAndReset())
+ self.assertTrue(*self._second.CheckAndReset())
+ self.assertTrue(*self._third.CheckAndReset())
+
+ def testPartiallyCachedInMemory(self):
+ self.assertEqual({
+ 'commands.html': 'commands',
+ 'storage.html': 'storage',
+ }, self._store.GetMulti(('commands.html', 'storage.html')).Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._third.CheckAndReset(get_count=1))
+ # runtime wasn't cached in memory, so stores should still be queried.
+ self.assertEqual({
+ 'commands.html': 'commands',
+ 'runtime.html': 'runtime',
+ }, self._store.GetMulti(('commands.html', 'runtime.html')).Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1))
+ self.assertTrue(*self._third.CheckAndReset())
+
+ def testNotFound(self):
+ self.assertEqual(None, self._store.Get('notfound.html').Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1))
+ self.assertTrue(*self._third.CheckAndReset(get_count=1))
+ # Not-foundedness shouldn't be cached.
+ self.assertEqual(None, self._store.Get('notfound.html').Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1))
+ self.assertTrue(*self._third.CheckAndReset(get_count=1))
+ # Test some things not found, some things found.
+ self.assertEqual({
+ 'runtime.html': 'runtime',
+ }, self._store.GetMulti(('runtime.html', 'notfound.html')).Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1))
+ self.assertTrue(*self._third.CheckAndReset(get_count=1))
+
+ def testSet(self):
+ self._store.Set('hello.html', 'hello')
+ self.assertTrue(*self._first.CheckAndReset(set_count=1))
+ self.assertTrue(*self._second.CheckAndReset(set_count=1))
+ self.assertTrue(*self._third.CheckAndReset(set_count=1))
+ # Should have cached it.
+ self.assertEqual('hello', self._store.Get('hello.html').Get())
+ self.assertTrue(*self._first.CheckAndReset())
+ self.assertTrue(*self._second.CheckAndReset())
+ self.assertTrue(*self._third.CheckAndReset())
+
+ def testDel(self):
+ # Cache it.
+ self.assertEqual('storage', self._store.Get('storage.html').Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1))
+ # Delete it.
+ self._store.Del('storage.html')
+ self.assertTrue(*self._first.CheckAndReset(del_count=1))
+ self.assertTrue(*self._second.CheckAndReset(del_count=1))
+ self.assertTrue(*self._third.CheckAndReset(del_count=1))
+ # Not cached anymore.
+ self.assertEqual(None, self._store.Get('storage.html').Get())
+ self.assertTrue(*self._first.CheckAndReset(get_count=1))
+ self.assertTrue(*self._second.CheckAndReset(get_count=1))
+ self.assertTrue(*self._third.CheckAndReset(get_count=1))
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698