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

Side by Side Diff: chrome/common/extensions/docs/server2/mock_file_system.py

Issue 660383002: Docserver: Persist stat cache for versioned file systems (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import posixpath 5 import posixpath
6 6
7 from file_system import FileSystem, FileNotFoundError 7 from file_system import FileSystem, FileNotFoundError
8 from future import Future 8 from future import Future
9 from test_file_system import _List, _StatTracker, TestFileSystem 9 from test_file_system import _List, _StatTracker, TestFileSystem
10 from path_util import IsDirectory 10 from path_util import IsDirectory
11 11
12 12
13 class MockFileSystem(FileSystem): 13 class MockFileSystem(FileSystem):
14 '''Wraps FileSystems to add a selection of mock behaviour: 14 '''Wraps FileSystems to add a selection of mock behaviour:
15 - asserting how often Stat/Read calls are being made to it. 15 - asserting how often Stat/Read calls are being made to it.
16 - primitive changes/versioning via applying object "diffs", mapping paths to 16 - primitive changes/versioning via applying object "diffs", mapping paths to
17 new content (similar to how TestFileSystem works). 17 new content (similar to how TestFileSystem works).
18 ''' 18 '''
19 def __init__(self, file_system): 19 def __init__(self, file_system):
20 self._file_system = file_system 20 self._file_system = file_system
21 # Updates are stored as TestFileSystems because it already implements a 21 # Updates are stored as TestFileSystems because it already implements a
22 # bunch of logic to intepret paths into dictionaries. 22 # bunch of logic to intepret paths into dictionaries.
23 self._updates = [] 23 self._updates = []
24 self._stat_tracker = _StatTracker() 24 self._stat_tracker = _StatTracker()
25 self._read_count = 0 25 self._read_count = 0
26 self._read_resolve_count = 0 26 self._read_resolve_count = 0
27 self._stat_count = 0 27 self._stat_count = 0
28 self._version = None
28 29
29 @staticmethod 30 @staticmethod
30 def Create(file_system, updates): 31 def Create(file_system, updates):
31 mock_file_system = MockFileSystem(file_system) 32 mock_file_system = MockFileSystem(file_system)
32 for update in updates: 33 for update in updates:
33 mock_file_system.Update(update) 34 mock_file_system.Update(update)
34 return mock_file_system 35 return mock_file_system
35 36
36 # 37 #
37 # FileSystem implementation. 38 # FileSystem implementation.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 stat.version = stradd(stat.version, self._stat_tracker.GetVersion(path)) 80 stat.version = stradd(stat.version, self._stat_tracker.GetVersion(path))
80 if stat.child_versions: 81 if stat.child_versions:
81 for child_path, child_version in stat.child_versions.iteritems(): 82 for child_path, child_version in stat.child_versions.iteritems():
82 stat.child_versions[child_path] = stradd( 83 stat.child_versions[child_path] = stradd(
83 stat.child_versions[child_path], 84 stat.child_versions[child_path],
84 self._stat_tracker.GetVersion(posixpath.join(path, child_path))) 85 self._stat_tracker.GetVersion(posixpath.join(path, child_path)))
85 86
86 return stat 87 return stat
87 88
88 def GetCommitID(self): 89 def GetCommitID(self):
89 return Future(value=self._stat_tracker.GetVersion('')) 90 return Future(value=str(self._stat_tracker.GetVersion('')))
90 91
91 def GetPreviousCommitID(self): 92 def GetPreviousCommitID(self):
92 return Future(value=self._stat_tracker.GetVersion('') - 1) 93 return Future(value=str(self._stat_tracker.GetVersion('') - 1))
93 94
94 def GetIdentity(self): 95 def GetIdentity(self):
95 return self._file_system.GetIdentity() 96 return self._file_system.GetIdentity()
96 97
98 def GetVersion(self):
99 return self._version
100
97 def __str__(self): 101 def __str__(self):
98 return repr(self) 102 return repr(self)
99 103
100 def __repr__(self): 104 def __repr__(self):
101 return 'MockFileSystem(read_count=%s, stat_count=%s, updates=%s)' % ( 105 return 'MockFileSystem(read_count=%s, stat_count=%s, updates=%s)' % (
102 self._read_count, self._stat_count, len(self._updates)) 106 self._read_count, self._stat_count, len(self._updates))
103 107
104 # 108 #
105 # Testing methods. 109 # Testing methods.
106 # 110 #
(...skipping 22 matching lines...) Expand all
129 self._read_resolve_count = 0 133 self._read_resolve_count = 0
130 self._stat_count = 0 134 self._stat_count = 0
131 135
132 def Update(self, update): 136 def Update(self, update):
133 self._updates.append(TestFileSystem(update)) 137 self._updates.append(TestFileSystem(update))
134 for path in _List(update).iterkeys(): 138 for path in _List(update).iterkeys():
135 # Any files (not directories) which changed are now at the version 139 # Any files (not directories) which changed are now at the version
136 # derived from |_updates|. 140 # derived from |_updates|.
137 if not IsDirectory(path): 141 if not IsDirectory(path):
138 self._stat_tracker.SetVersion(path, len(self._updates)) 142 self._stat_tracker.SetVersion(path, len(self._updates))
143
144 def SetVersion(self, version):
145 '''Override the reported FileSystem version (default None) for testing.'''
146 self._version = version
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698