Merge "Add validate monasca service to authenticate.py"

This commit is contained in:
Jenkins 2015-10-20 17:11:39 +00:00 committed by Gerrit Code Review
commit d0e2847946
4 changed files with 49 additions and 1 deletions

View File

@ -104,6 +104,7 @@ class _Service(utils.ImmutableMixin, utils.EnumMixin):
NEUTRON = "neutron"
DESIGNATE = "designate"
CEILOMETER = "ceilometer"
MONASCA = "monasca"
S3 = "s3"
TROVE = "trove"
SAHARA = "sahara"
@ -130,6 +131,7 @@ class _ServiceType(utils.ImmutableMixin, utils.EnumMixin):
NETWORK = "network"
DNS = "dns"
METERING = "metering"
MONITORING = "monitoring"
S3 = "s3"
DATABASE = "database"
DATA_PROCESSING = "data-processing"
@ -154,6 +156,7 @@ class _ServiceType(utils.ImmutableMixin, utils.EnumMixin):
self.NETWORK: _Service.NEUTRON,
self.DNS: _Service.DESIGNATE,
self.METERING: _Service.CEILOMETER,
self.MONITORING: _Service.MONASCA,
self.S3: _Service.S3,
self.DATABASE: _Service.TROVE,
self.DATA_PROCESSING: _Service.SAHARA,

View File

@ -12,6 +12,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from rally import consts
from rally.plugins.openstack import scenario
from rally.task import atomic
from rally.task import validation
@ -111,3 +112,20 @@ class Authenticate(scenario.OpenStackScenario):
for i in range(repetitions):
with atomic.ActionTimer(self, "authenticate.validate_heat"):
list(heat_client.stacks.list(limit=0))
@validation.number("repetitions", minval=1)
@validation.required_openstack(users=True)
@validation.required_services(consts.Service.MONASCA)
@scenario.configure()
def validate_monasca(self, repetitions):
"""Check Monasca Client to ensure validation of token.
Creation of the client does not ensure validation of the token.
We have to do some minimal operation to make sure token gets validated.
:param repetitions: number of times to validate
"""
monasca_client = self.clients("monasca")
for i in range(repetitions):
with atomic.ActionTimer(self, "authenticate.validate_monasca"):
list(monasca_client.metrics.list(limit=0))

View File

@ -768,6 +768,12 @@ class FakeMeterManager(FakeManager):
return ["fake-meter"]
class FakeMetricsManager(FakeManager):
def list(self):
return ["fake-metric"]
class FakeCeilometerResourceManager(FakeManager):
def get(self, resource_id):
@ -916,7 +922,8 @@ class FakeObjectManager(FakeManager):
class FakeServiceCatalog(object):
def get_endpoints(self):
return {"image": [{"publicURL": "http://fake.to"}],
"metering": [{"publicURL": "http://fake.to"}]}
"metering": [{"publicURL": "http://fake.to"}],
"monitoring": [{"publicURL": "http://fake.to"}]}
def url_for(self, **kwargs):
return "http://fake.to"
@ -1027,6 +1034,12 @@ class FakeCeilometerClient(object):
self.query_alarm_history = FakeQueryManager()
class FakeMonascaClient(object):
def __init__(self):
self.metrics = FakeMetricsManager()
class FakeNeutronClient(object):
def __init__(self, **kwargs):
@ -1453,6 +1466,7 @@ class FakeClients(object):
self._mistral = None
self._swift = None
self._murano = None
self._monasca = None
self._ec2 = None
self._endpoint = endpoint_ or objects.Endpoint(
"http://fake.example.org:5000/v2.0/",
@ -1508,6 +1522,11 @@ class FakeClients(object):
self._ceilometer = FakeCeilometerClient()
return self._ceilometer
def monasca(self):
if not self._monasca:
self._monasca = FakeMonascaClient()
return self._monasca
def zaqar(self):
if not self._zaqar:
self._zaqar = FakeZaqarClient()

View File

@ -67,3 +67,11 @@ class AuthenticateTestCase(test.ScenarioTestCase):
scenario_inst.validate_heat(5)
self.clients("heat").stacks.list.assert_called_with(limit=0)
self.assertEqual(self.clients("heat").stacks.list.call_count, 5)
def test_validate_monasca(self):
scenario_inst = authenticate.Authenticate()
with atomic.ActionTimer(scenario_inst,
"authenticate.validate_monasca"):
scenario_inst.validate_monasca(5)
self.clients("monasca").metrics.list.assert_called_with(limit=0)
self.assertEqual(self.clients("monasca").metrics.list.call_count, 5)