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

« back to all changes in this revision

Viewing changes to ceilometer/tests/api/v2/test_list_meters_scenarios.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short
  • Date: 2014-03-06 14:44:28 UTC
  • mto: (28.1.1 utopic-proposed) (1.2.1)
  • mto: This revision was merged to the branch mainline in revision 19.
  • Revision ID: package-import@ubuntu.com-20140306144428-rvphsh4igwyulzf0
Tags: upstream-2014.1~b3
ImportĀ upstreamĀ versionĀ 2014.1~b3

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
import json as jsonutils
25
25
import logging
26
26
import testscenarios
 
27
import webtest.app
27
28
 
28
29
from ceilometer.publisher import utils
29
30
from ceilometer import sample
43
44
        self.assertEqual([], data)
44
45
 
45
46
 
 
47
class TestValidateUserInput(FunctionalTest,
 
48
                            tests_db.MixinTestsWithBackendScenarios):
 
49
 
 
50
    def test_list_meters_query_float_metadata(self):
 
51
        self.assertRaises(webtest.app.AppError, self.get_json,
 
52
                          '/meters/meter.test',
 
53
                          q=[{'field': 'metadata.util',
 
54
                          'op': 'eq',
 
55
                          'value': '0.7.5',
 
56
                          'type': 'float'}])
 
57
        self.assertRaises(webtest.app.AppError, self.get_json,
 
58
                          '/meters/meter.test',
 
59
                          q=[{'field': 'metadata.util',
 
60
                          'op': 'eq',
 
61
                          'value': 'abacaba',
 
62
                          'type': 'boolean'}])
 
63
        self.assertRaises(webtest.app.AppError, self.get_json,
 
64
                          '/meters/meter.test',
 
65
                          q=[{'field': 'metadata.util',
 
66
                          'op': 'eq',
 
67
                          'value': '45.765',
 
68
                          'type': 'integer'}])
 
69
 
 
70
 
46
71
class TestListMeters(FunctionalTest,
47
72
                     tests_db.MixinTestsWithBackendScenarios):
48
73
 
149
174
        self.assertEqual(set(r['source'] for r in data),
150
175
                         set(['test_source', 'test_source1']))
151
176
 
 
177
    def test_meters_query_with_timestamp(self):
 
178
        date_time = datetime.datetime(2012, 7, 2, 10, 41)
 
179
        isotime = date_time.isoformat()
 
180
        resp = self.get_json('/meters',
 
181
                             q=[{'field': 'timestamp',
 
182
                                 'op': 'gt',
 
183
                                 'value': isotime}],
 
184
                             expect_errors=True)
 
185
        self.assertEqual(resp.status_code, 400)
 
186
        self.assertEqual(jsonutils.loads(resp.body)['error_message']
 
187
                         ['faultstring'],
 
188
                         'Unknown argument: "timestamp": '
 
189
                         'not valid for this resource')
 
190
 
152
191
    def test_list_samples(self):
 
192
        resp = self.get_json('/samples',
 
193
                             q=[{'field': 'search_offset',
 
194
                                 'op': 'eq',
 
195
                                 'value': 42}],
 
196
                             expect_errors=True)
 
197
        self.assertEqual(resp.status_code, 400)
 
198
        self.assertEqual(jsonutils.loads(resp.body)['error_message']
 
199
                         ['faultstring'],
 
200
                         "Invalid input for field/attribute field. "
 
201
                         "Value: 'search_offset'. "
 
202
                         "search_offset cannot be used without timestamp")
 
203
 
 
204
    def test_query_samples_with_search_offset(self):
153
205
        data = self.get_json('/samples')
154
206
        self.assertEqual(5, len(data))
155
207
 
171
223
        sample_id = self.messages[1]['message_id']
172
224
        data = self.get_json('/samples/%s' % sample_id)
173
225
        self.assertIn('id', data)
 
226
        del data['recorded_at']
174
227
        self.assertEqual(data, {
175
228
            u'id': sample_id,
176
229
            u'metadata': {u'display_name': u'test-server',
184
237
            u'timestamp': u'2012-07-02T11:40:00',
185
238
            u'type': u'cumulative',
186
239
            u'unit': u'',
 
240
            u'source': 'test_source',
187
241
            u'user_id': u'user-id',
188
242
            u'volume': 3.0})
189
243
 
190
244
    def test_get_not_existing_sample(self):
191
 
        resp = self.get_json('/samples/not_exists', expect_errors=True)
192
 
        self.assertEqual(resp.status_code, 404)
 
245
        resp = self.get_json('/samples/not_exists', expect_errors=True,
 
246
                             status=404)
193
247
        self.assertEqual(jsonutils.loads(resp.body)['error_message']
194
248
                         ['faultstring'],
195
249
                         "Sample not_exists Not Found")
203
257
                                 }])
204
258
        self.assertIn('id', data[0])
205
259
        del data[0]['id']  # Randomly generated
 
260
        del data[0]['recorded_at']
206
261
        self.assertEqual(data, [{
207
262
            u'user_id': u'user-id4',
208
263
            u'resource_id': u'resource-id4',
212
267
            u'project_id': u'project-id2',
213
268
            u'type': u'gauge',
214
269
            u'unit': u'',
 
270
            u'source': u'test_source1',
215
271
            u'metadata': {u'display_name': u'test-server',
216
272
                          u'properties.prop_2:sub_prop_1': u'sub_prop_value',
217
273
                          u'util': u'0.58',
309
365
                         set(['meter.mine']))
310
366
        self.assertEqual(set(r['resource_metadata']['is_public'] for r
311
367
                             in data), set(['False']))
312
 
        # FIXME(gordc): verify no false positive (Bug#1236496)
313
368
 
314
369
    def test_list_meters_query_string_metadata(self):
315
370
        data = self.get_json('/meters/meter.test',