Enable Test Coverage and Add New Test

This commit enables code coverage and added unit tests for metrics
message verification.

Change-Id: I526c8ce8583f0df6cb0323e5ce6bc98ecf310f4f
This commit is contained in:
Ching Kuo 2021-07-01 17:33:24 +08:00
parent d510ff4d1e
commit 29ded7bf6d
5 changed files with 85 additions and 11 deletions

1
.gitignore vendored
View File

@ -41,6 +41,7 @@ pip-log.txt
.stestr/ .stestr/
test.sock test.sock
.venv .venv
cover/
# Translations # Translations
*.mo *.mo

View File

@ -17,11 +17,13 @@ import json
class UnSupportedMetricActionError(Exception): class UnSupportedMetricActionError(Exception):
pass def __init__(self, message=None):
self.message = message
class MetricValidationError(Exception): class MetricValidationError(Exception):
pass def __init__(self, message=None):
self.message = message
class MetricAction(): class MetricAction():

View File

@ -0,0 +1,71 @@
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
"""
test_message_validation
--------------------
Check that messages validation is working properly
"""
import json
from oslo_metrics import message_type
from oslotest import base
class TestMetricValidation(base.BaseTestCase):
def setUp(self):
super(TestMetricValidation, self).setUp()
def assertRaisesWithMessage(self, message, func, *args, **kwargs):
try:
func(*args, **kwargs)
self.assertFail()
except Exception as e:
self.assertEqual(message, e.message)
def test_message_validation(self):
metric = dict()
message = "module should be specified"
self.assertRaisesWithMessage(
message, message_type.Metric.from_json, json.dumps(metric))
metric['module'] = "test"
message = "name should be specified"
self.assertRaisesWithMessage(
message, message_type.Metric.from_json, json.dumps(metric))
metric['name'] = "test"
message = "action should be specified"
self.assertRaisesWithMessage(
message, message_type.Metric.from_json, json.dumps(metric))
metric['action'] = "test"
message = "labels should be specified"
self.assertRaisesWithMessage(
message, message_type.Metric.from_json, json.dumps(metric))
metric['labels'] = "test_label"
message = "action need 'value' field"
self.assertRaisesWithMessage(
message, message_type.Metric.from_json, json.dumps(metric))
metric['action'] = {"value": "1"}
message = "action need 'action' field"
self.assertRaisesWithMessage(
message, message_type.Metric.from_json, json.dumps(metric))
metric['action']['action'] = "test"
message = "action should be choosen from ['inc', 'observe']"
self.assertRaisesWithMessage(
message, message_type.Metric.from_json, json.dumps(metric))

View File

@ -6,3 +6,4 @@ oslotest>=3.2.0 # Apache-2.0
# Bandit security code scanner # Bandit security code scanner
bandit>=1.1.0,<1.6.0 # Apache-2.0 bandit>=1.1.0,<1.6.0 # Apache-2.0
stestr>=2.0.0 # Apache-2.0 stestr>=2.0.0 # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0

17
tox.ini
View File

@ -33,15 +33,14 @@ commands =
rm -fr doc/build rm -fr doc/build
sphinx-build -W --keep-going -b html doc/source doc/build/html sphinx-build -W --keep-going -b html doc/source doc/build/html
# NOTE(hberaud): Not yet activated [testenv:cover]
#[testenv:cover] setenv =
#setenv = PYTHON=coverage run --source oslo_metrics --parallel-mode
# PYTHON=coverage run --source oslo_cache --parallel-mode commands =
#commands = stestr run {posargs}
# stestr run {posargs} coverage combine
# coverage combine coverage html -d cover
# coverage html -d cover coverage xml -o cover/coverage.xml
# coverage xml -o cover/coverage.xml
[flake8] [flake8]
show-source = True show-source = True