123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #!/usr/bin/env python
- """
- setup_module: setup variables for later use.
- test_disable_paging: disable paging
- test_ssh_connect: verify ssh connectivity
- test_send_command: send a command
- test_send_command_expect: send a command
- test_base_prompt: test the base prompt
- test_strip_prompt: test removing the prompt
- test_strip_command: test stripping extraneous info after sending a command
- test_normalize_linefeeds: ensure \n is the only line termination character in output
- test_clear_buffer: clear text buffer
- test_enable_mode: verify enter enable mode
- test_disconnect: cleanly disconnect the SSH session
- """
- from __future__ import print_function
- from __future__ import unicode_literals
- import time
- def test_disable_paging(net_connect, commands, expected_responses):
- """Verify paging is disabled by looking for string after when paging would normally occur."""
- if net_connect.device_type == 'arista_eos':
- # Arista logging buffer gets enormous
- net_connect.send_command_expect('clear logging')
- multiple_line_output = net_connect.send_command_expect(commands["extended_output"])
- assert expected_responses["multiple_line_output"] in multiple_line_output
- if net_connect.device_type == 'arista_eos':
- # Arista output is slow and has router-name in output
- time.sleep(5)
- net_connect.clear_buffer()
- net_connect.send_command_expect('clear logging', expect_string='#')
- def test_ssh_connect(net_connect, commands, expected_responses):
- """Verify the connection was established successfully."""
- show_version = net_connect.send_command_expect(commands["version"])
- assert expected_responses["version_banner"] in show_version
- def test_ssh_connect_cm(net_connect_cm, commands, expected_responses):
- """Test the context manager."""
- prompt_str = net_connect_cm
- assert expected_responses['base_prompt'] in prompt_str
- def test_send_command_timing(net_connect, commands, expected_responses):
- """Verify a command can be sent down the channel successfully."""
- time.sleep(1)
- net_connect.clear_buffer()
- show_ip = net_connect.send_command_timing(commands["basic"])
- assert expected_responses['interface_ip'] in show_ip
- def test_send_command_expect(net_connect, commands, expected_responses):
- """Verify a command can be sent down the channel successfully using _expect method."""
- time.sleep(1)
- net_connect.clear_buffer()
- show_ip_alt = net_connect.send_command_expect(commands["basic"])
- assert expected_responses['interface_ip'] in show_ip_alt
- def test_base_prompt(net_connect, commands, expected_responses):
- """Verify the router prompt is detected correctly."""
- assert net_connect.base_prompt == expected_responses['base_prompt']
- def test_strip_prompt(net_connect, commands, expected_responses):
- """Ensure the router prompt is not in the command output."""
- show_ip = net_connect.send_command_timing(commands["basic"])
- show_ip_alt = net_connect.send_command_expect(commands["basic"])
- assert expected_responses['base_prompt'] not in show_ip
- assert expected_responses['base_prompt'] not in show_ip_alt
- def test_strip_command(net_connect, commands, expected_responses):
- """Ensure that the command that was executed does not show up in the command output."""
- show_ip = net_connect.send_command_timing(commands["basic"])
- show_ip_alt = net_connect.send_command_expect(commands["basic"])
- assert commands['basic'] not in show_ip
- assert commands['basic'] not in show_ip_alt
- def test_normalize_linefeeds(net_connect, commands, expected_responses):
- """Ensure no '\r\n' sequences."""
- show_version = net_connect.send_command_timing(commands["version"])
- show_version_alt = net_connect.send_command_expect(commands["version"])
- assert not '\r\n' in show_version
- assert not '\r\n' in show_version_alt
- def test_clear_buffer(net_connect, commands, expected_responses):
- """Test that clearing the buffer works."""
- # Manually send a command down the channel so that data needs read.
- net_connect.write_channel(commands["basic"] + '\n')
- time.sleep(4)
- net_connect.clear_buffer()
- # Should not be anything there on the second pass
- clear_buffer_check = net_connect.clear_buffer()
- assert clear_buffer_check is None
- def test_enable_mode(net_connect, commands, expected_responses):
- '''
- Test entering enable mode
- Catch exception for devices that don't support enable
- '''
- try:
- net_connect.enable()
- enable_prompt = net_connect.find_prompt()
- assert enable_prompt == expected_responses['enable_prompt']
- except AttributeError:
- assert True == True
- def test_disconnect(net_connect, commands, expected_responses):
- """Terminate the SSH session."""
- net_connect.disconnect()
|