summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSoren Hansen <soren@linux2go.dk>2011-11-10 10:41:37 +0100
committerSoren Hansen <soren@linux2go.dk>2011-11-10 13:35:40 +0100
commit6c0fd03fc3e4f30ca6d1e7d55e83d7a325fae447 (patch)
tree1ca2ca21df54fe1ebbc25edd12685865001d4e9d
parent26d2bad187ba8fab4f5e4b2f76b86f3e8762caa8 (diff)
downloadnova-6c0fd03fc3e4f30ca6d1e7d55e83d7a325fae447.tar.gz
nova-6c0fd03fc3e4f30ca6d1e7d55e83d7a325fae447.tar.xz
nova-6c0fd03fc3e4f30ca6d1e7d55e83d7a325fae447.zip
Extend fake image service to let it hold image data
Make the fake image service able to store image data in memory. This is handy for unit testing, but probably not very useful otherwise (images are pretty big, so holding them in memory is not a very good idea). Change-Id: I2d07baf24cab544e19521b9486feee3272d0407e
-rw-r--r--nova/image/fake.py8
-rw-r--r--nova/tests/test_image.py11
2 files changed, 19 insertions, 0 deletions
diff --git a/nova/image/fake.py b/nova/image/fake.py
index a51a8ecb4..43e889ad4 100644
--- a/nova/image/fake.py
+++ b/nova/image/fake.py
@@ -118,6 +118,7 @@ class _FakeImageService(object):
self.create(None, image3)
self.create(None, image4)
self.create(None, image5)
+ self._imagedata = {}
super(_FakeImageService, self).__init__()
def index(self, context, filters=None, marker=None, limit=None):
@@ -132,6 +133,11 @@ class _FakeImageService(object):
"""Return list of detailed image information."""
return copy.deepcopy(self.images.values())
+ def get(self, context, image_id, data):
+ metadata = self.show(context, image_id)
+ data.write(self._imagedata.get(image_id, ''))
+ return metadata
+
def show(self, context, image_id):
"""Get data about specified image.
@@ -164,6 +170,8 @@ class _FakeImageService(object):
if image_id in self.images:
raise exception.Duplicate()
self.images[image_id] = copy.deepcopy(metadata)
+ if data:
+ self._imagedata[image_id] = data.read()
return self.images[image_id]
def update(self, context, image_id, metadata, data=None):
diff --git a/nova/tests/test_image.py b/nova/tests/test_image.py
index 9eeefe0e5..0cb138956 100644
--- a/nova/tests/test_image.py
+++ b/nova/tests/test_image.py
@@ -16,6 +16,7 @@
# under the License.
import datetime
+import StringIO
from nova import context
from nova import exception
@@ -128,6 +129,16 @@ class _ImageTestCase(test.TestCase):
index = self.image_service.index(self.context)
self.assertEquals(len(index), 0)
+ def test_create_then_get(self):
+ blob = 'some data'
+ s1 = StringIO.StringIO(blob)
+ self.image_service.create(self.context,
+ {'id': '32', 'foo': 'bar'},
+ data=s1)
+ s2 = StringIO.StringIO()
+ self.image_service.get(self.context, '32', data=s2)
+ self.assertEquals(s2.getvalue(), blob, 'Did not get blob back intact')
+
class FakeImageTestCase(_ImageTestCase):
def setUp(self):