Пример #1
0
    def test_list_many_volumes(self):
        app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
        for i in range(3):
            volume_id = 'vol%s' % (i + 1)
            req = Request.blank('/volumes/%s?size=0' % volume_id, method='PUT')
            app(req)

        req = Request.blank('/volumes')
        resp = app(req)
        self.assertEquals(resp.status_int // 100, 2)
        info = json.loads(resp.body)
        expected = [
            {
                'id': 'vol1',
                'size': 0,
                'device_number': 9000
            },
            {
                'id': 'vol2',
                'size': 0,
                'device_number': 9000
            },
            {
                'id': 'vol3',
                'size': 0,
                'device_number': 9000
            },
        ]
        for volume in info:
            self.assert_(volume in expected)
        self.assertEquals(len(info), len(expected))
Пример #2
0
 def test_list_empty_volumes(self):
     app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
     req = Request.blank('/volumes')
     resp = app(req)
     info = json.loads(resp.body)
     self.assertEquals(resp.status_int // 100, 2)
     self.assertEquals(info, [])
Пример #3
0
    def setUp(self):
        self.origISCSIDevice = volume.ISCSIDevice
        volume.ISCSIDevice = MockISCSIDevice
        super(WsgiTestBase, self).setUp()
        super(BaseHelper, self).setUp()
        self.app = StorageWsgiApp(self.conf, urlmap)

        def fake_node_request(*args, **kwargs):
            pass

        self.app.helper.node_request = fake_node_request

        def fake_api_request(*args, **kwargs):
            pass

        self.app.helper.make_api_request = fake_api_request

        def fake_scrub(snapshot, volume):
            pass

        self.app.helper.volumes.scrub.scrub_snapshot = fake_scrub

        self.lock = MockResourceLock()
        self.sourcevol_id = 'sourcevol'
        self.sourcevol = self.app.helper.volumes.create(self.sourcevol_id,
                                                        lock=self.lock)
Пример #4
0
 def test_create_volume_with_invalid_size(self):
     app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
     req = Request.blank('/volumes/vol1',
                         method='PUT',
                         content_type='application/x-www-form-urlencoded',
                         body=urlencode({'size': 'X'}))
     resp = app(req)
     self.assertEquals(resp.status_int // 100, 4)
Пример #5
0
    def setUp(self):
        super(WsgiTestBase, self).setUp()
        super(BaseHelper, self).setUp()
        self.app = StorageWsgiApp(self.conf, urlmap)
        self.app.helper.cgroups = MockCgroupHelper()

        def mock_api_request(*args, **kwargs):
            pass
        self.app.helper.make_api_request = mock_api_request
Пример #6
0
 def test_status_helper_not_found(self):
     urlmap = Mapper()
     urlmap.connect('/status/{helper_type}',
                    controller=StatusController,
                    action='show')
     self.app = StorageWsgiApp(self.test_conf, urlmap, MockHelper())
     resp = self.request('/status/volumes')
     self.assertEquals(resp.code, 200)
     resp = self.request('/status/volume')  # no trailing s
     self.assertEquals(resp.code, 404)
Пример #7
0
 def test_invalid_method_on_volumes_collection(self):
     app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
     req = Request.blank('/volumes', method='PUT')
     resp = app(req)
     self.assertEquals(resp.status_int, 405)
     req = Request.blank('/volumes', method='POST')
     resp = app(req)
     self.assertEquals(resp.status_int, 405)
     req = Request.blank('/volumes', method='DELETE')
     resp = app(req)
     self.assertEquals(resp.status_int, 405)
Пример #8
0
 def test_create_volume(self):
     app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
     req = Request.blank('/volumes/vol1?size=0', method='PUT')
     resp = app(req)
     expected = {
         'id': 'vol1',
         'size': 0,
         'device_number': 9000,
         'status': 'ACTIVE',
     }
     self.assertEquals(resp.status_int // 100, 2)
     info = json.loads(resp.body)
     self.assertEquals(info, expected)
Пример #9
0
    def setUp(self):
        super(WsgiTestBase, self).setUp()
        super(BaseHelper, self).setUp()
        self.app = StorageWsgiApp(self.conf, urlmap)

        def fake_api_request(*args, **kwargs):
            pass

        self.app.helper.make_api_request = fake_api_request
        self.lock = MockResourceLock()
        self.volume1_id = str(uuid4())
        self.volume1 = self.app.helper.volumes.create(self.volume1_id,
                                                      lock=self.lock)
Пример #10
0
    def test_status_mixed_results(self):
        class MixedHelper(MockHelper):
            def api_status(self):
                raise ServiceUnavaiable('can not contact api server')

        self.app = StorageWsgiApp(self.test_conf, urlmap, MixedHelper())
        resp = self.request('/status')
        self.assertEquals(resp.code // 100, 5)
        self.assert_('can not contact' not in resp.body['reason'])
        resp = self.request('/status/api')
        self.assertEquals(resp.code // 100, 5)
        self.assert_('can not contact' not in resp.body['reason'])
        resp = self.request('/status/volumes')
        self.assertEquals(resp.code // 100, 2)
        self.assertEquals(resp.body, {'volumes_status': 'OK'})
Пример #11
0
    def test_status_mixed_helper_results(self):
        class MixedHelper(MockHelper):
            def __init__(self):
                super(MixedHelper, self).__init__()
                self.volumes = ExplodingVolumeHelper()

        self.app = StorageWsgiApp(self.test_conf, urlmap, MixedHelper())
        resp = self.request('/status')
        self.assertEquals(resp.code // 100, 5)
        self.assert_('volumes are not configured' in resp.body['reason'])
        resp = self.request('/status/api')
        self.assertEquals(resp.code // 100, 2)
        self.assertEquals(resp.body, {'api_status': 'OK'})
        resp = self.request('/status/volumes')
        self.assertEquals(resp.code // 100, 5)
        self.assert_('volumes are not configured' in resp.body['reason'])
Пример #12
0
 def test_status(self):
     self.app = StorageWsgiApp(self.test_conf, urlmap, MockHelper())
     resp = self.request('/status')
     self.assertEquals(resp.code // 100, 2)
     expected = {
         'api': {
             'api_status': 'OK'
         },
         'volumes': {
             'volumes_status': 'OK'
         },
         'exports': {
             'exports_status': 'OK'
         },
         'backups': {
             'backups_status': 'OK'
         },
     }
     self.assertEquals(resp.body, expected)
Пример #13
0
 def test_status_conf(self):
     self.app = StorageWsgiApp(self.test_conf, urlmap, MockHelper())
     resp = self.request('/status/conf')
     self.assertEquals(resp.code // 100, 2)
     self.assertEquals(resp.body, self.test_conf.values)
Пример #14
0
 def test_status_helper_route_not_found(self):
     self.app = StorageWsgiApp(self.test_conf, urlmap, MockHelper())
     resp = self.request('/status/volume')  # no trailing s
     self.assertEquals(resp.code, 404)
Пример #15
0
 def test_status_unhandled_error(self):
     self.app = StorageWsgiApp(self.test_conf, urlmap, BadHelper())
     resp = self.request('/status')
     self.assertEquals(resp.code // 100, 5)
     self.assert_(
         'Something unexpected happened' not in resp.body['reason'])
Пример #16
0
 def test_status_unavailable(self):
     self.app = StorageWsgiApp(self.test_conf, urlmap, ExplodingHelper())
     resp = self.request('/status')
     self.assertEquals(resp.code // 100, 5)
     self.assert_('not configured' in resp.body['reason'])
Пример #17
0
 def test_backup_status(self):
     self.app = StorageWsgiApp(self.test_conf, urlmap, MockHelper())
     resp = self.request('/status/backups')
     self.assertEquals(resp.code // 100, 2)
     self.assertEquals(resp.body, {'backups_status': 'OK'})
Пример #18
0
 def test_update_volume(self):
     app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
     req = Request.blank('/volumes', method='POST')
     resp = app(req)
     self.assertEquals(resp.status_int, 405)
Пример #19
0
 def test_delete_volume_not_found(self):
     app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
     req = Request.blank('/volumes/vol1', method='DELETE')
     resp = app(req)
     self.assertEquals(resp.status_int, 404)
Пример #20
0
 def test_invalid_path_not_found(self):
     app = StorageWsgiApp(self.conf, urlmap, helper=self.mock_helper)
     req = Request.blank('//')
     resp = app(req)
     self.assertEquals(resp.status_int, 404)