Log console output for mac_learning and multicast tests
Would be useful to debug ssh failures in test vms. Also for trunk_tests move check_connectivity method call to _configure_vlan_subport as there SSH is attempted and that can fail. Related-Bug: #1952066 Change-Id: I64a1fd8118c9db1f337b7bf97bb9a77f974149b9
This commit is contained in:
parent
6390d3d500
commit
c4597e696d
@ -14,8 +14,10 @@
|
||||
# under the License.
|
||||
|
||||
from oslo_log import log
|
||||
from paramiko import ssh_exception as ssh_exc
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import decorators
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
|
||||
from neutron_tempest_plugin.common import ssh
|
||||
from neutron_tempest_plugin.common import utils
|
||||
@ -116,17 +118,22 @@ class MacLearningTest(base.BaseTempestTestCase):
|
||||
pkey=self.keypair['private_key'])
|
||||
return server
|
||||
|
||||
def _check_cmd_installed_on_server(self, ssh_client, server_id, cmd):
|
||||
def _check_cmd_installed_on_server(self, ssh_client, server, cmd):
|
||||
try:
|
||||
ssh_client.execute_script('which %s' % cmd)
|
||||
except (lib_exc.SSHTimeout, ssh_exc.AuthenticationException) as ssh_e:
|
||||
LOG.debug(ssh_e)
|
||||
self._log_console_output([server])
|
||||
self._log_local_network_status()
|
||||
raise
|
||||
except exceptions.SSHScriptFailed:
|
||||
raise self.skipException(
|
||||
"%s is not available on server %s" % (cmd, server_id))
|
||||
"%s is not available on server %s" % (cmd, server['id']))
|
||||
|
||||
def _prepare_sender(self, server, address):
|
||||
check_script = get_sender_script(self.sender_output_file, address,
|
||||
self.completed_message)
|
||||
self._check_cmd_installed_on_server(server['ssh_client'], server['id'],
|
||||
self._check_cmd_installed_on_server(server['ssh_client'], server,
|
||||
'tcpdump')
|
||||
server['ssh_client'].execute_script(
|
||||
'echo "%s" > %s' % (check_script, self.sender_script_file))
|
||||
@ -135,7 +142,7 @@ class MacLearningTest(base.BaseTempestTestCase):
|
||||
check_script = get_receiver_script(
|
||||
result_file=self.output_file,
|
||||
packets_expected=n_packets)
|
||||
self._check_cmd_installed_on_server(server['ssh_client'], server['id'],
|
||||
self._check_cmd_installed_on_server(server['ssh_client'], server,
|
||||
'tcpdump')
|
||||
server['ssh_client'].execute_script(
|
||||
'echo "%s" > %s' % (check_script, self.receiver_script_file))
|
||||
|
@ -16,8 +16,10 @@
|
||||
import netaddr
|
||||
from neutron_lib import constants
|
||||
from oslo_log import log
|
||||
from paramiko import ssh_exception as ssh_exc
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import decorators
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
|
||||
from neutron_tempest_plugin.common import ip
|
||||
from neutron_tempest_plugin.common import ssh
|
||||
@ -210,15 +212,20 @@ class BaseMulticastTest(object):
|
||||
self.username,
|
||||
pkey=self.keypair['private_key'])
|
||||
self._check_cmd_installed_on_server(server['ssh_client'],
|
||||
server['id'], PYTHON3_BIN)
|
||||
server, PYTHON3_BIN)
|
||||
return server
|
||||
|
||||
def _check_cmd_installed_on_server(self, ssh_client, server_id, cmd):
|
||||
def _check_cmd_installed_on_server(self, ssh_client, server, cmd):
|
||||
try:
|
||||
ssh_client.execute_script('which %s' % cmd)
|
||||
except (lib_exc.SSHTimeout, ssh_exc.AuthenticationException) as ssh_e:
|
||||
LOG.debug(ssh_e)
|
||||
self._log_console_output([server])
|
||||
self._log_local_network_status()
|
||||
raise
|
||||
except exceptions.SSHScriptFailed:
|
||||
raise self.skipException(
|
||||
"%s is not available on server %s" % (cmd, server_id))
|
||||
"%s is not available on server %s" % (cmd, server['id']))
|
||||
|
||||
def _prepare_sender(self, server, mcast_address):
|
||||
check_script = get_sender_script(
|
||||
@ -237,7 +244,7 @@ class BaseMulticastTest(object):
|
||||
server['fip']['floating_ip_address'],
|
||||
self.username,
|
||||
pkey=self.keypair['private_key'])
|
||||
self._check_cmd_installed_on_server(ssh_client, server['id'],
|
||||
self._check_cmd_installed_on_server(ssh_client, server,
|
||||
PYTHON3_BIN)
|
||||
server['ssh_client'].execute_script(
|
||||
'echo "%s" > /tmp/multicast_traffic_receiver.py' % check_script)
|
||||
@ -253,7 +260,7 @@ class BaseMulticastTest(object):
|
||||
check_script = get_unregistered_script(
|
||||
interface=port_iface, group=mcast_address,
|
||||
result_file=self.unregistered_output_file)
|
||||
self._check_cmd_installed_on_server(ssh_client, server['id'],
|
||||
self._check_cmd_installed_on_server(ssh_client, server,
|
||||
'tcpdump')
|
||||
server['ssh_client'].execute_script(
|
||||
'echo "%s" > /tmp/unregistered_traffic_receiver.sh' % check_script)
|
||||
|
@ -114,11 +114,6 @@ class TrunkTest(base.BaseTempestTestCase):
|
||||
vlan_tag=segmentation_id,
|
||||
vlan_subnet=vlan_subnet)
|
||||
|
||||
for server in server_list:
|
||||
self.check_connectivity(
|
||||
host=vm.floating_ip['floating_ip_address'],
|
||||
ssh_client=vm.ssh_client)
|
||||
|
||||
return server_list
|
||||
|
||||
def _check_servers_remote_connectivity(self, vms=None,
|
||||
@ -197,6 +192,10 @@ class TrunkTest(base.BaseTempestTestCase):
|
||||
self._wait_for_trunk(trunk=vm.trunk)
|
||||
self._wait_for_port(port=vm.port)
|
||||
self._wait_for_port(port=vm.subport)
|
||||
self.check_connectivity(
|
||||
host=vm.floating_ip['floating_ip_address'],
|
||||
ssh_client=vm.ssh_client,
|
||||
servers=[vm.server])
|
||||
|
||||
ip_command = ip.IPCommand(ssh_client=vm.ssh_client)
|
||||
for address in ip_command.list_addresses(port=vm.port):
|
||||
|
Loading…
Reference in New Issue
Block a user