1a46141671
Add a python3 functional gate that is non-voting. Co-Authored-By: Lucas H. Xu <hanxu@redhat.com> Change-Id: I5ca75cd85fa469cdaa869baa71726498e9d11e0b Signed-off-by: Charles Short <chucks@redhat.com> Lucas H. Xu <hanxu@redhat.com>
209 lines
8.3 KiB
Python
209 lines
8.3 KiB
Python
# Copyright 2013: Mirantis Inc.
|
|
# 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 copy
|
|
import unittest
|
|
|
|
from tests.functional import utils
|
|
|
|
|
|
TEST_ENV = {
|
|
"OS_USERNAME": "admin",
|
|
"OS_PASSWORD": "admin",
|
|
"OS_TENANT_NAME": "admin",
|
|
"OS_AUTH_URL": "http://fake/",
|
|
}
|
|
|
|
RALLY_OPTS = {
|
|
# speed up failures
|
|
"DEFAULT": {"openstack_client_http_timeout": 5}
|
|
}
|
|
|
|
|
|
class EnvTestCase(unittest.TestCase):
|
|
def test_check_success(self):
|
|
rally = utils.Rally()
|
|
rally("env check")
|
|
|
|
def test_check_wrong_url(self):
|
|
rally = utils.Rally(config_opts=RALLY_OPTS)
|
|
fake_spec = copy.deepcopy(rally.env_spec)
|
|
fake_spec["existing@openstack"]["auth_url"] = "http://example.com:5000"
|
|
spec = utils.JsonTempFile(fake_spec)
|
|
rally("env create --name t_create_env --spec %s" % spec.filename)
|
|
|
|
try:
|
|
rally("env check")
|
|
except utils.RallyCliError as e:
|
|
output = e.output.split("\n")
|
|
line_template = "| :-( | openstack | %s |"
|
|
err1 = "Unable to establish connection to http://example.com:5000"
|
|
err2 = "Request to http://example.com:5000 timed out"
|
|
if (line_template % err1 not in output
|
|
and line_template % err2 not in output):
|
|
self.fail("The output of `env check` doesn't contain expected"
|
|
" error. Output:\n" % e.output)
|
|
else:
|
|
self.fail("Check env command should fail!")
|
|
|
|
def test_check_wrong_username(self):
|
|
rally = utils.Rally(config_opts=RALLY_OPTS)
|
|
fake_spec = copy.deepcopy(rally.env_spec)
|
|
fake_spec["existing@openstack"]["admin"]["username"] = "MASTER777"
|
|
spec = utils.JsonTempFile(fake_spec)
|
|
rally("env create --name t_create_env --spec %s" % spec.filename)
|
|
|
|
try:
|
|
rally("env check")
|
|
except utils.RallyCliError as e:
|
|
line = ("| :-( | openstack | Failed to authenticate to "
|
|
"%s for user '%s' in project '%s': The request you have "
|
|
"made requires authentication. |" %
|
|
(fake_spec["existing@openstack"]["auth_url"],
|
|
fake_spec["existing@openstack"]["admin"]["username"],
|
|
fake_spec["existing@openstack"]["admin"]["project_name"]))
|
|
self.assertIn(line, e.output.split("\n"))
|
|
else:
|
|
self.fail("Check env command should fail!")
|
|
|
|
def test_check_wrong_password(self):
|
|
rally = utils.Rally(config_opts=RALLY_OPTS)
|
|
fake_spec = copy.deepcopy(rally.env_spec)
|
|
fake_spec["existing@openstack"]["admin"]["password"] = "MASTER777"
|
|
spec = utils.JsonTempFile(fake_spec)
|
|
rally("env create --name t_create_env --spec %s" % spec.filename)
|
|
|
|
try:
|
|
rally("env check")
|
|
except utils.RallyCliError as e:
|
|
line = ("| :-( | openstack | Failed to authenticate to "
|
|
"%s for user '%s' in project '%s': The request you have "
|
|
"made requires authentication. |" %
|
|
(fake_spec["existing@openstack"]["auth_url"],
|
|
fake_spec["existing@openstack"]["admin"]["username"],
|
|
fake_spec["existing@openstack"]["admin"]["project_name"]))
|
|
self.assertIn(line, e.output.split("\n"))
|
|
else:
|
|
self.fail("Check env command should fail!")
|
|
|
|
def test_create_from_sysenv(self):
|
|
rally = utils.Rally()
|
|
rally.env.update(TEST_ENV)
|
|
rally("env create --name t_create_env --from-sysenv")
|
|
config = rally("env show --only-spec", getjson=True)
|
|
self.assertIn("existing@openstack", config)
|
|
self.assertEqual(TEST_ENV["OS_USERNAME"],
|
|
config["existing@openstack"]["admin"]["username"])
|
|
self.assertEqual(TEST_ENV["OS_PASSWORD"],
|
|
config["existing@openstack"]["admin"]["password"])
|
|
if "project_name" in config["existing@openstack"]["admin"]:
|
|
# keystone v3
|
|
self.assertEqual(
|
|
TEST_ENV["OS_TENANT_NAME"],
|
|
config["existing@openstack"]["admin"]["project_name"])
|
|
else:
|
|
# keystone v2
|
|
self.assertEqual(
|
|
TEST_ENV["OS_TENANT_NAME"],
|
|
config["existing@openstack"]["admin"]["tenant_name"])
|
|
self.assertEqual(
|
|
TEST_ENV["OS_AUTH_URL"],
|
|
config["existing@openstack"]["auth_url"])
|
|
|
|
def test_check_api_info_success(self):
|
|
rally = utils.Rally()
|
|
spec = copy.deepcopy(rally.env_spec)
|
|
spec["existing@openstack"]["api_info"] = {
|
|
"fakedummy": {
|
|
"version": "2",
|
|
"service_type": "dummyv2"
|
|
}
|
|
}
|
|
spec = utils.JsonTempFile(spec)
|
|
rally("env create --name t_create_env_with_api_info"
|
|
" --spec %s" % spec.filename)
|
|
plugings = "tests/functional/extra/fake_dir/fake_plugin.py"
|
|
rally("--plugin-paths %s env check" % plugings)
|
|
|
|
def test_check_api_info_fail_1(self):
|
|
rally = utils.Rally()
|
|
spec = copy.deepcopy(rally.env_spec)
|
|
spec["existing@openstack"]["api_info"] = {
|
|
"fakedummy": {
|
|
"version": "3",
|
|
"service_type": "dummyv2"
|
|
}
|
|
}
|
|
spec = utils.JsonTempFile(spec)
|
|
rally("env create --name t_create_env_with_api_info"
|
|
" --spec %s" % spec.filename)
|
|
try:
|
|
plugings = "tests/functional/extra/fake_dir/fake_plugin.py"
|
|
rally("--plugin-paths %s env check" % plugings)
|
|
except utils.RallyCliError as e:
|
|
self.assertIn("Invalid setting for 'fakedummy':", e.output)
|
|
|
|
def test_check_api_info_fail_2(self):
|
|
rally = utils.Rally()
|
|
spec = copy.deepcopy(rally.env_spec)
|
|
spec["existing@openstack"]["api_info"] = {
|
|
"noneclient": {
|
|
"version": "1",
|
|
"service_type": "none"
|
|
}
|
|
}
|
|
spec = utils.JsonTempFile(spec)
|
|
rally("env create --name t_create_env_with_api_info"
|
|
" --spec %s" % spec.filename)
|
|
try:
|
|
plugings = "tests/functional/extra/fake_dir/fake_plugin.py"
|
|
rally("--plugin-paths %s env check" % plugings)
|
|
except utils.RallyCliError as e:
|
|
self.assertIn(
|
|
"Plugin existing@openstack.check_health() method is broken",
|
|
e.output)
|
|
|
|
def test_check_api_info_fail_3(self):
|
|
rally = utils.Rally()
|
|
spec = copy.deepcopy(rally.env_spec)
|
|
spec["existing@openstack"]["api_info"] = {
|
|
"faileddummy": {
|
|
"version": "2",
|
|
"service_type": "dummy"
|
|
}
|
|
}
|
|
spec = utils.JsonTempFile(spec)
|
|
rally("env create --name t_create_env_with_api_info"
|
|
" --spec %s" % spec.filename)
|
|
try:
|
|
plugings = "tests/functional/extra/fake_dir/fake_plugin.py"
|
|
rally("--plugin-paths %s env check" % plugings)
|
|
except utils.RallyCliError as e:
|
|
self.assertIn("Can not create 'faileddummy' with 2 version",
|
|
e.output)
|
|
|
|
def test_create_env_with_https_cert_https_key(self):
|
|
rally = utils.Rally()
|
|
fake_spec = copy.deepcopy(rally.env_spec)
|
|
fake_spec["existing@openstack"]["https_cert"] = ""
|
|
fake_spec["existing@openstack"]["https_key"] = ""
|
|
spec = utils.JsonTempFile(fake_spec)
|
|
rally("env create --name t_create_env --spec %s" % spec.filename)
|
|
config = rally("env show --only-spec", getjson=True)
|
|
self.assertIn("https_cert", config["existing@openstack"].keys())
|
|
self.assertIn("https_key", config["existing@openstack"].keys())
|
|
rally("env check")
|
|
rally("env info")
|