Add script to run functional tests locally
- Added script that can run part of functional tests locally - Added needed mocks in base.py file so that we don't interact with keystone - Added small a description how to run new script Change-Id: I1867fb93f540c8f061fd09c40a283ce1ef2c072c
This commit is contained in:
parent
411812e5fd
commit
aacdb47af3
11
README.rst
11
README.rst
@ -77,4 +77,13 @@ To run the examples find them in mistral-extra repository (https://github.com/st
|
|||||||
Tests
|
Tests
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Information about automated tests for Mistral can be found here: https://wiki.openstack.org/wiki/Mistral/Testing
|
There is an ability to run part of functional tests in non-openstack mode locally. To do this:
|
||||||
|
|
||||||
|
# set *auth_enable=false* in the mistral.conf and restart Mistral
|
||||||
|
# execute:
|
||||||
|
|
||||||
|
bash run_functional_tests.sh
|
||||||
|
|
||||||
|
To run tests for only one version need to specify it: bash run_functional_tests.sh v1
|
||||||
|
|
||||||
|
More information about automated tests for Mistral can be found here: https://wiki.openstack.org/wiki/Mistral/Testing
|
||||||
|
@ -14,8 +14,11 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
import mock
|
||||||
|
import os
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
from tempest import auth
|
||||||
from tempest import clients
|
from tempest import clients
|
||||||
from tempest.common import rest_client
|
from tempest.common import rest_client
|
||||||
from tempest import config
|
from tempest import config
|
||||||
@ -266,6 +269,24 @@ class MistralClientV2(MistralClientBase):
|
|||||||
return resp, json.loads(body)
|
return resp, json.loads(body)
|
||||||
|
|
||||||
|
|
||||||
|
class AuthProv(auth.KeystoneV2AuthProvider):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.alt_part = None
|
||||||
|
|
||||||
|
def auth_request(self, method, url, *args, **kwargs):
|
||||||
|
req_url, headers, body = super(AuthProv, self).auth_request(
|
||||||
|
method, url, *args, **kwargs)
|
||||||
|
return 'http://localhost:8989/{0}/{1}'.format(
|
||||||
|
os.environ['VERSION'], url), headers, body
|
||||||
|
|
||||||
|
def get_auth(self):
|
||||||
|
return 'mock_str', 'mock_str'
|
||||||
|
|
||||||
|
def base_url(self, *args, **kwargs):
|
||||||
|
return ''
|
||||||
|
|
||||||
|
|
||||||
class TestCase(tempest.test.BaseTestCase):
|
class TestCase(tempest.test.BaseTestCase):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -275,7 +296,12 @@ class TestCase(tempest.test.BaseTestCase):
|
|||||||
"""
|
"""
|
||||||
super(TestCase, cls).setUpClass()
|
super(TestCase, cls).setUpClass()
|
||||||
|
|
||||||
cls.mgr = clients.Manager()
|
if 'WITHOUT_AUTH' in os.environ:
|
||||||
|
cls.mgr = mock.MagicMock()
|
||||||
|
cls.mgr.auth_provider = AuthProv()
|
||||||
|
else:
|
||||||
|
cls.mgr = clients.Manager()
|
||||||
|
|
||||||
if cls._version == 1:
|
if cls._version == 1:
|
||||||
cls.client = MistralClientV1(cls.mgr.auth_provider)
|
cls.client = MistralClientV1(cls.mgr.auth_provider)
|
||||||
if cls._version == 2:
|
if cls._version == 2:
|
||||||
|
@ -26,3 +26,4 @@ SQLAlchemy>=0.7.8,!=0.9.5,<=0.9.99
|
|||||||
stevedore>=0.14
|
stevedore>=0.14
|
||||||
yaql==0.2.1 # This is not in global requirements
|
yaql==0.2.1 # This is not in global requirements
|
||||||
jsonschema>=2.0.0,<3.0.0
|
jsonschema>=2.0.0,<3.0.0
|
||||||
|
mock>=1.0
|
||||||
|
47
run_functional_tests.sh
Executable file
47
run_functional_tests.sh
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
ARG=$1
|
||||||
|
|
||||||
|
function pre_hook() {
|
||||||
|
export WITHOUT_AUTH="True"
|
||||||
|
IS_TEMPEST=$(pip freeze | grep tempest)
|
||||||
|
if [ -z "$IS_TEMPEST" ]
|
||||||
|
then echo "$(tput setaf 4)No such module 'tempest' in the system. Before running this script please install 'tempest' module using : pip install git+http://github.com/openstack/tempest.git$(tput sgr 0)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_tests_by_version() {
|
||||||
|
echo "$(tput setaf 4)Running integration API and workflow execution tests for v$1$(tput sgr 0)"
|
||||||
|
export VERSION="v$1"
|
||||||
|
nosetests -v mistral/tests/functional/api/v$1/
|
||||||
|
unset VERSION
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_tests() {
|
||||||
|
if [ -z "$ARG" ]
|
||||||
|
then
|
||||||
|
run_tests_by_version 1
|
||||||
|
run_tests_by_version 2
|
||||||
|
elif [ "$ARG" == "v1" ]
|
||||||
|
then
|
||||||
|
run_tests_by_version 1
|
||||||
|
elif [ "$ARG" == "v2" ]
|
||||||
|
then
|
||||||
|
run_tests_by_version 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function post_hook () {
|
||||||
|
unset LOCAL_RUN
|
||||||
|
}
|
||||||
|
|
||||||
|
#----------main-part----------
|
||||||
|
|
||||||
|
echo "$(tput setaf 4)Preparation for tests running...$(tput sgr 0)"
|
||||||
|
pre_hook
|
||||||
|
echo "$(tput setaf 4)Running tests...$(tput sgr 0)"
|
||||||
|
run_tests
|
||||||
|
|
||||||
|
post_hook
|
||||||
|
|
@ -10,7 +10,6 @@ sphinxcontrib-pecanwsme>=0.8
|
|||||||
sphinxcontrib-httpdomain
|
sphinxcontrib-httpdomain
|
||||||
docutils==0.9.1
|
docutils==0.9.1
|
||||||
fixtures>=0.3.14
|
fixtures>=0.3.14
|
||||||
mock>=1.0
|
|
||||||
nose
|
nose
|
||||||
testrepository>=0.0.18
|
testrepository>=0.0.18
|
||||||
testtools>=0.9.34
|
testtools>=0.9.34
|
||||||
|
Loading…
Reference in New Issue
Block a user