Fix exception handling in tests

HTTP client was replaced by keystoneauth1 session -> update test code
Related-bug: #1609705

Change-Id: I1b3881e7c75fd0163347d4d6605dd979087393eb
(cherry picked from commit 92a2518)
This commit is contained in:
Alexey Stepanov 2016-08-08 13:07:46 +03:00
parent 22edd69503
commit af71a8bf83
9 changed files with 114 additions and 138 deletions

View File

@ -16,10 +16,10 @@ from __future__ import division
import hashlib
import json
from time import sleep
import os
import re
from time import sleep
from devops.error import TimeoutError
from devops.helpers.helpers import wait_pass
from devops.helpers.helpers import wait
@ -29,10 +29,7 @@ from proboscis.asserts import assert_equal
from proboscis.asserts import assert_false
from proboscis.asserts import assert_true
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
from six.moves.urllib.error import URLError
# pylint: enable=import-error
from keystoneauth1 import exceptions
import yaml
from fuelweb_test import logger
@ -60,11 +57,11 @@ def check_cinder_status(ip):
| cinder-scheduler | node-2.test.domain.local | nova | enabled | down |
"""
cmd = '. openrc; cinder service-list'
result = ssh_manager.execute(
result = ssh_manager.execute_on_remote(
ip=ip,
cmd=cmd
)
cinder_services = ''.join(result['stdout'])
cinder_services = result['stdout_str']
logger.debug('>$ cinder service-list\n{}'.format(cinder_services))
if result['exit_code'] == 0:
return all(' up ' in x.split('enabled')[1]
@ -248,7 +245,7 @@ def enable_feature_group(env, group):
try:
return (group in
env.fuel_web.client.get_api_version()["feature_groups"])
except (HTTPError, URLError):
except exceptions.HttpError:
return False
wait(check_api_group_enabled, interval=10, timeout=60 * 20,
@ -288,8 +285,8 @@ def restore_check_sum(ip):
'Test file /etc/fuel/data '
'was not restored!!! {0}'.format(res['stderr']))
logger.info("Restore check md5sum")
md5sum_backup = ssh_manager.execute(ip, "cat /etc/fuel/sum")
assert_true(''.join(md5sum_backup['stdout']).strip(),
md5sum_backup = ssh_manager.execute_on_remote(ip, "cat /etc/fuel/sum")
assert_true(md5sum_backup['stdout_str'],
'Command cat /etc/fuel/sum '
'failed with {0}'.format(md5sum_backup['stderr']))
md5sum_restore = ssh_manager.execute(
@ -927,7 +924,7 @@ def check_neutron_dhcp_lease(ip, instance_ip, instance_mac,
dhcp_server_ip, dhcp_port_tag):
"""Check if the DHCP server offers a lease for a client with the specified
MAC address
:param SSHClient remote: fuel-devops.helpers.helpers object
:param ip: remote IP
:param str instance_ip: IP address of instance
:param str instance_mac: MAC address that will be checked
:param str dhcp_server_ip: IP address of DHCP server for request a lease
@ -1111,8 +1108,8 @@ def check_hiera_hosts(nodes, cmd):
result = ssh_manager.execute_on_remote(
ip=node['ip'],
cmd=cmd
)['stdout']
hosts = ''.join(result).strip().split(',')
)['stdout_str']
hosts = result.split(',')
logger.debug("hosts on {0} are {1}".format(node['hostname'], hosts))
if not hiera_hosts:
@ -1147,7 +1144,7 @@ def check_offload(ip, interface, offload_type):
err_msg="Failed to get Offload {0} "
"on node {1}".format(offload_type, ip)
)
return ''.join(result['stdout']).rstrip()
return result['stdout_str']
def check_get_network_data_over_cli(ip, cluster_id, path):

View File

@ -33,6 +33,7 @@ except ImportError:
# pylint: enable=no-member
from devops.helpers.helpers import wait_pass
from devops.helpers.helpers import wait
from keystoneauth1 import exceptions
import netaddr
from proboscis.asserts import assert_equal
from proboscis.asserts import assert_false
@ -40,9 +41,6 @@ from proboscis.asserts import assert_is_not_none
from proboscis.asserts import assert_not_equal
from proboscis.asserts import assert_raises
from proboscis.asserts import assert_true
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
import yaml
from fuelweb_test import logger
@ -2151,8 +2149,9 @@ class FuelWebClient29(object):
logger.info('Selected task: {}'.format(task))
# Task will be removed with the cluster, so we will get 404 error
assert_raises(HTTPError,
self.assert_task_success, task, timeout)
assert_raises(
exceptions.NotFound,
self.assert_task_success, task, timeout)
else:
assert 'No cluster_deletion task found!'
@ -3211,6 +3210,7 @@ class FuelWebClient30(FuelWebClient29):
# TODO(ddmitriev): this code will be removed after moving to fuel-devops3.0
# pylint: disable=no-member
# noinspection PyUnresolvedReferences
if (distutils.version.LooseVersion(devops.__version__) <
distutils.version.LooseVersion('3')):
logger.info("Use FuelWebClient compatible to fuel-devops 2.9")

View File

@ -14,11 +14,9 @@
from copy import deepcopy
from keystoneauth1.exceptions import HttpError
from proboscis.asserts import assert_equal
from proboscis import test
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
from fuelweb_test import logger
from fuelweb_test.helpers.decorators import log_snapshot_after_test
@ -218,12 +216,14 @@ class BondingHAOneController(BondingTest):
nailgun_nodes[0]['id'],
interfaces_dict=interfaces_dict,
raw_data=invalid_bond_conf)
except HTTPError as exc:
if exc.code != exp_code:
except HttpError as exc:
if exc.http_status != exp_code:
logger.error(
'Raised: {exc!s},\n'
'Expected: {exp} with code={code}'.format(
exc=exc, exp=HTTPError.__class__, code=exp_code))
exc=exc,
exp=HttpError,
code=exp_code))
raise
logger.info('Test PASS: expected exception raised: '
@ -233,12 +233,15 @@ class BondingHAOneController(BondingTest):
logger.error(
'Raised: {exc!s},\n'
'Expected: {exp} with code={code}'.format(
exc=exc, exp=HTTPError.__class__, code=exp_code))
exc=exc,
exp=HttpError,
code=exp_code))
raise
raise AssertionError(
'Not raised any exception, while expected '
'{exp} with code={code}'.format(
exp=HTTPError.__class__, code=exp_code))
exp=HttpError,
code=exp_code))
@test(groups=["bonding_neutron", "bonding_ha", "bonding"])

View File

@ -12,22 +12,25 @@
# License for the specific language governing permissions and limitations
# under the License.
from keystoneauth1.exceptions import NotFound
from keystoneauth1.exceptions import BadRequest
from proboscis.asserts import assert_equal
from proboscis.asserts import fail
from proboscis import test
from proboscis import SkipTest
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test.tests.base_test_case import TestBasic
from fuelweb_test import logger
@test(groups=["clone_env_for_os_upgrade"],
depends_on_groups=["upgrade_ceph_ha_restore"],
enabled=False)
class TestCloneEnv(TestBasic):
snapshot = 'upgrade_ha_ceph_for_all_ubuntu_neutron_vlan'
@test(groups=["test_clone_environment"])
@log_snapshot_after_test
def test_clone_environment(self):
@ -40,11 +43,9 @@ class TestCloneEnv(TestBasic):
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
cluster_id = self.fuel_web.get_last_created_cluster()
cluster = self.fuel_web.client.get_cluster(cluster_id)
@ -126,11 +127,9 @@ class TestCloneEnv(TestBasic):
3. Check status code
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
data = {
"name": "new_test_cluster",
@ -138,8 +137,8 @@ class TestCloneEnv(TestBasic):
}
try:
self.fuel_web.client.clone_environment(1234567, data)
except HTTPError as e:
assert_equal(404, e.code)
except NotFound:
logger.debug('exceptions.NotFound received as expected')
else:
fail("Doesn't raise needed error")
@ -153,11 +152,9 @@ class TestCloneEnv(TestBasic):
3. Check status code
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
cluster_id = self.fuel_web.get_last_created_cluster()
cluster = self.fuel_web.client.get_cluster(cluster_id)
@ -170,8 +167,8 @@ class TestCloneEnv(TestBasic):
try:
self.fuel_web.client.clone_environment(cluster_id, data)
except HTTPError as e:
assert_equal(400, e.code)
except BadRequest:
logger.debug('exceptions.BadRequest received as expected')
else:
fail("Doesn't raise needed error")
@ -185,11 +182,9 @@ class TestCloneEnv(TestBasic):
3. Check status code
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
cluster_id = self.fuel_web.get_last_created_cluster()
@ -199,8 +194,8 @@ class TestCloneEnv(TestBasic):
try:
self.fuel_web.client.clone_environment(cluster_id, data)
except HTTPError as e:
assert_equal(400, e.code)
except BadRequest:
logger.debug('exceptions.BadRequest received as expected')
else:
fail("Doesn't raise needed error")
@ -214,18 +209,16 @@ class TestCloneEnv(TestBasic):
3. Check status code
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
cluster_id = self.fuel_web.get_last_created_cluster()
try:
self.fuel_web.client.clone_environment(cluster_id, None)
except HTTPError as e:
assert_equal(400, e.code)
except BadRequest:
logger.debug('exceptions.BadRequest received as expected')
else:
fail("Doesn't raise needed error")
@ -240,11 +233,9 @@ class TestCloneEnv(TestBasic):
3. Check status code
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
cluster_id = self.fuel_web.get_last_created_cluster()
@ -255,8 +246,8 @@ class TestCloneEnv(TestBasic):
try:
self.fuel_web.client.clone_environment(cluster_id, data)
except HTTPError as e:
assert_equal(404, e.code)
except NotFound:
logger.debug('exceptions.NotFound received as expected')
else:
fail("Doesn't raise needed error")
@ -271,11 +262,9 @@ class TestCloneEnv(TestBasic):
3. Check status code
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
cluster_id = self.fuel_web.get_last_created_cluster()
@ -286,8 +275,8 @@ class TestCloneEnv(TestBasic):
try:
self.fuel_web.client.clone_environment(cluster_id, data)
except HTTPError as e:
assert_equal(400, e.code)
except BadRequest:
logger.debug('exceptions.BadRequest received as expected')
else:
fail("Doesn't raise needed error")
@ -303,11 +292,9 @@ class TestCloneEnv(TestBasic):
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan",
skip_timesync=True)
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot, skip_timesync=True)
cluster_id = self.fuel_web.get_last_created_cluster()
cluster = self.fuel_web.client.get_cluster(cluster_id)
@ -322,7 +309,7 @@ class TestCloneEnv(TestBasic):
self.fuel_web.client.clone_environment(cluster_id, data)
try:
self.fuel_web.client.clone_environment(cluster_id, data)
except HTTPError as e:
assert_equal(400, e.code)
except BadRequest:
logger.debug('exceptions.BadRequest received as expected')
else:
fail("Doesn't raise needed error")

View File

@ -14,11 +14,9 @@
import random
from keystoneauth1.exceptions import BadRequest
from proboscis import asserts
from proboscis import test
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test.helpers import os_actions
@ -561,8 +559,8 @@ class NumaCpuPinning(TestBasic):
try:
self.fuel_web.client.upload_node_attributes(
compute_config, compute['id'])
except HTTPError as e:
asserts.assert_equal(400, e.code)
except BadRequest:
logger.debug('BadRequest received as expected')
else:
asserts.fail("Pinned all CPU on {0}, while expecting HTTP "
"error on CPU value {1}"
@ -573,8 +571,8 @@ class NumaCpuPinning(TestBasic):
try:
self.fuel_web.client.upload_node_attributes(
compute_config, compute['id'])
except HTTPError as e:
asserts.assert_equal(400, e.code)
except BadRequest:
logger.debug('BadRequest received as expected')
else:
asserts.fail("Pinned all CPU on {0}, while expecting HTTP "
"400 error on CPU value {1}"

View File

@ -14,13 +14,11 @@
from random import randrange
from re import match
from keystoneauth1.exceptions import BadRequest
from proboscis.asserts import assert_equal
from proboscis.asserts import assert_raises
from proboscis.asserts import assert_true
from proboscis import test
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
from fuelweb_test.helpers.checkers import check_ping
from fuelweb_test.helpers.decorators import log_snapshot_after_test
@ -208,7 +206,7 @@ class CustomHostname(TestBasic):
"node-",
):
assert_raises(
HTTPError,
BadRequest,
self.fuel_web.client.set_hostname,
node['id'],
invalid_hostname)
@ -237,7 +235,7 @@ class CustomHostname(TestBasic):
# Try to change the hostname of the provisioned node
assert_raises(
HTTPError,
BadRequest,
self.fuel_web.client.set_hostname,
node,
custom_hostname)
@ -280,7 +278,7 @@ class CustomHostname(TestBasic):
# Try to change the hostname of the provisioned node
# TODO(dkruglov): LP#1476722
assert_raises(
HTTPError,
BadRequest,
self.fuel_web.client.set_hostname,
node['id'],
'new-custom-hostname')

View File

@ -12,14 +12,14 @@
# License for the specific language governing permissions and limitations
# under the License.
from keystoneauth1.exceptions import NotFound
from keystoneauth1.exceptions import BadRequest
from proboscis.asserts import assert_equal
from proboscis.asserts import fail
from proboscis import test
from proboscis import SkipTest
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
from fuelweb_test import logger
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test.tests.base_test_case import TestBasic
@ -29,6 +29,8 @@ from fuelweb_test.tests.base_test_case import TestBasic
enabled=False)
class TestReassignNode(TestBasic):
snapshot = 'upgrade_ha_ceph_for_all_ubuntu_neutron_vlan'
@test(groups=["reassign_node_to_cloned_environment"])
@log_snapshot_after_test
def reassign_node_to_cloned_environment(self):
@ -41,10 +43,9 @@ class TestReassignNode(TestBasic):
5. Wait node successful provision
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan")
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot)
cluster_id = self.fuel_web.get_last_created_cluster()
cluster = self.fuel_web.client.get_cluster(cluster_id)
@ -119,10 +120,9 @@ class TestReassignNode(TestBasic):
3. Check status code: 404
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan")
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot)
cluster_id = self.fuel_web.get_last_created_cluster()
@ -135,8 +135,8 @@ class TestReassignNode(TestBasic):
try:
self.fuel_web.client.reassign_node(123456, data)
except HTTPError as e:
assert_equal(404, e.code)
except NotFound:
logger.debug('Got NotFound error as expected')
else:
fail("Doesn't rise HTTP 404 error"
"while reassigning"
@ -155,10 +155,9 @@ class TestReassignNode(TestBasic):
4. Check status code: 400
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan")
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot)
cluster_id = self.fuel_web.get_last_created_cluster()
cluster = self.fuel_web.client.get_cluster(cluster_id)
@ -176,8 +175,8 @@ class TestReassignNode(TestBasic):
try:
self.fuel_web.client.reassign_node(cloned_cluster["id"], None)
except HTTPError as e:
assert_equal(400, e.code)
except BadRequest:
logger.debug('Got BadRequest error as expected')
else:
fail("Doesn't raise HTTP 400 error on request"
"to reassigning node with empty body")
@ -193,10 +192,9 @@ class TestReassignNode(TestBasic):
4. Check status code: 400
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan")
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot)
cluster_id = self.fuel_web.get_last_created_cluster()
cluster = self.fuel_web.client.get_cluster(cluster_id)
@ -218,8 +216,8 @@ class TestReassignNode(TestBasic):
try:
self.fuel_web.client.reassign_node(cloned_cluster["id"], data)
except HTTPError as e:
assert_equal(400, e.code)
except BadRequest:
logger.debug('Got BadRequest error as expected')
else:
fail("Doesn't raise HTTP 400 error on request"
"to reassigning node with incorrect node_id")
@ -235,10 +233,9 @@ class TestReassignNode(TestBasic):
4. Check status code: 404
"""
if not self.env.d_env.has_snapshot(
"upgrade_ha_ceph_for_all_ubuntu_neutron_vlan"):
raise SkipTest()
self.env.revert_snapshot("upgrade_ha_ceph_for_all_ubuntu_neutron_vlan")
if not self.env.d_env.has_snapshot(self.snapshot):
raise SkipTest('Snapshot {} not found'.format(self.snapshot))
self.env.revert_snapshot(self.snapshot)
cluster_id = self.fuel_web.get_last_created_cluster()
cluster = self.fuel_web.client.get_cluster(cluster_id)
@ -260,8 +257,8 @@ class TestReassignNode(TestBasic):
try:
self.fuel_web.client.reassign_node(cloned_cluster["id"], data)
except HTTPError as e:
assert_equal(404, e.code)
except NotFound:
logger.debug('Got NotFound error as expected')
else:
fail("Doesn't raise HTTP 404 error on request"
"to reassigning nonexistent node to cloned cluster")

View File

@ -17,12 +17,10 @@ import time
import traceback
from devops.helpers import helpers
from keystoneauth1.exceptions import HttpError
import netaddr
from proboscis import asserts
from proboscis import test
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
from fuelweb_test.helpers.decorators import log_snapshot_after_test
from fuelweb_test.helpers import os_actions
@ -86,8 +84,8 @@ class ServicesReconfiguration(TestBasic):
func, *args, **kwargs):
try:
func(*args, **kwargs)
except HTTPError as e:
if e.code != expected_code:
except HttpError as e:
if e.http_status != expected_code:
raise
logger.warning('Ignoring exception: {!r}'.format(e))
logger.debug(traceback.format_exc())

View File

@ -17,9 +17,7 @@ import yaml
from proboscis import SkipTest
from proboscis import test
# pylint: disable=import-error
from six.moves.urllib.error import HTTPError
# pylint: enable=import-error
from keystoneauth1.exceptions import HttpError
# pylint: disable=redefined-builtin
from six.moves import xrange
# pylint: enable=redefined-builtin
@ -151,7 +149,7 @@ class UnlockSettingsTab(TestBasic):
try:
self.fuel_web.client.update_cluster_attributes(
self.cluster_id, new_attrs)
except HTTPError:
except HttpError:
logger.info(
"Failed to update cluster attributes, please check logs")
return False