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

Side by Side Diff: tests/s3/mock_storage_service.py

Issue 8386013: Merging in latest boto. (Closed) Base URL: svn://svn.chromium.org/boto
Patch Set: Redoing vendor drop by deleting and then merging. Created 9 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 | Annotate | Revision Log
« no previous file with comments | « tests/s3/cb_test_harnass.py ('k') | tests/s3/other_cacerts.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2010 Google Inc. 1 # Copyright 2010 Google Inc.
2 # 2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a 3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the 4 # copy of this software and associated documentation files (the
5 # "Software"), to deal in the Software without restriction, including 5 # "Software"), to deal in the Software without restriction, including
6 # without limitation the rights to use, copy, modify, merge, publish, dis- 6 # without limitation the rights to use, copy, modify, merge, publish, dis-
7 # tribute, sublicense, and/or sell copies of the Software, and to permit 7 # tribute, sublicense, and/or sell copies of the Software, and to permit
8 # persons to whom the Software is furnished to do so, subject to the fol- 8 # persons to whom the Software is furnished to do so, subject to the fol-
9 # lowing conditions: 9 # lowing conditions:
10 # 10 #
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 self.content_type = headers['Content-Type'] 85 self.content_type = headers['Content-Type']
86 86
87 def open_read(self, headers=NOT_IMPL, query_args=NOT_IMPL, 87 def open_read(self, headers=NOT_IMPL, query_args=NOT_IMPL,
88 override_num_retries=NOT_IMPL): 88 override_num_retries=NOT_IMPL):
89 pass 89 pass
90 90
91 def set_contents_from_file(self, fp, headers=None, replace=NOT_IMPL, 91 def set_contents_from_file(self, fp, headers=None, replace=NOT_IMPL,
92 cb=NOT_IMPL, num_cb=NOT_IMPL, 92 cb=NOT_IMPL, num_cb=NOT_IMPL,
93 policy=NOT_IMPL, md5=NOT_IMPL, 93 policy=NOT_IMPL, md5=NOT_IMPL,
94 res_upload_handler=NOT_IMPL): 94 res_upload_handler=NOT_IMPL):
95 self.data = fp.readlines() 95 self.data = fp.read()
96 self.size = len(self.data) 96 self.size = len(self.data)
97 self._handle_headers(headers) 97 self._handle_headers(headers)
98 98
99 def set_contents_from_string(self, s, headers=NOT_IMPL, replace=NOT_IMPL, 99 def set_contents_from_string(self, s, headers=NOT_IMPL, replace=NOT_IMPL,
100 cb=NOT_IMPL, num_cb=NOT_IMPL, policy=NOT_IMPL, 100 cb=NOT_IMPL, num_cb=NOT_IMPL, policy=NOT_IMPL,
101 md5=NOT_IMPL, reduced_redundancy=NOT_IMPL): 101 md5=NOT_IMPL, reduced_redundancy=NOT_IMPL):
102 self.data = copy.copy(s) 102 self.data = copy.copy(s)
103 self.size = len(s) 103 self.size = len(s)
104 self._handle_headers(headers) 104 self._handle_headers(headers)
105 105
106 def set_contents_from_filename(self, filename, headers=None, replace=NOT_IMP L,
107 cb=NOT_IMPL, num_cb=NOT_IMPL,
108 policy=NOT_IMPL, md5=NOT_IMPL,
109 res_upload_handler=NOT_IMPL):
110 fp = open(filename, 'rb')
111 self.set_contents_from_file(fp, headers, replace, cb, num_cb,
112 policy, md5, res_upload_handler)
113 fp.close()
114
115 def copy(self, dst_bucket_name, dst_key, metadata=NOT_IMPL,
116 reduced_redundancy=NOT_IMPL, preserve_acl=NOT_IMPL):
117 dst_bucket = self.bucket.connection.get_bucket(dst_bucket_name)
118 return dst_bucket.copy_key(dst_key, self.bucket.name,
119 self.name, metadata)
120
106 121
107 class MockBucket(object): 122 class MockBucket(object):
108 123
109 def __init__(self, connection=NOT_IMPL, name=None, key_class=NOT_IMPL): 124 def __init__(self, connection=None, name=None, key_class=NOT_IMPL):
110 self.name = name 125 self.name = name
111 self.keys = {} 126 self.keys = {}
112 self.acls = {name: MockAcl()} 127 self.acls = {name: MockAcl()}
128 self.subresources = {}
129 self.connection = connection
130 self.logging = False
113 131
114 def copy_key(self, new_key_name, src_bucket_name, 132 def copy_key(self, new_key_name, src_bucket_name,
115 src_key_name, metadata=NOT_IMPL, src_version_id=NOT_IMPL, 133 src_key_name, metadata=NOT_IMPL, src_version_id=NOT_IMPL,
116 storage_class=NOT_IMPL, preserve_acl=NOT_IMPL): 134 storage_class=NOT_IMPL, preserve_acl=NOT_IMPL):
117 new_key = self.new_key(key_name=new_key_name) 135 new_key = self.new_key(key_name=new_key_name)
118 src_key = mock_connection.get_bucket( 136 src_key = mock_connection.get_bucket(
119 src_bucket_name).get_key(src_key_name) 137 src_bucket_name).get_key(src_key_name)
120 new_key.data = copy.copy(src_key.data) 138 new_key.data = copy.copy(src_key.data)
121 new_key.size = len(new_key.data) 139 new_key.size = len(new_key.data)
140 return new_key
141
142 def disable_logging(self):
143 self.logging = False
144
145 def enable_logging(self, target_bucket_prefix):
146 self.logging = True
122 147
123 def get_acl(self, key_name='', headers=NOT_IMPL, version_id=NOT_IMPL): 148 def get_acl(self, key_name='', headers=NOT_IMPL, version_id=NOT_IMPL):
124 if key_name: 149 if key_name:
125 # Return ACL for the key. 150 # Return ACL for the key.
126 return self.acls[key_name] 151 return self.acls[key_name]
127 else: 152 else:
128 # Return ACL for the bucket. 153 # Return ACL for the bucket.
129 return self.acls[self.name] 154 return self.acls[self.name]
130 155
156 def get_subresource(self, subresource, key_name=NOT_IMPL, headers=NOT_IMPL,
157 version_id=NOT_IMPL):
158 if subresource in self.subresources:
159 return self.subresources[subresource]
160 else:
161 return '<Subresource/>'
162
131 def new_key(self, key_name=None): 163 def new_key(self, key_name=None):
132 mock_key = MockKey(self, key_name) 164 mock_key = MockKey(self, key_name)
133 self.keys[key_name] = mock_key 165 self.keys[key_name] = mock_key
134 self.acls[key_name] = MockAcl() 166 self.acls[key_name] = MockAcl()
135 return mock_key 167 return mock_key
136 168
137 def delete_key(self, key_name, headers=NOT_IMPL, 169 def delete_key(self, key_name, headers=NOT_IMPL,
138 version_id=NOT_IMPL, mfa_token=NOT_IMPL): 170 version_id=NOT_IMPL, mfa_token=NOT_IMPL):
139 if key_name not in self.keys: 171 if key_name not in self.keys:
140 raise boto.exception.StorageResponseError(404, 'Not Found') 172 raise boto.exception.StorageResponseError(404, 'Not Found')
(...skipping 25 matching lines...) Expand all
166 version_id=NOT_IMPL): 198 version_id=NOT_IMPL):
167 # We only handle setting ACL XML here; if you pass a canned ACL 199 # We only handle setting ACL XML here; if you pass a canned ACL
168 # the get_acl call will just return that string name. 200 # the get_acl call will just return that string name.
169 if key_name: 201 if key_name:
170 # Set ACL for the key. 202 # Set ACL for the key.
171 self.acls[key_name] = acl_or_str 203 self.acls[key_name] = acl_or_str
172 else: 204 else:
173 # Set ACL for the bucket. 205 # Set ACL for the bucket.
174 self.acls[self.name] = acl_or_str 206 self.acls[self.name] = acl_or_str
175 207
208 def set_subresource(self, subresource, value, key_name=NOT_IMPL,
209 headers=NOT_IMPL, version_id=NOT_IMPL):
210 self.subresources[subresource] = value
211
176 212
177 class MockConnection(object): 213 class MockConnection(object):
178 214
179 def __init__(self, aws_access_key_id=NOT_IMPL, 215 def __init__(self, aws_access_key_id=NOT_IMPL,
180 aws_secret_access_key=NOT_IMPL, is_secure=NOT_IMPL, 216 aws_secret_access_key=NOT_IMPL, is_secure=NOT_IMPL,
181 port=NOT_IMPL, proxy=NOT_IMPL, proxy_port=NOT_IMPL, 217 port=NOT_IMPL, proxy=NOT_IMPL, proxy_port=NOT_IMPL,
182 proxy_user=NOT_IMPL, proxy_pass=NOT_IMPL, 218 proxy_user=NOT_IMPL, proxy_pass=NOT_IMPL,
183 host=NOT_IMPL, debug=NOT_IMPL, 219 host=NOT_IMPL, debug=NOT_IMPL,
184 https_connection_factory=NOT_IMPL, 220 https_connection_factory=NOT_IMPL,
185 calling_format=NOT_IMPL, 221 calling_format=NOT_IMPL,
186 path=NOT_IMPL, provider=NOT_IMPL, 222 path=NOT_IMPL, provider=NOT_IMPL,
187 bucket_class=NOT_IMPL): 223 bucket_class=NOT_IMPL):
188 self.buckets = {} 224 self.buckets = {}
189 225
190 def create_bucket(self, bucket_name, headers=NOT_IMPL, location=NOT_IMPL, 226 def create_bucket(self, bucket_name, headers=NOT_IMPL, location=NOT_IMPL,
191 policy=NOT_IMPL): 227 policy=NOT_IMPL):
192 if bucket_name in self.buckets: 228 if bucket_name in self.buckets:
193 raise boto.exception.StorageCreateError( 229 raise boto.exception.StorageCreateError(
194 409, 'BucketAlreadyOwnedByYou', 'bucket already exists') 230 409, 'BucketAlreadyOwnedByYou',
195 mock_bucket = MockBucket(name=bucket_name) 231 "<Message>Your previous request to create the named bucket "
232 "succeeded and you already own it.</Message>")
233 mock_bucket = MockBucket(name=bucket_name, connection=self)
196 self.buckets[bucket_name] = mock_bucket 234 self.buckets[bucket_name] = mock_bucket
197 return mock_bucket 235 return mock_bucket
198 236
199 def delete_bucket(self, bucket, headers=NOT_IMPL): 237 def delete_bucket(self, bucket, headers=NOT_IMPL):
200 if bucket not in self.buckets: 238 if bucket not in self.buckets:
201 raise boto.exception.StorageResponseError(404, 'NoSuchBucket', 239 raise boto.exception.StorageResponseError(
202 'no such bucket') 240 404, 'NoSuchBucket', '<Message>no such bucket</Message>')
203 del self.buckets[bucket] 241 del self.buckets[bucket]
204 242
205 def get_bucket(self, bucket_name, validate=NOT_IMPL, headers=NOT_IMPL): 243 def get_bucket(self, bucket_name, validate=NOT_IMPL, headers=NOT_IMPL):
206 if bucket_name not in self.buckets: 244 if bucket_name not in self.buckets:
207 raise boto.exception.StorageResponseError(404, 'NoSuchBucket', 245 raise boto.exception.StorageResponseError(404, 'NoSuchBucket',
208 'Not Found') 246 'Not Found')
209 return self.buckets[bucket_name] 247 return self.buckets[bucket_name]
210 248
211 def get_all_buckets(self, headers=NOT_IMPL): 249 def get_all_buckets(self, headers=NOT_IMPL):
212 return self.buckets.itervalues() 250 return self.buckets.itervalues()
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 policy=NOT_IMPL): 289 policy=NOT_IMPL):
252 return self.connect().create_bucket(self.bucket_name) 290 return self.connect().create_bucket(self.bucket_name)
253 291
254 def delete_bucket(self, headers=NOT_IMPL): 292 def delete_bucket(self, headers=NOT_IMPL):
255 return self.connect().delete_bucket(self.bucket_name) 293 return self.connect().delete_bucket(self.bucket_name)
256 294
257 def delete_key(self, validate=NOT_IMPL, headers=NOT_IMPL, 295 def delete_key(self, validate=NOT_IMPL, headers=NOT_IMPL,
258 version_id=NOT_IMPL, mfa_token=NOT_IMPL): 296 version_id=NOT_IMPL, mfa_token=NOT_IMPL):
259 self.get_bucket().delete_key(self.object_name) 297 self.get_bucket().delete_key(self.object_name)
260 298
299 def disable_logging(self, validate=NOT_IMPL, headers=NOT_IMPL,
300 version_id=NOT_IMPL):
301 self.get_bucket().disable_logging()
302
303 def enable_logging(self, target_bucket, target_prefix, canned_acl=NOT_IMPL,
304 validate=NOT_IMPL, headers=NOT_IMPL,
305 version_id=NOT_IMPL):
306 self.get_bucket().enable_logging(target_bucket)
307
261 def equals(self, uri): 308 def equals(self, uri):
262 return self.uri == uri.uri 309 return self.uri == uri.uri
263 310
264 def get_acl(self, validate=NOT_IMPL, headers=NOT_IMPL, version_id=NOT_IMPL): 311 def get_acl(self, validate=NOT_IMPL, headers=NOT_IMPL, version_id=NOT_IMPL):
265 return self.get_bucket().get_acl(self.object_name) 312 return self.get_bucket().get_acl(self.object_name)
266 313
314 def get_subresource(self, subresource, validate=NOT_IMPL, headers=NOT_IMPL,
315 version_id=NOT_IMPL):
316 return self.get_bucket().get_subresource(subresource, self.object_name)
317
267 def get_all_buckets(self, headers=NOT_IMPL): 318 def get_all_buckets(self, headers=NOT_IMPL):
268 return self.connect().get_all_buckets() 319 return self.connect().get_all_buckets()
269 320
270 def get_all_keys(self, validate=NOT_IMPL, headers=NOT_IMPL): 321 def get_all_keys(self, validate=NOT_IMPL, headers=NOT_IMPL):
271 return self.get_bucket().get_all_keys(self) 322 return self.get_bucket().get_all_keys(self)
272 323
273 def get_bucket(self, validate=NOT_IMPL, headers=NOT_IMPL): 324 def get_bucket(self, validate=NOT_IMPL, headers=NOT_IMPL):
274 return self.connect().get_bucket(self.bucket_name) 325 return self.connect().get_bucket(self.bucket_name)
275 326
276 def get_key(self, validate=NOT_IMPL, headers=NOT_IMPL, 327 def get_key(self, validate=NOT_IMPL, headers=NOT_IMPL,
(...skipping 12 matching lines...) Expand all
289 def names_singleton(self): 340 def names_singleton(self):
290 return self.object_name 341 return self.object_name
291 342
292 def new_key(self, validate=NOT_IMPL, headers=NOT_IMPL): 343 def new_key(self, validate=NOT_IMPL, headers=NOT_IMPL):
293 bucket = self.get_bucket() 344 bucket = self.get_bucket()
294 return bucket.new_key(self.object_name) 345 return bucket.new_key(self.object_name)
295 346
296 def set_acl(self, acl_or_str, key_name='', validate=NOT_IMPL, 347 def set_acl(self, acl_or_str, key_name='', validate=NOT_IMPL,
297 headers=NOT_IMPL, version_id=NOT_IMPL): 348 headers=NOT_IMPL, version_id=NOT_IMPL):
298 self.get_bucket().set_acl(acl_or_str, key_name) 349 self.get_bucket().set_acl(acl_or_str, key_name)
350
351 def set_subresource(self, subresource, value, validate=NOT_IMPL,
352 headers=NOT_IMPL, version_id=NOT_IMPL):
353 self.get_bucket().set_subresource(subresource, value, self.object_name)
OLDNEW
« no previous file with comments | « tests/s3/cb_test_harnass.py ('k') | tests/s3/other_cacerts.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698