1
# -*- encoding: utf-8 -*-
3
# Copyright © 2012 New Dream Network, LLC (DreamHost)
5
# Author: Doug Hellmann <doug.hellmann@dreamhost.com>
7
# Licensed under the Apache License, Version 2.0 (the "License"); you may
8
# not use this file except in compliance with the License. You may obtain
9
# a copy of the License at
11
# http://www.apache.org/licenses/LICENSE-2.0
13
# Unless required by applicable law or agreed to in writing, software
14
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
# License for the specific language governing permissions and limitations
18
"""Test listing raw events.
25
from oslo.config import cfg
27
from ceilometer.publisher import rpc
28
from ceilometer import counter
30
from .base import FunctionalTest
32
LOG = logging.getLogger(__name__)
35
class TestListEvents(FunctionalTest):
38
super(TestListEvents, self).setUp()
39
self.counter1 = counter.Counter(
47
timestamp=datetime.datetime(2012, 7, 2, 10, 40),
48
resource_metadata={'display_name': 'test-server',
49
'tag': 'self.counter',
50
'ignored_dict': {'key': 'value'},
51
'ignored_list': ['not-returned'],
54
msg = rpc.meter_message_from_counter(
56
cfg.CONF.publisher_rpc.metering_secret,
59
self.conn.record_metering_data(msg)
61
self.counter2 = counter.Counter(
68
'resource-id-alternate',
69
timestamp=datetime.datetime(2012, 7, 2, 10, 41),
70
resource_metadata={'display_name': 'test-server',
71
'tag': 'self.counter2',
74
msg2 = rpc.meter_message_from_counter(
76
cfg.CONF.publisher_rpc.metering_secret,
79
self.conn.record_metering_data(msg2)
82
data = self.get_json('/meters/instance')
83
self.assertEquals(2, len(data))
85
def test_all_limit(self):
86
data = self.get_json('/meters/instance?limit=1')
87
self.assertEquals(1, len(data))
89
def test_all_limit_negative(self):
90
self.assertRaises(webtest.app.AppError,
92
'/meters/instance?limit=-2')
94
def test_all_limit_bigger(self):
95
data = self.get_json('/meters/instance?limit=42')
96
self.assertEquals(2, len(data))
98
def test_empty_project(self):
99
data = self.get_json('/meters/instance',
100
q=[{'field': 'project_id',
101
'value': 'no-such-project',
103
self.assertEquals([], data)
105
def test_by_project(self):
106
data = self.get_json('/meters/instance',
107
q=[{'field': 'project_id',
110
self.assertEquals(1, len(data))
112
def test_empty_resource(self):
113
data = self.get_json('/meters/instance',
114
q=[{'field': 'resource_id',
115
'value': 'no-such-resource',
117
self.assertEquals([], data)
119
def test_by_resource(self):
120
data = self.get_json('/meters/instance',
121
q=[{'field': 'resource_id',
122
'value': 'resource-id',
124
self.assertEquals(1, len(data))
126
def test_empty_source(self):
127
data = self.get_json('/meters/instance',
128
q=[{'field': 'source',
129
'value': 'no-such-source',
131
self.assertEquals(0, len(data))
133
def test_by_source(self):
134
data = self.get_json('/meters/instance',
135
q=[{'field': 'source',
136
'value': 'test_source',
138
self.assertEquals(1, len(data))
140
def test_empty_user(self):
141
data = self.get_json('/meters/instance',
142
q=[{'field': 'user_id',
143
'value': 'no-such-user',
145
self.assertEquals([], data)
147
def test_by_user(self):
148
data = self.get_json('/meters/instance',
149
q=[{'field': 'user_id',
152
self.assertEquals(1, len(data))
154
def test_metadata(self):
155
data = self.get_json('/meters/instance',
156
q=[{'field': 'resource_id',
157
'value': 'resource-id',
160
self.assert_('resource_metadata' in sample)
162
list(sorted(sample['resource_metadata'].iteritems())),
163
[('display_name', 'test-server'),
164
('tag', 'self.counter'),