~ubuntu-branches/ubuntu/vivid/ceilometer/vivid-proposed

« back to all changes in this revision

Viewing changes to ceilometer/tests/objectstore/test_rgw_client.py

  • Committer: Package Import Robot
  • Author(s): James Page, James Page, Corey Bryant
  • Date: 2015-03-30 11:06:18 UTC
  • mfrom: (1.2.4)
  • Revision ID: package-import@ubuntu.com-20150330110618-e2tv3bmga3lmun41
Tags: 2015.1~b3-0ubuntu1
[ James Page ]
* d/pydist-overrides: Add overrides for oslo packages.
* d/p/disable-kafka.patch: Disable requirement for Apache Kafka for Ubuntu
  Vivid release.
* d/control: Fixup minor typos in package descriptions (LP: #1256279).

[ Corey Bryant ]
* New upstream milestone release for OpenStack kilo:
  - d/control: Align with upstream dependencies.
  - d/p/skip-test.patch: Rebased.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
#
 
3
# Copyright (C) 2015 Reliance Jio Infocomm Ltd
 
4
#
 
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
 
8
#
 
9
#      http://www.apache.org/licenses/LICENSE-2.0
 
10
#
 
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
 
15
# under the License.
 
16
 
 
17
import json
 
18
 
 
19
import mock
 
20
from oslotest import base
 
21
 
 
22
from ceilometer.objectstore.rgw_client import RGWAdminAPIFailed
 
23
from ceilometer.objectstore.rgw_client import RGWAdminClient
 
24
 
 
25
 
 
26
RGW_ADMIN_BUCKETS = '''
 
27
[
 
28
  {
 
29
    "max_marker": "",
 
30
    "ver": 2001,
 
31
    "usage": {
 
32
      "rgw.main": {
 
33
        "size_kb_actual": 16000,
 
34
        "num_objects": 1000,
 
35
        "size_kb": 1000
 
36
      }
 
37
    },
 
38
    "bucket": "somefoo",
 
39
    "owner": "admin",
 
40
    "master_ver": 0,
 
41
    "mtime": 1420176126,
 
42
    "marker": "default.4126.1",
 
43
    "bucket_quota": {
 
44
      "max_objects": -1,
 
45
      "enabled": false,
 
46
      "max_size_kb": -1
 
47
    },
 
48
    "id": "default.4126.1",
 
49
    "pool": ".rgw.buckets",
 
50
    "index_pool": ".rgw.buckets.index"
 
51
  },
 
52
  {
 
53
    "max_marker": "",
 
54
    "ver": 3,
 
55
    "usage": {
 
56
      "rgw.main": {
 
57
        "size_kb_actual": 43,
 
58
        "num_objects": 1,
 
59
        "size_kb": 42
 
60
      }
 
61
    },
 
62
    "bucket": "somefoo31",
 
63
    "owner": "admin",
 
64
    "master_ver": 0,
 
65
    "mtime": 1420176134,
 
66
    "marker": "default.4126.5",
 
67
    "bucket_quota": {
 
68
      "max_objects": -1,
 
69
      "enabled": false,
 
70
      "max_size_kb": -1
 
71
    },
 
72
    "id": "default.4126.5",
 
73
    "pool": ".rgw.buckets",
 
74
    "index_pool": ".rgw.buckets.index"
 
75
  }
 
76
]'''
 
77
 
 
78
RGW_ADMIN_USAGE = '''
 
79
{ "entries": [
 
80
        { "owner": "5f7fe2d5352e466f948f49341e33d107",
 
81
          "buckets": [
 
82
                { "bucket": "",
 
83
                  "time": "2015-01-23 09:00:00.000000Z",
 
84
                  "epoch": 1422003600,
 
85
                  "categories": [
 
86
                        { "category": "list_buckets",
 
87
                          "bytes_sent": 46,
 
88
                          "bytes_received": 0,
 
89
                          "ops": 3,
 
90
                          "successful_ops": 3},
 
91
                        { "category": "stat_account",
 
92
                          "bytes_sent": 0,
 
93
                          "bytes_received": 0,
 
94
                          "ops": 1,
 
95
                          "successful_ops": 1}]},
 
96
                { "bucket": "foodsgh",
 
97
                  "time": "2015-01-23 09:00:00.000000Z",
 
98
                  "epoch": 1422003600,
 
99
                  "categories": [
 
100
                        { "category": "create_bucket",
 
101
                          "bytes_sent": 0,
 
102
                          "bytes_received": 0,
 
103
                          "ops": 1,
 
104
                          "successful_ops": 1},
 
105
                        { "category": "get_obj",
 
106
                          "bytes_sent": 0,
 
107
                          "bytes_received": 0,
 
108
                          "ops": 1,
 
109
                          "successful_ops": 0},
 
110
                        { "category": "put_obj",
 
111
                          "bytes_sent": 0,
 
112
                          "bytes_received": 238,
 
113
                          "ops": 1,
 
114
                          "successful_ops": 1}]}]}],
 
115
  "summary": [
 
116
        { "user": "5f7fe2d5352e466f948f49341e33d107",
 
117
          "categories": [
 
118
                { "category": "create_bucket",
 
119
                  "bytes_sent": 0,
 
120
                  "bytes_received": 0,
 
121
                  "ops": 1,
 
122
                  "successful_ops": 1},
 
123
                { "category": "get_obj",
 
124
                  "bytes_sent": 0,
 
125
                  "bytes_received": 0,
 
126
                  "ops": 1,
 
127
                  "successful_ops": 0},
 
128
                { "category": "list_buckets",
 
129
                  "bytes_sent": 46,
 
130
                  "bytes_received": 0,
 
131
                  "ops": 3,
 
132
                  "successful_ops": 3},
 
133
                { "category": "put_obj",
 
134
                  "bytes_sent": 0,
 
135
                  "bytes_received": 238,
 
136
                  "ops": 1,
 
137
                  "successful_ops": 1},
 
138
                { "category": "stat_account",
 
139
                  "bytes_sent": 0,
 
140
                  "bytes_received": 0,
 
141
                  "ops": 1,
 
142
                  "successful_ops": 1}],
 
143
          "total": { "bytes_sent": 46,
 
144
              "bytes_received": 238,
 
145
              "ops": 7,
 
146
              "successful_ops": 6}}]}
 
147
'''
 
148
 
 
149
buckets_json = json.loads(RGW_ADMIN_BUCKETS)
 
150
usage_json = json.loads(RGW_ADMIN_USAGE)
 
151
 
 
152
 
 
153
class TestRGWAdminClient(base.BaseTestCase):
 
154
 
 
155
    def setUp(self):
 
156
        super(TestRGWAdminClient, self).setUp()
 
157
        self.client = RGWAdminClient('http://127.0.0.1:8080/admin',
 
158
                                     'abcde', 'secret')
 
159
        self.get_resp = mock.MagicMock()
 
160
        self.get = mock.patch('requests.get',
 
161
                              return_value=self.get_resp).start()
 
162
 
 
163
    def test_make_request_exception(self):
 
164
        self.get_resp.status_code = 403
 
165
        self.assertRaises(RGWAdminAPIFailed, self.client._make_request,
 
166
                          *('foo', {}))
 
167
 
 
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)
 
173
 
 
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),
 
180
                       ]
 
181
        expected = {'num_buckets': 2, 'size': 1042, 'num_objects': 1001,
 
182
                    'buckets': bucket_list}
 
183
        self.assertEqual(expected, actual)
 
184
 
 
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')
 
189
        expected = 7
 
190
        self.assertEqual(expected, actual)