blob: 2feb825f68472e929260667b16ba68b23faec7e9 [file] [log] [blame]
Leo Toyoda3ae31e12013-04-19 11:19:57 +09001# Copyright 2013 NEC Corporation
Liu, Zhi Kund42c9912013-07-18 23:03:57 +08002# Copyright 2013 IBM Corp.
Leo Toyoda3ae31e12013-04-19 11:19:57 +09003# All Rights Reserved.
4#
5# Licensed under the Apache License, Version 2.0 (the "License"); you may
6# not use this file except in compliance with the License. You may obtain
7# a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14# License for the specific language governing permissions and limitations
15# under the License.
16
Sean Dague1937d092013-05-17 16:36:38 -040017from tempest.api.compute import base
Masayuki Igawa394d8d92014-03-04 17:21:56 +090018from tempest import test
Leo Toyoda3ae31e12013-04-19 11:19:57 +090019
20
ivan-zhuf2b00502013-10-18 10:06:52 +080021class ServicesAdminTestJSON(base.BaseV2ComputeAdminTest):
Leo Toyoda3ae31e12013-04-19 11:19:57 +090022
23 """
24 Tests Services API. List and Enable/Disable require admin privileges.
25 """
26
Leo Toyoda3ae31e12013-04-19 11:19:57 +090027 @classmethod
28 def setUpClass(cls):
29 super(ServicesAdminTestJSON, cls).setUpClass()
30 cls.client = cls.os_adm.services_client
Leo Toyoda3ae31e12013-04-19 11:19:57 +090031
Masayuki Igawa394d8d92014-03-04 17:21:56 +090032 @test.attr(type='gate')
Leo Toyoda3ae31e12013-04-19 11:19:57 +090033 def test_list_services(self):
Leo Toyoda3ae31e12013-04-19 11:19:57 +090034 resp, services = self.client.list_services()
Chris Yeohc266b282014-03-13 18:19:00 +103035 self.assertEqual(200, resp.status)
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080036 self.assertNotEqual(0, len(services))
Leo Toyoda3ae31e12013-04-19 11:19:57 +090037
Masayuki Igawa394d8d92014-03-04 17:21:56 +090038 @test.attr(type='gate')
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080039 def test_get_service_by_service_binary_name(self):
40 binary_name = 'nova-compute'
41 params = {'binary': binary_name}
42 resp, services = self.client.list_services(params)
Chris Yeohc266b282014-03-13 18:19:00 +103043 self.assertEqual(200, resp.status)
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080044 self.assertNotEqual(0, len(services))
45 for service in services:
46 self.assertEqual(binary_name, service['binary'])
47
Masayuki Igawa394d8d92014-03-04 17:21:56 +090048 @test.attr(type='gate')
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080049 def test_get_service_by_host_name(self):
50 resp, services = self.client.list_services()
51 host_name = services[0]['host']
52 services_on_host = [service for service in services if
53 service['host'] == host_name]
54 params = {'host': host_name}
Ken'ichi Ohmichi986bf412014-03-06 04:06:21 +090055
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080056 resp, services = self.client.list_services(params)
Sean Dague3b616492013-07-26 15:04:12 -040057
58 # we could have a periodic job checkin between the 2 service
59 # lookups, so only compare binary lists.
60 s1 = map(lambda x: x['binary'], services)
61 s2 = map(lambda x: x['binary'], services_on_host)
Sumanth Nagadavalli31422202013-07-31 10:54:21 +053062
Attila Fazekasf7f34f92013-08-01 17:01:44 +020063 # sort the lists before comparing, to take out dependency
64 # on order.
Sumanth Nagadavalli31422202013-07-31 10:54:21 +053065 self.assertEqual(sorted(s1), sorted(s2))
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080066
Masayuki Igawa394d8d92014-03-04 17:21:56 +090067 @test.attr(type='gate')
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080068 def test_get_service_by_service_and_host_name(self):
69 resp, services = self.client.list_services()
70 host_name = services[0]['host']
71 binary_name = services[0]['binary']
72 params = {'host': host_name, 'binary': binary_name}
Ken'ichi Ohmichi986bf412014-03-06 04:06:21 +090073
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080074 resp, services = self.client.list_services(params)
Chris Yeohc266b282014-03-13 18:19:00 +103075 self.assertEqual(200, resp.status)
Liu, Zhi Kund42c9912013-07-18 23:03:57 +080076 self.assertEqual(1, len(services))
77 self.assertEqual(host_name, services[0]['host'])
78 self.assertEqual(binary_name, services[0]['binary'])
79
Leo Toyoda3ae31e12013-04-19 11:19:57 +090080
81class ServicesAdminTestXML(ServicesAdminTestJSON):
82 _interface = 'xml'