~ubuntu-branches/ubuntu/trusty/ceilometer/trusty-proposed

« back to all changes in this revision

Viewing changes to ceilometer/tests/compute/notifications/test_instance.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short, James Page, Chuck Short
  • Date: 2014-01-23 15:08:11 UTC
  • mfrom: (1.1.11)
  • Revision ID: package-import@ubuntu.com-20140123150811-1zaismsuyh1hcl8y
Tags: 2014.1~b2-0ubuntu1
[ James Page ]
* d/control: Add python-jsonpath-rw to BD's.
* d/p/fix-setup-requirements.patch: Bump WebOb to support < 1.4.
 (LP: #1261101)

[ Chuck Short ]
* New upstream version.
* debian/control, debian/ceilometer-common.install: Split out
  ceilometer-alarm-evaluator and ceilometer-alarm-notifier into their
  own packages. (LP: #1250002)
* debian/ceilometer-agent-central.logrotate,
  debian/ceilometer-agent-compute.logrotate,
  debian/ceilometer-api.logrotate,
  debian/ceilometer-collector.logrotate: Add logrotate files, 
  thanks to Ahmed Rahal. (LP: #1224223)
* Fix typos in upstart files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- encoding: utf-8 -*-
 
2
#
 
3
# Copyright © 2012 New Dream Network, LLC (DreamHost)
 
4
# Copyright © 2013 eNovance
 
5
#
 
6
# Author: Doug Hellmann <doug.hellmann@dreamhost.com>
 
7
#         Julien Danjou <julien@danjou.info>
 
8
#
 
9
# Licensed under the Apache License, Version 2.0 (the "License"); you may
 
10
# not use this file except in compliance with the License. You may obtain
 
11
# a copy of the License at
 
12
#
 
13
#      http://www.apache.org/licenses/LICENSE-2.0
 
14
#
 
15
# Unless required by applicable law or agreed to in writing, software
 
16
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 
17
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 
18
# License for the specific language governing permissions and limitations
 
19
# under the License.
 
20
"""Tests for converters for producing compute counter messages from
 
21
notification events.
 
22
"""
 
23
 
 
24
from ceilometer.compute.notifications import instance
 
25
from ceilometer.openstack.common import test
 
26
from ceilometer import sample
 
27
 
 
28
 
 
29
INSTANCE_CREATE_END = {
 
30
    u'_context_auth_token': u'3d8b13de1b7d499587dfc69b77dc09c2',
 
31
    u'_context_is_admin': True,
 
32
    u'_context_project_id': u'7c150a59fe714e6f9263774af9688f0e',
 
33
    u'_context_quota_class': None,
 
34
    u'_context_read_deleted': u'no',
 
35
    u'_context_remote_address': u'10.0.2.15',
 
36
    u'_context_request_id': u'req-d68b36e0-9233-467f-9afb-d81435d64d66',
 
37
    u'_context_roles': [u'admin'],
 
38
    u'_context_timestamp': u'2012-05-08T20:23:41.425105',
 
39
    u'_context_user_id': u'1e3ce043029547f1a61c1996d1a531a2',
 
40
    u'event_type': u'compute.instance.create.end',
 
41
    u'message_id': u'dae6f69c-00e0-41c0-b371-41ec3b7f4451',
 
42
    u'payload': {u'created_at': u'2012-05-08 20:23:41',
 
43
                 u'deleted_at': u'',
 
44
                 u'disk_gb': 0,
 
45
                 u'display_name': u'testme',
 
46
                 u'fixed_ips': [{u'address': u'10.0.0.2',
 
47
                                 u'floating_ips': [],
 
48
                                 u'meta': {},
 
49
                                 u'type': u'fixed',
 
50
                                 u'version': 4}],
 
51
                 u'image_ref_url': u'http://10.0.2.15:9292/images/UUID',
 
52
                 u'instance_id': u'9f9d01b9-4a58-4271-9e27-398b21ab20d1',
 
53
                 u'instance_type': u'm1.tiny',
 
54
                 u'instance_type_id': 2,
 
55
                 u'launched_at': u'2012-05-08 20:23:47.985999',
 
56
                 u'memory_mb': 512,
 
57
                 u'state': u'active',
 
58
                 u'state_description': u'',
 
59
                 u'tenant_id': u'7c150a59fe714e6f9263774af9688f0e',
 
60
                 u'user_id': u'1e3ce043029547f1a61c1996d1a531a2',
 
61
                 u'reservation_id': u'1e3ce043029547f1a61c1996d1a531a3',
 
62
                 u'vcpus': 1,
 
63
                 u'root_gb': 0,
 
64
                 u'ephemeral_gb': 0,
 
65
                 u'host': u'compute-host-name',
 
66
                 u'availability_zone': u'1e3ce043029547f1a61c1996d1a531a4',
 
67
                 u'os_type': u'linux?',
 
68
                 u'architecture': u'x86',
 
69
                 u'image_ref': u'UUID',
 
70
                 u'kernel_id': u'1e3ce043029547f1a61c1996d1a531a5',
 
71
                 u'ramdisk_id': u'1e3ce043029547f1a61c1996d1a531a6',
 
72
                 },
 
73
    u'priority': u'INFO',
 
74
    u'publisher_id': u'compute.vagrant-precise',
 
75
    u'timestamp': u'2012-05-08 20:23:48.028195',
 
76
}
 
77
 
 
78
INSTANCE_DELETE_START = {
 
79
    u'_context_auth_token': u'3d8b13de1b7d499587dfc69b77dc09c2',
 
80
    u'_context_is_admin': True,
 
81
    u'_context_project_id': u'7c150a59fe714e6f9263774af9688f0e',
 
82
    u'_context_quota_class': None,
 
83
    u'_context_read_deleted': u'no',
 
84
    u'_context_remote_address': u'10.0.2.15',
 
85
    u'_context_request_id': u'req-fb3c4546-a2e5-49b7-9fd2-a63bd658bc39',
 
86
    u'_context_roles': [u'admin'],
 
87
    u'_context_timestamp': u'2012-05-08T20:24:14.547374',
 
88
    u'_context_user_id': u'1e3ce043029547f1a61c1996d1a531a2',
 
89
    u'event_type': u'compute.instance.delete.start',
 
90
    u'message_id': u'a15b94ee-cb8e-4c71-9abe-14aa80055fb4',
 
91
    u'payload': {u'created_at': u'2012-05-08 20:23:41',
 
92
                 u'deleted_at': u'',
 
93
                 u'disk_gb': 0,
 
94
                 u'display_name': u'testme',
 
95
                 u'image_ref_url': u'http://10.0.2.15:9292/images/UUID',
 
96
                 u'instance_id': u'9f9d01b9-4a58-4271-9e27-398b21ab20d1',
 
97
                 u'instance_type': u'm1.tiny',
 
98
                 u'instance_type_id': 2,
 
99
                 u'launched_at': u'2012-05-08 20:23:47',
 
100
                 u'memory_mb': 512,
 
101
                 u'state': u'active',
 
102
                 u'state_description': u'deleting',
 
103
                 u'tenant_id': u'7c150a59fe714e6f9263774af9688f0e',
 
104
                 u'user_id': u'1e3ce043029547f1a61c1996d1a531a2',
 
105
                 u'reservation_id': u'1e3ce043029547f1a61c1996d1a531a3',
 
106
                 u'vcpus': 1,
 
107
                 u'root_gb': 0,
 
108
                 u'ephemeral_gb': 0,
 
109
                 u'host': u'compute-host-name',
 
110
                 u'availability_zone': u'1e3ce043029547f1a61c1996d1a531a4',
 
111
                 u'os_type': u'linux?',
 
112
                 u'architecture': u'x86',
 
113
                 u'image_ref': u'UUID',
 
114
                 u'kernel_id': u'1e3ce043029547f1a61c1996d1a531a5',
 
115
                 u'ramdisk_id': u'1e3ce043029547f1a61c1996d1a531a6',
 
116
                 },
 
117
    u'priority': u'INFO',
 
118
    u'publisher_id': u'compute.vagrant-precise',
 
119
    u'timestamp': u'2012-05-08 20:24:14.824743',
 
120
}
 
121
 
 
122
INSTANCE_EXISTS = {
 
123
    u'_context_auth_token': None,
 
124
    u'_context_is_admin': True,
 
125
    u'_context_project_id': None,
 
126
    u'_context_quota_class': None,
 
127
    u'_context_read_deleted': u'no',
 
128
    u'_context_remote_address': None,
 
129
    u'_context_request_id': u'req-659a8eb2-4372-4c01-9028-ad6e40b0ed22',
 
130
    u'_context_roles': [u'admin'],
 
131
    u'_context_timestamp': u'2012-05-08T16:03:43.760204',
 
132
    u'_context_user_id': None,
 
133
    u'event_type': u'compute.instance.exists',
 
134
    u'message_id': u'4b884c03-756d-4c06-8b42-80b6def9d302',
 
135
    u'payload': {u'audit_period_beginning': u'2012-05-08 15:00:00',
 
136
                 u'audit_period_ending': u'2012-05-08 16:00:00',
 
137
                 u'bandwidth': {},
 
138
                 u'created_at': u'2012-05-07 22:16:18',
 
139
                 u'deleted_at': u'',
 
140
                 u'disk_gb': 0,
 
141
                 u'display_name': u'testme',
 
142
                 u'image_ref_url': u'http://10.0.2.15:9292/images/UUID',
 
143
                 u'instance_id': u'3a513875-95c9-4012-a3e7-f90c678854e5',
 
144
                 u'instance_type': u'm1.tiny',
 
145
                 u'instance_type_id': 2,
 
146
                 u'launched_at': u'2012-05-07 23:01:27',
 
147
                 u'memory_mb': 512,
 
148
                 u'state': u'active',
 
149
                 u'state_description': u'',
 
150
                 u'tenant_id': u'7c150a59fe714e6f9263774af9688f0e',
 
151
                 u'user_id': u'1e3ce043029547f1a61c1996d1a531a2',
 
152
                 u'reservation_id': u'1e3ce043029547f1a61c1996d1a531a3',
 
153
                 u'vcpus': 1,
 
154
                 u'root_gb': 0,
 
155
                 u'ephemeral_gb': 0,
 
156
                 u'host': u'compute-host-name',
 
157
                 u'availability_zone': u'1e3ce043029547f1a61c1996d1a531a4',
 
158
                 u'os_type': u'linux?',
 
159
                 u'architecture': u'x86',
 
160
                 u'image_ref': u'UUID',
 
161
                 u'kernel_id': u'1e3ce043029547f1a61c1996d1a531a5',
 
162
                 u'ramdisk_id': u'1e3ce043029547f1a61c1996d1a531a6',
 
163
                 },
 
164
    u'priority': u'INFO',
 
165
    u'publisher_id': u'compute.vagrant-precise',
 
166
    u'timestamp': u'2012-05-08 16:03:44.122481',
 
167
}
 
168
 
 
169
INSTANCE_FINISH_RESIZE_END = {
 
170
    u'_context_roles': [u'admin'],
 
171
    u'_context_request_id': u'req-e3f71bb9-e9b9-418b-a9db-a5950c851b25',
 
172
    u'_context_quota_class': None,
 
173
    u'event_type': u'compute.instance.finish_resize.end',
 
174
    u'_context_user_name': u'admin',
 
175
    u'_context_project_name': u'admin',
 
176
    u'timestamp': u'2013-01-04 15:10:17.436974',
 
177
    u'_context_is_admin': True,
 
178
    u'message_id': u'a2f7770d-b85d-4797-ab10-41407a44368e',
 
179
    u'_context_auth_token': None,
 
180
    u'_context_instance_lock_checked': False,
 
181
    u'_context_project_id': u'cea4b25edb484e5392727181b7721d29',
 
182
    u'_context_timestamp': u'2013-01-04T15:08:39.162612',
 
183
    u'_context_read_deleted': u'no',
 
184
    u'_context_user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed',
 
185
    u'_context_remote_address': u'10.147.132.184',
 
186
    u'publisher_id': u'compute.ip-10-147-132-184.ec2.internal',
 
187
    u'payload': {u'state_description': u'',
 
188
                 u'availability_zone': None,
 
189
                 u'ephemeral_gb': 0,
 
190
                 u'instance_type_id': 5,
 
191
                 u'deleted_at': u'',
 
192
                 u'fixed_ips': [{u'floating_ips': [],
 
193
                                 u'label': u'private',
 
194
                                 u'version': 4,
 
195
                                 u'meta': {},
 
196
                                 u'address': u'10.0.0.3',
 
197
                                 u'type': u'fixed'}],
 
198
                 u'memory_mb': 2048,
 
199
                 u'user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed',
 
200
                 u'reservation_id': u'r-u3fvim06',
 
201
                 u'hostname': u's1',
 
202
                 u'state': u'resized',
 
203
                 u'launched_at': u'2013-01-04T15:10:14.923939',
 
204
                 u'metadata': [],
 
205
                 u'ramdisk_id': u'5f23128e-5525-46d8-bc66-9c30cd87141a',
 
206
                 u'access_ip_v6': None,
 
207
                 u'disk_gb': 20,
 
208
                 u'access_ip_v4': None,
 
209
                 u'kernel_id': u'571478e0-d5e7-4c2e-95a5-2bc79443c28a',
 
210
                 u'host': u'ip-10-147-132-184.ec2.internal',
 
211
                 u'display_name': u's1',
 
212
                 u'image_ref_url': u'http://10.147.132.184:9292/images/'
 
213
                 'a130b9d9-e00e-436e-9782-836ccef06e8a',
 
214
                 u'root_gb': 20,
 
215
                 u'tenant_id': u'cea4b25edb484e5392727181b7721d29',
 
216
                 u'created_at': u'2013-01-04T11:21:48.000000',
 
217
                 u'instance_id': u'648e8963-6886-4c3c-98f9-4511c292f86b',
 
218
                 u'instance_type': u'm1.small',
 
219
                 u'vcpus': 1,
 
220
                 u'image_meta': {u'kernel_id':
 
221
                                 u'571478e0-d5e7-4c2e-95a5-2bc79443c28a',
 
222
                                 u'ramdisk_id':
 
223
                                 u'5f23128e-5525-46d8-bc66-9c30cd87141a',
 
224
                                 u'base_image_ref':
 
225
                                 u'a130b9d9-e00e-436e-9782-836ccef06e8a'},
 
226
                 u'architecture': None,
 
227
                 u'os_type': None
 
228
                 },
 
229
    u'priority': u'INFO'
 
230
}
 
231
 
 
232
INSTANCE_RESIZE_REVERT_END = {
 
233
    u'_context_roles': [u'admin'],
 
234
    u'_context_request_id': u'req-9da1d714-dabe-42fd-8baa-583e57cd4f1a',
 
235
    u'_context_quota_class': None,
 
236
    u'event_type': u'compute.instance.resize.revert.end',
 
237
    u'_context_user_name': u'admin',
 
238
    u'_context_project_name': u'admin',
 
239
    u'timestamp': u'2013-01-04 15:20:32.009532',
 
240
    u'_context_is_admin': True,
 
241
    u'message_id': u'c48deeba-d0c3-4154-b3db-47480b52267a',
 
242
    u'_context_auth_token': None,
 
243
    u'_context_instance_lock_checked': False,
 
244
    u'_context_project_id': u'cea4b25edb484e5392727181b7721d29',
 
245
    u'_context_timestamp': u'2013-01-04T15:19:51.018218',
 
246
    u'_context_read_deleted': u'no',
 
247
    u'_context_user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed',
 
248
    u'_context_remote_address': u'10.147.132.184',
 
249
    u'publisher_id': u'compute.ip-10-147-132-184.ec2.internal',
 
250
    u'payload': {u'state_description': u'resize_reverting',
 
251
                 u'availability_zone': None,
 
252
                 u'ephemeral_gb': 0,
 
253
                 u'instance_type_id': 2,
 
254
                 u'deleted_at': u'',
 
255
                 u'reservation_id': u'r-u3fvim06',
 
256
                 u'memory_mb': 512,
 
257
                 u'user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed',
 
258
                 u'hostname': u's1',
 
259
                 u'state': u'resized',
 
260
                 u'launched_at': u'2013-01-04T15:10:14.000000',
 
261
                 u'metadata': [],
 
262
                 u'ramdisk_id': u'5f23128e-5525-46d8-bc66-9c30cd87141a',
 
263
                 u'access_ip_v6': None,
 
264
                 u'disk_gb': 0,
 
265
                 u'access_ip_v4': None,
 
266
                 u'kernel_id': u'571478e0-d5e7-4c2e-95a5-2bc79443c28a',
 
267
                 u'host': u'ip-10-147-132-184.ec2.internal',
 
268
                 u'display_name': u's1',
 
269
                 u'image_ref_url': u'http://10.147.132.184:9292/images/'
 
270
                 'a130b9d9-e00e-436e-9782-836ccef06e8a',
 
271
                 u'root_gb': 0,
 
272
                 u'tenant_id': u'cea4b25edb484e5392727181b7721d29',
 
273
                 u'created_at': u'2013-01-04T11:21:48.000000',
 
274
                 u'instance_id': u'648e8963-6886-4c3c-98f9-4511c292f86b',
 
275
                 u'instance_type': u'm1.tiny',
 
276
                 u'vcpus': 1,
 
277
                 u'image_meta': {u'kernel_id':
 
278
                                 u'571478e0-d5e7-4c2e-95a5-2bc79443c28a',
 
279
                                 u'ramdisk_id':
 
280
                                 u'5f23128e-5525-46d8-bc66-9c30cd87141a',
 
281
                                 u'base_image_ref':
 
282
                                 u'a130b9d9-e00e-436e-9782-836ccef06e8a'},
 
283
                 u'architecture': None,
 
284
                 u'os_type': None
 
285
                 },
 
286
    u'priority': u'INFO'
 
287
}
 
288
 
 
289
INSTANCE_DELETE_SAMPLES = {
 
290
    u'_context_roles': [u'admin'],
 
291
    u'_context_request_id': u'req-9da1d714-dabe-42fd-8baa-583e57cd4f1a',
 
292
    u'_context_quota_class': None,
 
293
    u'event_type': u'compute.instance.delete.samples',
 
294
    u'_context_user_name': u'admin',
 
295
    u'_context_project_name': u'admin',
 
296
    u'timestamp': u'2013-01-04 15:20:32.009532',
 
297
    u'_context_is_admin': True,
 
298
    u'message_id': u'c48deeba-d0c3-4154-b3db-47480b52267a',
 
299
    u'_context_auth_token': None,
 
300
    u'_context_instance_lock_checked': False,
 
301
    u'_context_project_id': u'cea4b25edb484e5392727181b7721d29',
 
302
    u'_context_timestamp': u'2013-01-04T15:19:51.018218',
 
303
    u'_context_read_deleted': u'no',
 
304
    u'_context_user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed',
 
305
    u'_context_remote_address': u'10.147.132.184',
 
306
    u'publisher_id': u'compute.ip-10-147-132-184.ec2.internal',
 
307
    u'payload': {u'state_description': u'resize_reverting',
 
308
                 u'availability_zone': None,
 
309
                 u'ephemeral_gb': 0,
 
310
                 u'instance_type_id': 2,
 
311
                 u'deleted_at': u'',
 
312
                 u'reservation_id': u'r-u3fvim06',
 
313
                 u'memory_mb': 512,
 
314
                 u'user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed',
 
315
                 u'hostname': u's1',
 
316
                 u'state': u'resized',
 
317
                 u'launched_at': u'2013-01-04T15:10:14.000000',
 
318
                 u'metadata': [],
 
319
                 u'ramdisk_id': u'5f23128e-5525-46d8-bc66-9c30cd87141a',
 
320
                 u'access_ip_v6': None,
 
321
                 u'disk_gb': 0,
 
322
                 u'access_ip_v4': None,
 
323
                 u'kernel_id': u'571478e0-d5e7-4c2e-95a5-2bc79443c28a',
 
324
                 u'host': u'ip-10-147-132-184.ec2.internal',
 
325
                 u'display_name': u's1',
 
326
                 u'image_ref_url': u'http://10.147.132.184:9292/images/'
 
327
                 'a130b9d9-e00e-436e-9782-836ccef06e8a',
 
328
                 u'root_gb': 0,
 
329
                 u'tenant_id': u'cea4b25edb484e5392727181b7721d29',
 
330
                 u'created_at': u'2013-01-04T11:21:48.000000',
 
331
                 u'instance_id': u'648e8963-6886-4c3c-98f9-4511c292f86b',
 
332
                 u'instance_type': u'm1.tiny',
 
333
                 u'vcpus': 1,
 
334
                 u'image_meta': {u'kernel_id':
 
335
                                 u'571478e0-d5e7-4c2e-95a5-2bc79443c28a',
 
336
                                 u'ramdisk_id':
 
337
                                 u'5f23128e-5525-46d8-bc66-9c30cd87141a',
 
338
                                 u'base_image_ref':
 
339
                                 u'a130b9d9-e00e-436e-9782-836ccef06e8a'},
 
340
                 u'architecture': None,
 
341
                 u'os_type': None,
 
342
                 u'samples': [{u'name': u'sample-name1',
 
343
                               u'type': u'sample-type1',
 
344
                               u'unit': u'sample-units1',
 
345
                               u'volume': 1},
 
346
                              {u'name': u'sample-name2',
 
347
                               u'type': u'sample-type2',
 
348
                               u'unit': u'sample-units2',
 
349
                               u'volume': 2},
 
350
                              ],
 
351
                 },
 
352
    u'priority': u'INFO'
 
353
}
 
354
 
 
355
 
 
356
INSTANCE_SCHEDULED = {
 
357
    u'_context_roles': [u'admin'],
 
358
    u'_context_request_id': u'req-9da1d714-dabe-42fd-8baa-583e57cd4f1a',
 
359
    u'_context_quota_class': None,
 
360
    u'event_type': u'scheduler.run_instance.scheduled',
 
361
    u'_context_user_name': u'admin',
 
362
    u'_context_project_name': u'admin',
 
363
    u'timestamp': u'2013-01-04 15:20:32.009532',
 
364
    u'_context_is_admin': True,
 
365
    u'message_id': u'c48deeba-d0c3-4154-b3db-47480b52267a',
 
366
    u'_context_auth_token': None,
 
367
    u'_context_instance_lock_checked': False,
 
368
    u'_context_project_id': u'cea4b25edb484e5392727181b7721d29',
 
369
    u'_context_timestamp': u'2013-01-04T15:19:51.018218',
 
370
    u'_context_read_deleted': u'no',
 
371
    u'_context_user_id': u'01b83a5e23f24a6fb6cd073c0aee6eed',
 
372
    u'_context_remote_address': u'10.147.132.184',
 
373
    u'publisher_id': u'compute.ip-10-147-132-184.ec2.internal',
 
374
    u'payload': {
 
375
        'instance_id': 'fake-uuid1-1',
 
376
        'weighted_host': {
 
377
            'host': 'host3',
 
378
            'weight': 3.0,
 
379
        },
 
380
        'request_spec': {
 
381
            'instance_properties': {
 
382
                'root_gb': 512,
 
383
                'ephemeral_gb': 0,
 
384
                'launch_index': 0,
 
385
                'memory_mb': 512,
 
386
                'vcpus': 1,
 
387
                'os_type': 'Linux',
 
388
                'project_id': 1,
 
389
                'system_metadata': {'system': 'metadata'}},
 
390
            'instance_type': {'memory_mb': 512,
 
391
                              'vcpus': 1,
 
392
                              'root_gb': 512,
 
393
                              'ephemeral_gb': 0},
 
394
            'instance_uuids': ['fake-uuid1-1'],
 
395
        },
 
396
    },
 
397
    u'priority': u'INFO'
 
398
}
 
399
 
 
400
 
 
401
class TestNotifications(test.BaseTestCase):
 
402
 
 
403
    def test_process_notification(self):
 
404
        info = list(instance.Instance().process_notification(
 
405
            INSTANCE_CREATE_END
 
406
        ))[0]
 
407
        for name, actual, expected in [
 
408
                ('counter_name', info.name, 'instance'),
 
409
                ('counter_type', info.type, sample.TYPE_GAUGE),
 
410
                ('counter_volume', info.volume, 1),
 
411
                ('timestamp', info.timestamp,
 
412
                 INSTANCE_CREATE_END['timestamp']),
 
413
                ('resource_id', info.resource_id,
 
414
                 INSTANCE_CREATE_END['payload']['instance_id']),
 
415
                ('instance_type_id',
 
416
                 info.resource_metadata['instance_type_id'],
 
417
                 INSTANCE_CREATE_END['payload']['instance_type_id']),
 
418
                ('host', info.resource_metadata['host'],
 
419
                 INSTANCE_CREATE_END['publisher_id']),
 
420
        ]:
 
421
            self.assertEqual(actual, expected, name)
 
422
 
 
423
    @staticmethod
 
424
    def _find_counter(counters, name):
 
425
        return filter(lambda counter: counter.name == name, counters)[0]
 
426
 
 
427
    def test_instance_create_instance(self):
 
428
        ic = instance.Instance()
 
429
        counters = list(ic.process_notification(INSTANCE_CREATE_END))
 
430
        self.assertEqual(len(counters), 1)
 
431
        c = counters[0]
 
432
        self.assertEqual(c.volume, 1)
 
433
 
 
434
    def test_instance_create_flavor(self):
 
435
        ic = instance.InstanceFlavor()
 
436
        counters = list(ic.process_notification(INSTANCE_CREATE_END))
 
437
        self.assertEqual(len(counters), 1)
 
438
        c = counters[0]
 
439
        self.assertEqual(c.volume, 1)
 
440
 
 
441
    def test_instance_create_memory(self):
 
442
        ic = instance.Memory()
 
443
        counters = list(ic.process_notification(INSTANCE_CREATE_END))
 
444
        self.assertEqual(len(counters), 1)
 
445
        c = counters[0]
 
446
        self.assertEqual(c.volume, INSTANCE_CREATE_END['payload']['memory_mb'])
 
447
 
 
448
    def test_instance_create_vcpus(self):
 
449
        ic = instance.VCpus()
 
450
        counters = list(ic.process_notification(INSTANCE_CREATE_END))
 
451
        self.assertEqual(len(counters), 1)
 
452
        c = counters[0]
 
453
        self.assertEqual(c.volume, INSTANCE_CREATE_END['payload']['vcpus'])
 
454
 
 
455
    def test_instance_create_root_disk_size(self):
 
456
        ic = instance.RootDiskSize()
 
457
        counters = list(ic.process_notification(INSTANCE_CREATE_END))
 
458
        self.assertEqual(len(counters), 1)
 
459
        c = counters[0]
 
460
        self.assertEqual(c.volume, INSTANCE_CREATE_END['payload']['root_gb'])
 
461
 
 
462
    def test_instance_create_ephemeral_disk_size(self):
 
463
        ic = instance.EphemeralDiskSize()
 
464
        counters = list(ic.process_notification(INSTANCE_CREATE_END))
 
465
        self.assertEqual(len(counters), 1)
 
466
        c = counters[0]
 
467
        self.assertEqual(c.volume,
 
468
                         INSTANCE_CREATE_END['payload']['ephemeral_gb'])
 
469
 
 
470
    def test_instance_exists_instance(self):
 
471
        ic = instance.Instance()
 
472
        counters = list(ic.process_notification(INSTANCE_EXISTS))
 
473
        self.assertEqual(len(counters), 1)
 
474
 
 
475
    def test_instance_exists_flavor(self):
 
476
        ic = instance.Instance()
 
477
        counters = list(ic.process_notification(INSTANCE_EXISTS))
 
478
        self.assertEqual(len(counters), 1)
 
479
 
 
480
    def test_instance_delete_instance(self):
 
481
        ic = instance.Instance()
 
482
        counters = list(ic.process_notification(INSTANCE_DELETE_START))
 
483
        self.assertEqual(len(counters), 1)
 
484
 
 
485
    def test_instance_delete_flavor(self):
 
486
        ic = instance.Instance()
 
487
        counters = list(ic.process_notification(INSTANCE_DELETE_START))
 
488
        self.assertEqual(len(counters), 1)
 
489
 
 
490
    def test_instance_finish_resize_instance(self):
 
491
        ic = instance.Instance()
 
492
        counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
 
493
        self.assertEqual(len(counters), 1)
 
494
        c = counters[0]
 
495
        self.assertEqual(c.volume, 1)
 
496
 
 
497
    def test_instance_finish_resize_flavor(self):
 
498
        ic = instance.InstanceFlavor()
 
499
        counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
 
500
        self.assertEqual(len(counters), 1)
 
501
        c = counters[0]
 
502
        self.assertEqual(c.volume, 1)
 
503
        self.assertEqual(c.name, 'instance:m1.small')
 
504
 
 
505
    def test_instance_finish_resize_memory(self):
 
506
        ic = instance.Memory()
 
507
        counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
 
508
        self.assertEqual(len(counters), 1)
 
509
        c = counters[0]
 
510
        self.assertEqual(c.volume,
 
511
                         INSTANCE_FINISH_RESIZE_END['payload']['memory_mb'])
 
512
 
 
513
    def test_instance_finish_resize_vcpus(self):
 
514
        ic = instance.VCpus()
 
515
        counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
 
516
        self.assertEqual(len(counters), 1)
 
517
        c = counters[0]
 
518
        self.assertEqual(c.volume,
 
519
                         INSTANCE_FINISH_RESIZE_END['payload']['vcpus'])
 
520
 
 
521
    def test_instance_resize_finish_instance(self):
 
522
        ic = instance.Instance()
 
523
        counters = list(ic.process_notification(INSTANCE_FINISH_RESIZE_END))
 
524
        self.assertEqual(len(counters), 1)
 
525
        c = counters[0]
 
526
        self.assertEqual(c.volume, 1)
 
527
 
 
528
    def test_instance_resize_finish_flavor(self):
 
529
        ic = instance.InstanceFlavor()
 
530
        counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END))
 
531
        self.assertEqual(len(counters), 1)
 
532
        c = counters[0]
 
533
        self.assertEqual(c.volume, 1)
 
534
        self.assertEqual(c.name, 'instance:m1.tiny')
 
535
 
 
536
    def test_instance_resize_finish_memory(self):
 
537
        ic = instance.Memory()
 
538
        counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END))
 
539
        self.assertEqual(len(counters), 1)
 
540
        c = counters[0]
 
541
        self.assertEqual(c.volume,
 
542
                         INSTANCE_RESIZE_REVERT_END['payload']['memory_mb'])
 
543
 
 
544
    def test_instance_resize_finish_vcpus(self):
 
545
        ic = instance.VCpus()
 
546
        counters = list(ic.process_notification(INSTANCE_RESIZE_REVERT_END))
 
547
        self.assertEqual(len(counters), 1)
 
548
        c = counters[0]
 
549
        self.assertEqual(c.volume,
 
550
                         INSTANCE_RESIZE_REVERT_END['payload']['vcpus'])
 
551
 
 
552
    def test_instance_delete_samples(self):
 
553
        ic = instance.InstanceDelete()
 
554
        counters = list(ic.process_notification(INSTANCE_DELETE_SAMPLES))
 
555
        self.assertEqual(len(counters), 2)
 
556
        names = [c.name for c in counters]
 
557
        self.assertEqual(names, ['sample-name1', 'sample-name2'])
 
558
 
 
559
    def test_instance_scheduled(self):
 
560
        ic = instance.InstanceScheduled()
 
561
 
 
562
        self.assertIn(INSTANCE_SCHEDULED['event_type'],
 
563
                      ic.event_types)
 
564
 
 
565
        counters = list(ic.process_notification(INSTANCE_SCHEDULED))
 
566
        self.assertEqual(len(counters), 1)
 
567
        names = [c.name for c in counters]
 
568
        self.assertEqual(names, ['instance.scheduled'])
 
569
        rid = [c.resource_id for c in counters]
 
570
        self.assertEqual(rid, ['fake-uuid1-1'])