436c256955
Clean up already received data from backend store to prevent potential leaking when driver receiving image occurs error such as ImageSizeLimitExceeded exception. Fixes bug: 1214276 Change-Id: Ice1de4d1c61a62fff778acbbeb9bc27d03ed7ab4 Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
# Copyright 2013 OpenStack Foundation
|
|
# 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.
|
|
|
|
import StringIO
|
|
|
|
import stubout
|
|
|
|
from glance.common import exception
|
|
from glance.common import utils
|
|
from glance.openstack.common import processutils
|
|
import glance.store.sheepdog
|
|
from glance.store.sheepdog import Store
|
|
from glance.tests.unit import base
|
|
|
|
|
|
SHEEPDOG_CONF = {'verbose': True,
|
|
'debug': True,
|
|
'default_store': 'sheepdog'}
|
|
|
|
|
|
class TestStore(base.StoreClearingUnitTest):
|
|
def setUp(self):
|
|
"""Establish a clean test environment"""
|
|
def _fake_execute(*cmd, **kwargs):
|
|
pass
|
|
|
|
self.config(**SHEEPDOG_CONF)
|
|
super(TestStore, self).setUp()
|
|
self.stubs = stubout.StubOutForTesting()
|
|
self.stubs.Set(processutils, 'execute', _fake_execute)
|
|
self.store = Store()
|
|
self.addCleanup(self.stubs.UnsetAll)
|
|
|
|
def test_cleanup_when_add_image_exception(self):
|
|
called_commands = []
|
|
|
|
def _fake_run_command(self, command, data, *params):
|
|
called_commands.append(command)
|
|
|
|
self.stubs.Set(glance.store.sheepdog.SheepdogImage,
|
|
'_run_command', _fake_run_command)
|
|
|
|
self.assertRaises(exception.ImageSizeLimitExceeded,
|
|
self.store.add,
|
|
'fake_image_id',
|
|
utils.LimitingReader(StringIO.StringIO('xx'), 1),
|
|
2)
|
|
self.assertEqual(called_commands, ['list -r', 'create', 'delete'])
|