3
# Copyright (C) 2015 Reliance Jio Infocomm Ltd
5
# Licensed under the Apache License, Version 2.0 (the "License"); you may
6
# not use this file except in compliance with the License. You may obtain
7
# a copy of the License at
9
# http://www.apache.org/licenses/LICENSE-2.0
11
# Unless required by applicable law or agreed to in writing, software
12
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
# License for the specific language governing permissions and limitations
20
from oslotest import base
22
from ceilometer.objectstore.rgw_client import RGWAdminAPIFailed
23
from ceilometer.objectstore.rgw_client import RGWAdminClient
26
RGW_ADMIN_BUCKETS = '''
33
"size_kb_actual": 16000,
42
"marker": "default.4126.1",
48
"id": "default.4126.1",
49
"pool": ".rgw.buckets",
50
"index_pool": ".rgw.buckets.index"
62
"bucket": "somefoo31",
66
"marker": "default.4126.5",
72
"id": "default.4126.5",
73
"pool": ".rgw.buckets",
74
"index_pool": ".rgw.buckets.index"
80
{ "owner": "5f7fe2d5352e466f948f49341e33d107",
83
"time": "2015-01-23 09:00:00.000000Z",
86
{ "category": "list_buckets",
91
{ "category": "stat_account",
95
"successful_ops": 1}]},
96
{ "bucket": "foodsgh",
97
"time": "2015-01-23 09:00:00.000000Z",
100
{ "category": "create_bucket",
104
"successful_ops": 1},
105
{ "category": "get_obj",
109
"successful_ops": 0},
110
{ "category": "put_obj",
112
"bytes_received": 238,
114
"successful_ops": 1}]}]}],
116
{ "user": "5f7fe2d5352e466f948f49341e33d107",
118
{ "category": "create_bucket",
122
"successful_ops": 1},
123
{ "category": "get_obj",
127
"successful_ops": 0},
128
{ "category": "list_buckets",
132
"successful_ops": 3},
133
{ "category": "put_obj",
135
"bytes_received": 238,
137
"successful_ops": 1},
138
{ "category": "stat_account",
142
"successful_ops": 1}],
143
"total": { "bytes_sent": 46,
144
"bytes_received": 238,
146
"successful_ops": 6}}]}
149
buckets_json = json.loads(RGW_ADMIN_BUCKETS)
150
usage_json = json.loads(RGW_ADMIN_USAGE)
153
class TestRGWAdminClient(base.BaseTestCase):
156
super(TestRGWAdminClient, self).setUp()
157
self.client = RGWAdminClient('http://127.0.0.1:8080/admin',
159
self.get_resp = mock.MagicMock()
160
self.get = mock.patch('requests.get',
161
return_value=self.get_resp).start()
163
def test_make_request_exception(self):
164
self.get_resp.status_code = 403
165
self.assertRaises(RGWAdminAPIFailed, self.client._make_request,
168
def test_make_request(self):
169
self.get_resp.status_code = 200
170
self.get_resp.json.return_value = buckets_json
171
actual = self.client._make_request('foo', [])
172
self.assertEqual(buckets_json, actual)
174
def test_get_buckets(self):
175
self.get_resp.status_code = 200
176
self.get_resp.json.return_value = buckets_json
177
actual = self.client.get_bucket('foo')
178
bucket_list = [RGWAdminClient.Bucket('somefoo', 1000, 1000),
179
RGWAdminClient.Bucket('somefoo31', 1, 42),
181
expected = {'num_buckets': 2, 'size': 1042, 'num_objects': 1001,
182
'buckets': bucket_list}
183
self.assertEqual(expected, actual)
185
def test_get_usage(self):
186
self.get_resp.status_code = 200
187
self.get_resp.json.return_value = usage_json
188
actual = self.client.get_usage('foo')
190
self.assertEqual(expected, actual)