blob: ab099ff4653b248d08cd62207272574a862c8d47 [file] [log] [blame]
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -05001# Copyright (c) 2014 Rackspace, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12# implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15
16import logging
Matthew Treinish96e9e882014-06-09 18:37:19 -040017
Jorge Chai83ba4ee2014-04-15 18:58:08 +000018from six import moves
19from testtools import matchers
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -050020
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -030021from tempest.api.messaging import base
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -050022from tempest.common.utils import data_utils
23from tempest import test
24
25
26LOG = logging.getLogger(__name__)
27
28
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -030029class TestQueues(base.BaseMessagingTest):
Malini Kamalambal6e7b3b82014-02-06 06:49:04 -050030
31 @test.attr(type='smoke')
32 def test_create_queue(self):
33 # Create Queue
34 queue_name = data_utils.rand_name('test-')
35 resp, body = self.create_queue(queue_name)
36
37 self.addCleanup(self.client.delete_queue, queue_name)
38
39 self.assertEqual('201', resp['status'])
40 self.assertEqual('', body)
Jorge Chai4f5896e2014-02-17 14:34:54 -050041
42
Victoria Martínez de la Cruz1173b6e2014-09-22 18:32:13 -030043class TestManageQueue(base.BaseMessagingTest):
Jorge Chai4f5896e2014-02-17 14:34:54 -050044 _interface = 'json'
45
46 @classmethod
Andrea Frittoli23ee1c62014-09-15 13:14:54 +010047 def resource_setup(cls):
48 super(TestManageQueue, cls).resource_setup()
Jorge Chai83ba4ee2014-04-15 18:58:08 +000049 cls.queues = list()
50 for _ in moves.xrange(5):
51 queue_name = data_utils.rand_name('Queues-Test')
52 cls.queues.append(queue_name)
53 # Create Queue
54 cls.client.create_queue(queue_name)
Jorge Chai4f5896e2014-02-17 14:34:54 -050055
56 @test.attr(type='smoke')
57 def test_delete_queue(self):
58 # Delete Queue
Jorge Chai83ba4ee2014-04-15 18:58:08 +000059 queue_name = self.queues.pop()
60 resp, body = self.delete_queue(queue_name)
Jorge Chai4f5896e2014-02-17 14:34:54 -050061 self.assertEqual('204', resp['status'])
62 self.assertEqual('', body)
63
Jorge Chai83ba4ee2014-04-15 18:58:08 +000064 @test.attr(type='smoke')
65 def test_check_queue_existence(self):
66 # Checking Queue Existence
67 for queue_name in self.queues:
68 resp, body = self.check_queue_exists(queue_name)
69 self.assertEqual('204', resp['status'])
70 self.assertEqual('', body)
71
72 @test.attr(type='smoke')
73 def test_check_queue_head(self):
74 # Checking Queue Existence by calling HEAD
75 for queue_name in self.queues:
76 resp, body = self.check_queue_exists_head(queue_name)
77 self.assertEqual('204', resp['status'])
78 self.assertEqual('', body)
79
80 @test.attr(type='smoke')
81 def test_list_queues(self):
82 # Listing queues
83 resp, body = self.list_queues()
84 self.assertEqual(len(body['queues']), len(self.queues))
85 for item in body['queues']:
86 self.assertIn(item['name'], self.queues)
87
88 @test.attr(type='smoke')
89 def test_get_queue_stats(self):
90 # Retrieve random queue
91 queue_name = self.queues[data_utils.rand_int_id(0,
92 len(self.queues) - 1)]
93 # Get Queue Stats for a newly created Queue
94 resp, body = self.get_queue_stats(queue_name)
95 msgs = body['messages']
96 for element in ('free', 'claimed', 'total'):
97 self.assertEqual(0, msgs[element])
98 for element in ('oldest', 'newest'):
99 self.assertNotIn(element, msgs)
100
101 @test.attr(type='smoke')
102 def test_set_and_get_queue_metadata(self):
103 # Retrieve random queue
104 queue_name = self.queues[data_utils.rand_int_id(0,
105 len(self.queues) - 1)]
106 # Check the Queue has no metadata
107 resp, body = self.get_queue_metadata(queue_name)
108 self.assertEqual('200', resp['status'])
109 self.assertThat(body, matchers.HasLength(0))
110 # Create metadata
111 key3 = [0, 1, 2, 3, 4]
112 key2 = data_utils.rand_name('value')
113 req_body1 = dict()
114 req_body1[data_utils.rand_name('key3')] = key3
115 req_body1[data_utils.rand_name('key2')] = key2
116 req_body = dict()
117 req_body[data_utils.rand_name('key1')] = req_body1
118 # Set Queue Metadata
119 resp, body = self.set_queue_metadata(queue_name, req_body)
120 self.assertEqual('204', resp['status'])
121 self.assertEqual('', body)
122 # Get Queue Metadata
123 resp, body = self.get_queue_metadata(queue_name)
124 self.assertEqual('200', resp['status'])
125 self.assertThat(body, matchers.Equals(req_body))
126
Jorge Chai4f5896e2014-02-17 14:34:54 -0500127 @classmethod
Andrea Frittoli23ee1c62014-09-15 13:14:54 +0100128 def resource_cleanup(cls):
Jorge Chai83ba4ee2014-04-15 18:58:08 +0000129 for queue_name in cls.queues:
130 cls.client.delete_queue(queue_name)
Andrea Frittoli23ee1c62014-09-15 13:14:54 +0100131 super(TestManageQueue, cls).resource_cleanup()