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

Unified Diff: tools/telemetry/third_party/gsutil/gslib/tests/mock_cloud_api.py

Issue 1260493004: Revert "Add gsutil 4.13 to telemetry/third_party" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
Index: tools/telemetry/third_party/gsutil/gslib/tests/mock_cloud_api.py
diff --git a/tools/telemetry/third_party/gsutil/gslib/tests/mock_cloud_api.py b/tools/telemetry/third_party/gsutil/gslib/tests/mock_cloud_api.py
deleted file mode 100644
index d1cee12cfc6370a956cdfc59c736026e54d77aa7..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/gsutil/gslib/tests/mock_cloud_api.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright 2014 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""Implements a simple mock gsutil Cloud API for unit testing.
-
-gsutil 4 was primarily unit-tested using boto/gsutil 3's mock storage_uri class,
-since it was possible that changing out the underlying mocks would have had
-subtly different behavior and increased the risk of breaking back-compat.
-
-Most unit and integration tests in gsutil 4 still set up the test objects with
-storage_uris and boto, and the unit tests interact with test objects via
-storage uris and boto.
-
-This testing approach ties our tests heavily to boto; extending the
-boto mocks is difficult because it requires checking into boto. This also
-makes the unit test coverage boto-specific in several cases.
-
-MockCloudApi was initially written to cover some parallel composite upload
-cases that the boto mocks couldn't handle. It is not yet a full implementation.
-Eventually, we can move to full a mock Cloud API implementation. However, we
-need to ensure we don't lose boto coverage from mock storage_uri.
-"""
-
-
-from gslib.cloud_api import ServiceException
-from gslib.third_party.storage_apitools import storage_v1_messages as apitools_messages
-from gslib.translation_helper import CreateBucketNotFoundException
-from gslib.translation_helper import CreateObjectNotFoundException
-
-
-class MockObject(object):
- """Defines a mock cloud storage provider object."""
-
- def __init__(self, root_object, contents=''):
- self.root_object = root_object
- self.contents = contents
-
- def __str__(self):
- return '%s/%s#%s' % (self.root_object.bucket,
- self.root_object.name,
- self.root_object.generation)
-
- def __repr__(self):
- return str(self)
-
-
-class MockBucket(object):
- """Defines a mock cloud storage provider bucket."""
-
- def __init__(self, bucket_name, versioned=False):
- self.root_object = apitools_messages.Bucket(
- name=bucket_name,
- versioning=apitools_messages.Bucket.VersioningValue(enabled=versioned))
- # Dict of object_name: (dict of 'live': MockObject
- # 'versioned': ordered list of MockObject).
- self.objects = {}
-
- def CreateObject(self, object_name, contents=''):
- return self.CreateObjectWithMetadata(MockObject(
- apitools_messages.Object(name=object_name, contents=contents)))
-
- def CreateObjectWithMetadata(self, apitools_object, contents=''):
- """Creates an object in the bucket according to the input metadata.
-
- This will create a new object version (ignoring the generation specified
- in the input object).
-
- Args:
- apitools_object: apitools Object.
- contents: optional object contents.
-
- Returns:
- apitools Object representing created object.
- """
- # This modifies the apitools_object with a generation number.
- object_name = apitools_object.name
- if (self.root_object.versioning and self.root_object.versioning.enabled and
- apitools_object.name in self.objects):
- if 'live' in self.objects[object_name]:
- # Versioning enabled and object exists, create an object with a
- # generation 1 higher.
- apitools_object.generation = (
- self.objects[object_name]['live'].root_object.generation + 1)
- # Move the live object to versioned.
- if 'versioned' not in self.objects[object_name]:
- self.objects[object_name]['versioned'] = []
- self.objects[object_name]['versioned'].append(
- self.objects[object_name]['live'])
- elif ('versioned' in self.objects[object_name] and
- self.objects[object_name]['versioned']):
- # Versioning enabled but only archived objects exist, pick a generation
- # higher than the highest versioned object (which will be at the end).
- apitools_object.generation = (
- self.objects[object_name]['versioned'][-1].root_object.generation
- + 1)
- else:
- # Versioning disabled or no objects exist yet with this name.
- apitools_object.generation = 1
- self.objects[object_name] = {}
- new_object = MockObject(apitools_object, contents=contents)
- self.objects[object_name]['live'] = new_object
- return new_object
-
-
-class MockCloudApi(object):
- """Simple mock service for buckets/objects that implements Cloud API.
-
- Also includes some setup functions for tests.
- """
-
- def __init__(self, provider='gs'):
- self.buckets = {}
- self.provider = provider
-
- def MockCreateBucket(self, bucket_name):
- """Creates a simple bucket without exercising the API directly."""
- if bucket_name in self.buckets:
- raise ServiceException('Bucket %s already exists.' % bucket_name,
- status=409)
- self.buckets[bucket_name] = MockBucket(bucket_name)
-
- def MockCreateVersionedBucket(self, bucket_name):
- """Creates a simple bucket without exercising the API directly."""
- if bucket_name in self.buckets:
- raise ServiceException('Bucket %s already exists.' % bucket_name,
- status=409)
- self.buckets[bucket_name] = MockBucket(bucket_name, versioned=True)
-
- def MockCreateObject(self, bucket_name, object_name, contents=''):
- """Creates an object without exercising the API directly."""
- if bucket_name not in self.buckets:
- self.MockCreateBucket(bucket_name)
- self.buckets[bucket_name].CreateObject(object_name, contents=contents)
-
- def MockCreateObjectWithMetadata(self, apitools_object, contents=''):
- """Creates an object without exercising the API directly."""
- assert apitools_object.bucket, 'No bucket specified for mock object'
- assert apitools_object.name, 'No object name specified for mock object'
- if apitools_object.bucket not in self.buckets:
- self.MockCreateBucket(apitools_object.bucket)
- return self.buckets[apitools_object.bucket].CreateObjectWithMetadata(
- apitools_object, contents=contents).root_object
-
- # pylint: disable=unused-argument
- def GetObjectMetadata(self, bucket_name, object_name, generation=None,
- provider=None, fields=None):
- """See CloudApi class for function doc strings."""
- if generation:
- generation = long(generation)
- if bucket_name in self.buckets:
- bucket = self.buckets[bucket_name]
- if object_name in bucket.objects and bucket.objects[object_name]:
- if generation:
- if 'versioned' in bucket.objects[object_name]:
- for obj in bucket.objects[object_name]['versioned']:
- if obj.root_object.generation == generation:
- return obj.root_object
- if 'live' in bucket.objects[object_name]:
- if (bucket.objects[object_name]['live'].root_object.generation ==
- generation):
- return bucket.objects[object_name]['live'].root_object
- else:
- # Return live object.
- if 'live' in bucket.objects[object_name]:
- return bucket.objects[object_name]['live'].root_object
- raise CreateObjectNotFoundException(404, self.provider, bucket_name,
- object_name)
- raise CreateBucketNotFoundException(404, self.provider, bucket_name)

Powered by Google App Engine
This is Rietveld 408576698