Create test framework for python with stestr.
Add add the first unit test for fm-rest-api/fm/fm/common/timeutils. Add tox task for py27/35 as zuul checking and gating jobs. Story: 2007082 Task: 38077 Change-Id: I2f259dcf2178f42546966063c0d724bc17e2a804 Signed-off-by: chenyan <yan.chen@intel.com>
This commit is contained in:
parent
3a58bf68a1
commit
385f274a8f
2
.gitignore
vendored
2
.gitignore
vendored
@ -22,6 +22,8 @@ develop-eggs
|
||||
dist
|
||||
eggs
|
||||
sdist
|
||||
.stestr
|
||||
.ipynb_checkpoints
|
||||
|
||||
# Sphinx documentation
|
||||
doc/build
|
||||
|
24
.zuul.yaml
24
.zuul.yaml
@ -11,10 +11,14 @@
|
||||
- openstack-tox-linters
|
||||
- openstack-tox-pep8
|
||||
- stx-fault-build
|
||||
- fault-rest-api-py27
|
||||
- fault-rest-api-py35
|
||||
gate:
|
||||
jobs:
|
||||
- openstack-tox-linters
|
||||
- openstack-tox-pep8
|
||||
- fault-rest-api-py27
|
||||
- fault-rest-api-py35
|
||||
|
||||
# Perform just a build
|
||||
- job:
|
||||
@ -48,3 +52,23 @@
|
||||
fault: https://opendev.org/starlingx/fault
|
||||
integ: https://opendev.org/starlingx/integ
|
||||
update: https://opendev.org/starlingx/update
|
||||
|
||||
- job:
|
||||
name: fault-rest-api-py27
|
||||
parent: tox
|
||||
description: |
|
||||
Run py27 test for fm-rest-api
|
||||
nodeset: ubuntu-xenial
|
||||
vars:
|
||||
tox_envlist: py27
|
||||
tox_extra_args: -c fm-rest-api/fm/tox.ini
|
||||
|
||||
- job:
|
||||
name: fault-rest-api-py35
|
||||
parent: tox
|
||||
description: |
|
||||
Run py35 test for fm-rest-api
|
||||
nodeset: ubuntu-xenial
|
||||
vars:
|
||||
tox_envlist: py35
|
||||
tox_extra_args: -c fm-rest-api/fm/tox.ini
|
||||
|
5
fm-rest-api/fm/.stestr.conf
Normal file
5
fm-rest-api/fm/.stestr.conf
Normal file
@ -0,0 +1,5 @@
|
||||
[DEFAULT]
|
||||
test_path=./fm/tests
|
||||
top_dir=./
|
||||
#parallel_class=True
|
||||
|
@ -46,9 +46,9 @@ def parse_isotime(timestr):
|
||||
try:
|
||||
return iso8601.parse_date(timestr)
|
||||
except iso8601.ParseError as e:
|
||||
raise ValueError(e.message)
|
||||
raise ValueError(str(e))
|
||||
except TypeError as e:
|
||||
raise ValueError(e.message)
|
||||
raise ValueError(str(e))
|
||||
|
||||
|
||||
def strtime(at=None, fmt=PERFECT_TIME_FORMAT):
|
||||
|
14
fm-rest-api/fm/fm/tests/__init__.py
Normal file
14
fm-rest-api/fm/fm/tests/__init__.py
Normal file
@ -0,0 +1,14 @@
|
||||
# Copyright 2020 Intel Corporation.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
33
fm-rest-api/fm/fm/tests/base.py
Normal file
33
fm-rest-api/fm/fm/tests/base.py
Normal file
@ -0,0 +1,33 @@
|
||||
# Copyright 2020 Intel Corporation.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
"""Base classes for our unit tests.
|
||||
|
||||
Allows overriding of config for use of fakes, and some black magic for
|
||||
inline callbacks.
|
||||
|
||||
"""
|
||||
import testtools
|
||||
|
||||
|
||||
class TestCase(testtools.TestCase):
|
||||
"""Test case base class for all unit tests."""
|
||||
|
||||
def setUp(self):
|
||||
"""Run before each test method to initialize test environment."""
|
||||
super(TestCase, self).setUp()
|
||||
|
||||
def tearDown(self):
|
||||
super(TestCase, self).tearDown()
|
34
fm-rest-api/fm/fm/tests/test_common.py
Normal file
34
fm-rest-api/fm/fm/tests/test_common.py
Normal file
@ -0,0 +1,34 @@
|
||||
# Copyright 2020 Intel Corporation.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
import datetime
|
||||
from fm.common import timeutils
|
||||
|
||||
from fm.tests import base
|
||||
|
||||
|
||||
class FaultTimeUtilsTestCase(base.TestCase):
|
||||
|
||||
def test_isotime(self):
|
||||
isotimestr = timeutils.isotime()
|
||||
isotime = timeutils.parse_isotime(isotimestr)
|
||||
self.assertTrue(isinstance(isotime, datetime.datetime))
|
||||
|
||||
isotimestr = timeutils.isotime(subsecond=True)
|
||||
isotime = timeutils.parse_isotime(isotimestr)
|
||||
self.assertTrue(isinstance(isotime, datetime.datetime))
|
||||
|
||||
self.assertRaises(ValueError, timeutils.parse_isotime, "bad input")
|
||||
self.assertRaises(ValueError, timeutils.parse_isotime, isotime)
|
@ -1 +1,10 @@
|
||||
-r requirements.txt
|
||||
hacking!=0.13.0,<0.14,>=0.12.0
|
||||
bashate >= 0.2
|
||||
PyYAML >= 3.1.0
|
||||
yamllint >= 0.5.2
|
||||
stestr
|
||||
testtools!=1.2.0,>=0.9.36
|
||||
iso8601
|
||||
stestr
|
||||
mock
|
||||
cython
|
||||
|
33
fm-rest-api/fm/tox.ini
Normal file
33
fm-rest-api/fm/tox.ini
Normal file
@ -0,0 +1,33 @@
|
||||
[tox]
|
||||
envlist = py27,py35
|
||||
minversion = 2.3
|
||||
skipsdist = True
|
||||
stxdir = {toxinidir}/../../../
|
||||
|
||||
[testenv]
|
||||
install_command = pip install -U {opts} {packages}
|
||||
setenv = VIRTUAL_ENV={envdir}
|
||||
OS_STDOUT_CAPTURE=1
|
||||
OS_STDERR_CAPTURE=1
|
||||
OS_TEST_TIMEOUT=60
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
|
||||
[testenv:venv]
|
||||
basepython = python3
|
||||
commands = {posargs}
|
||||
|
||||
[testenv:py27]
|
||||
basepython = python2.7
|
||||
commands =
|
||||
stestr run {posargs}
|
||||
stestr slowest
|
||||
|
||||
[testenv:py35]
|
||||
basepython = python3.5
|
||||
commands =
|
||||
stestr run {posargs}
|
||||
stestr slowest
|
||||
|
||||
|
||||
|
||||
|
@ -2,4 +2,10 @@ hacking!=0.13.0,<0.14,>=0.12.0
|
||||
bashate >= 0.2
|
||||
PyYAML >= 3.1.0
|
||||
yamllint >= 0.5.2
|
||||
spec_cleaner>=1.0.9
|
||||
#spec_cleaner>=1.0.9
|
||||
stestr
|
||||
testtools!=1.2.0,>=0.9.36
|
||||
iso8601
|
||||
stestr
|
||||
mock
|
||||
cython
|
||||
|
2
tox.ini
2
tox.ini
@ -2,6 +2,7 @@
|
||||
envlist = linters,pep8,rpm-packaging-lint
|
||||
minversion = 2.3
|
||||
skipsdist = True
|
||||
stxdir = {toxinidir}/../
|
||||
|
||||
[testenv]
|
||||
install_command = pip install -U {opts} {packages}
|
||||
@ -128,3 +129,4 @@ commands = {toxinidir}/devstack/build.sh
|
||||
basepython = python3
|
||||
whitelist_externals = cat
|
||||
commands = cat /etc/fm/fm.conf
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user