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

Side by Side 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: PTAL 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 from cache_chain_object_store import CacheChainObjectStore
7 from test_object_store import TestObjectStore
8 import unittest
9
10 class CacheChainObjectStoreTest(unittest.TestCase):
11 def setUp(self):
12 self._first = TestObjectStore('first', init={
13 'storage.html': 'storage',
14 })
15 self._second = TestObjectStore('second', init={
16 'runtime.html': 'runtime',
17 'storage.html': 'storage',
18 })
19 self._third = TestObjectStore('third', init={
20 'commands.html': 'commands',
21 'runtime.html': 'runtime',
22 'storage.html': 'storage',
23 })
24 self._store = CacheChainObjectStore(
25 (self._first, self._second, self._third))
26
27 def testGetFromFirstLayer(self):
28 self.assertEqual('storage', self._store.Get('storage.html').Get())
29 self.assertTrue(*self._first.CheckAndReset(get_count=1))
30 # Found in first layer, stop.
31 self.assertTrue(*self._second.CheckAndReset())
32 self.assertTrue(*self._third.CheckAndReset())
33 # Cached in memory, won't re-query.
34 self.assertEqual('storage', self._store.Get('storage.html').Get())
35 self.assertTrue(*self._first.CheckAndReset())
36 self.assertTrue(*self._second.CheckAndReset())
37 self.assertTrue(*self._third.CheckAndReset())
38
39 def testGetFromSecondLayer(self):
40 self.assertEqual('runtime', self._store.Get('runtime.html').Get())
41 # Not found in first layer but found in second.
42 self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
43 self.assertTrue(*self._second.CheckAndReset(get_count=1))
44 self.assertTrue(*self._third.CheckAndReset())
45 # First will now have it cached.
46 self.assertEqual('runtime', self._first.Get('runtime.html').Get())
47 self._first.Reset()
48 # Cached in memory, won't re-query.
49 self.assertEqual('runtime', self._store.Get('runtime.html').Get())
50 self.assertTrue(*self._first.CheckAndReset())
51 self.assertTrue(*self._second.CheckAndReset())
52 self.assertTrue(*self._third.CheckAndReset())
53
54 def testGetFromThirdLayer(self):
55 self.assertEqual('commands', self._store.Get('commands.html').Get())
56 # As above but for third.
57 self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
58 self.assertTrue(*self._second.CheckAndReset(get_count=1, set_count=1))
59 self.assertTrue(*self._third.CheckAndReset(get_count=1))
60 # First and second will now have it cached.
61 self.assertEqual('commands', self._first.Get('commands.html').Get())
62 self.assertEqual('commands', self._second.Get('commands.html').Get())
63 self._first.Reset()
64 self._second.Reset()
65 # Cached in memory, won't re-query.
66 self.assertEqual('commands', self._store.Get('commands.html').Get())
67 self.assertTrue(*self._first.CheckAndReset())
68 self.assertTrue(*self._second.CheckAndReset())
69 self.assertTrue(*self._third.CheckAndReset())
70
71 def testGetFromAllLayers(self):
72 self.assertEqual({
73 'commands.html': 'commands',
74 'runtime.html': 'runtime',
75 'storage.html': 'storage',
76 }, self._store.GetMulti(('commands.html',
77 'runtime.html',
78 'storage.html')).Get())
79 self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
80 self.assertTrue(*self._second.CheckAndReset(get_count=1, set_count=1))
81 self.assertTrue(*self._third.CheckAndReset(get_count=1))
82 # First and second will have it all cached.
83 self.assertEqual('runtime', self._first.Get('runtime.html').Get())
84 self.assertEqual('commands', self._first.Get('commands.html').Get())
85 self.assertEqual('commands', self._second.Get('commands.html').Get())
86 self._first.Reset()
87 self._second.Reset()
88 # Cached in memory.
89 self.assertEqual({
90 'commands.html': 'commands',
91 'runtime.html': 'runtime',
92 'storage.html': 'storage',
93 }, self._store.GetMulti(('commands.html',
94 'runtime.html',
95 'storage.html')).Get())
96 self.assertTrue(*self._first.CheckAndReset())
97 self.assertTrue(*self._second.CheckAndReset())
98 self.assertTrue(*self._third.CheckAndReset())
99
100 def testPartiallyCachedInMemory(self):
101 self.assertEqual({
102 'commands.html': 'commands',
103 'storage.html': 'storage',
104 }, self._store.GetMulti(('commands.html', 'storage.html')).Get())
105 self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
106 self.assertTrue(*self._second.CheckAndReset(get_count=1, set_count=1))
107 self.assertTrue(*self._third.CheckAndReset(get_count=1))
108 # runtime wasn't cached in memory, so stores should still be queried.
109 self.assertEqual({
110 'commands.html': 'commands',
111 'runtime.html': 'runtime',
112 }, self._store.GetMulti(('commands.html', 'runtime.html')).Get())
113 self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
114 self.assertTrue(*self._second.CheckAndReset(get_count=1))
115 self.assertTrue(*self._third.CheckAndReset())
116
117 def testNotFound(self):
118 self.assertEqual(None, self._store.Get('notfound.html').Get())
119 self.assertTrue(*self._first.CheckAndReset(get_count=1))
120 self.assertTrue(*self._second.CheckAndReset(get_count=1))
121 self.assertTrue(*self._third.CheckAndReset(get_count=1))
122 # Not-foundedness shouldn't be cached.
123 self.assertEqual(None, self._store.Get('notfound.html').Get())
124 self.assertTrue(*self._first.CheckAndReset(get_count=1))
125 self.assertTrue(*self._second.CheckAndReset(get_count=1))
126 self.assertTrue(*self._third.CheckAndReset(get_count=1))
127 # Test some things not found, some things found.
128 self.assertEqual({
129 'runtime.html': 'runtime',
130 }, self._store.GetMulti(('runtime.html', 'notfound.html')).Get())
131 self.assertTrue(*self._first.CheckAndReset(get_count=1, set_count=1))
132 self.assertTrue(*self._second.CheckAndReset(get_count=1))
133 self.assertTrue(*self._third.CheckAndReset(get_count=1))
134
135 def testSet(self):
136 self._store.Set('hello.html', 'hello')
137 self.assertTrue(*self._first.CheckAndReset(set_count=1))
138 self.assertTrue(*self._second.CheckAndReset(set_count=1))
139 self.assertTrue(*self._third.CheckAndReset(set_count=1))
140 # Should have cached it.
141 self.assertEqual('hello', self._store.Get('hello.html').Get())
142 self.assertTrue(*self._first.CheckAndReset())
143 self.assertTrue(*self._second.CheckAndReset())
144 self.assertTrue(*self._third.CheckAndReset())
145
146 def testDel(self):
147 # Cache it.
148 self.assertEqual('storage', self._store.Get('storage.html').Get())
149 self.assertTrue(*self._first.CheckAndReset(get_count=1))
150 # Delete it.
151 self._store.Del('storage.html')
152 self.assertTrue(*self._first.CheckAndReset(del_count=1))
153 self.assertTrue(*self._second.CheckAndReset(del_count=1))
154 self.assertTrue(*self._third.CheckAndReset(del_count=1))
155 # Not cached anymore.
156 self.assertEqual(None, self._store.Get('storage.html').Get())
157 self.assertTrue(*self._first.CheckAndReset(get_count=1))
158 self.assertTrue(*self._second.CheckAndReset(get_count=1))
159 self.assertTrue(*self._third.CheckAndReset(get_count=1))
160
161 if __name__ == '__main__':
162 unittest.main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698