43
44
self.assertEqual([], data)
47
class TestValidateUserInput(FunctionalTest,
48
tests_db.MixinTestsWithBackendScenarios):
50
def test_list_meters_query_float_metadata(self):
51
self.assertRaises(webtest.app.AppError, self.get_json,
53
q=[{'field': 'metadata.util',
57
self.assertRaises(webtest.app.AppError, self.get_json,
59
q=[{'field': 'metadata.util',
63
self.assertRaises(webtest.app.AppError, self.get_json,
65
q=[{'field': 'metadata.util',
46
71
class TestListMeters(FunctionalTest,
47
72
tests_db.MixinTestsWithBackendScenarios):
149
174
self.assertEqual(set(r['source'] for r in data),
150
175
set(['test_source', 'test_source1']))
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',
185
self.assertEqual(resp.status_code, 400)
186
self.assertEqual(jsonutils.loads(resp.body)['error_message']
188
'Unknown argument: "timestamp": '
189
'not valid for this resource')
152
191
def test_list_samples(self):
192
resp = self.get_json('/samples',
193
q=[{'field': 'search_offset',
197
self.assertEqual(resp.status_code, 400)
198
self.assertEqual(jsonutils.loads(resp.body)['error_message']
200
"Invalid input for field/attribute field. "
201
"Value: 'search_offset'. "
202
"search_offset cannot be used without timestamp")
204
def test_query_samples_with_search_offset(self):
153
205
data = self.get_json('/samples')
154
206
self.assertEqual(5, len(data))
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',
240
u'source': 'test_source',
187
241
u'user_id': u'user-id',
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,
193
247
self.assertEqual(jsonutils.loads(resp.body)['error_message']
195
249
"Sample not_exists Not Found")
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',
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)
314
369
def test_list_meters_query_string_metadata(self):
315
370
data = self.get_json('/meters/meter.test',