123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516 |
- # -*- coding: utf-8 -*-
- '''
- Base classes for napalm unit tests
- :codeauthor: :email:`Anthony Shaw <anthonyshaw@apache.org>`
- '''
- from __future__ import absolute_import
- from functools import wraps
- TEST_INTERFACES = {
- 'Management1': {
- 'is_up': False,
- 'is_enabled': False,
- 'description': u'',
- 'last_flapped': -1,
- 'speed': 1000,
- 'mac_address': u'dead:beef:dead',
- }
- }
- # Test data
- TEST_FACTS = {
- '__opts__': {},
- 'OPTIONAL_ARGS': {},
- 'uptime': 'Forever',
- 'UP': True,
- 'HOSTNAME': 'test-device.com',
- 'hostname': 'test-device.com',
- 'username': 'admin',
- 'os_version': '1.2.3',
- 'model': 'test_model',
- 'serial_number': '123456',
- 'vendor': 'cisco',
- 'interface_list': TEST_INTERFACES
- }
- TEST_ENVIRONMENT = {
- 'hot': 'yes'
- }
- TEST_COMMAND_RESPONSE = {
- 'show run': 'all the command output'
- }
- TEST_TRACEROUTE_RESPONSE = {
- 'success': {
- 1: {
- 'probes': {
- 1: {
- 'rtt': 1.123,
- 'ip_address': u'206.223.116.21',
- 'host_name': u'eqixsj-google-gige.google.com'
- }
- }
- }
- }
- }
- TEST_PING_RESPONSE = {
- 'success': {
- 'probes_sent': 5,
- 'packet_loss': 0,
- 'rtt_min': 72.158,
- 'rtt_max': 72.433,
- 'rtt_avg': 72.268,
- 'rtt_stddev': 0.094,
- 'results': [
- {
- 'ip_address': '1.1.1.1',
- 'rtt': 72.248
- }
- ]
- }
- }
- TEST_ARP_TABLE = [
- {
- 'interface': 'MgmtEth0/RSP0/CPU0/0',
- 'mac': '5C:5E:AB:DA:3C:F0',
- 'ip': '172.17.17.1',
- 'age': 1454496274.84
- }
- ]
- TEST_IPADDRS = {
- 'FastEthernet8': {
- 'ipv4': {
- '10.66.43.169': {
- 'prefix_length': 22
- }
- }
- }
- }
- TEST_INTERFACES = {
- 'Management1': {
- 'is_up': False,
- 'is_enabled': False,
- 'description': u'',
- 'last_flapped': -1,
- 'speed': 1000,
- 'mac_address': u'dead:beef:dead',
- }
- }
- TEST_LLDP_NEIGHBORS = {
- u'Ethernet2':
- [
- {
- 'hostname': u'junos-unittest',
- 'port': u'520',
- }
- ]
- }
- TEST_MAC_TABLE = [
- {
- 'mac': '00:1C:58:29:4A:71',
- 'interface': 'Ethernet47',
- 'vlan': 100,
- 'static': False,
- 'active': True,
- 'moves': 1,
- 'last_move': 1454417742.58
- }
- ]
- TEST_RUNNING_CONFIG = {
- 'one': 'two'
- }
- TEST_OPTICS = {
- 'et1': {
- 'physical_channels': {
- 'channel': [
- {
- 'index': 0,
- 'state': {
- 'input_power': {
- 'instant': 0.0,
- 'avg': 0.0,
- 'min': 0.0,
- 'max': 0.0,
- },
- 'output_power': {
- 'instant': 0.0,
- 'avg': 0.0,
- 'min': 0.0,
- 'max': 0.0,
- },
- 'laser_bias_current': {
- 'instant': 0.0,
- 'avg': 0.0,
- 'min': 0.0,
- 'max': 0.0,
- },
- }
- }
- ]
- }
- }
- }
- TEST_BGP_CONFIG = {
- 'test': 'value'
- }
- TEST_BGP_NEIGHBORS = {
- 'default': {
- 8121: [
- {
- 'up': True,
- 'local_as': 13335,
- 'remote_as': 8121,
- 'local_address': u'172.101.76.1',
- 'local_address_configured': True,
- 'local_port': 179,
- 'remote_address': u'192.247.78.0',
- 'router_id': u'192.168.0.1',
- 'remote_port': 58380,
- 'multihop': False,
- 'import_policy': u'4-NTT-TRANSIT-IN',
- 'export_policy': u'4-NTT-TRANSIT-OUT',
- 'input_messages': 123,
- 'output_messages': 13,
- 'input_updates': 123,
- 'output_updates': 5,
- 'messages_queued_out': 23,
- 'connection_state': u'Established',
- 'previous_connection_state': u'EstabSync',
- 'last_event': u'RecvKeepAlive',
- 'suppress_4byte_as': False,
- 'local_as_prepend': False,
- 'holdtime': 90,
- 'configured_holdtime': 90,
- 'keepalive': 30,
- 'configured_keepalive': 30,
- 'active_prefix_count': 132808,
- 'received_prefix_count': 566739,
- 'accepted_prefix_count': 566479,
- 'suppressed_prefix_count': 0,
- 'advertise_prefix_count': 0,
- 'flap_count': 27
- }
- ]
- }
- }
- TEST_TERM_CONFIG = {
- 'result': True,
- 'already_configured': False
- }
- TEST_NTP_PEERS = {
- '192.168.0.1': 1,
- '172.17.17.1': 2,
- '172.17.17.2': 3,
- '2400:cb00:6:1024::c71b:840a': 4
- }
- TEST_NTP_SERVERS = {
- '192.168.0.1': 1,
- '172.17.17.1': 2,
- '172.17.17.2': 3,
- '2400:cb00:6:1024::c71b:840a': 4
- }
- TEST_NTP_STATS = [
- {
- 'remote': u'188.114.101.4',
- 'referenceid': u'188.114.100.1',
- 'synchronized': True,
- 'stratum': 4,
- 'type': u'-',
- 'when': u'107',
- 'hostpoll': 256,
- 'reachability': 377,
- 'delay': 164.228,
- 'offset': -13.866,
- 'jitter': 2.695
- }
- ]
- TEST_PROBES_CONFIG = {
- 'probe1': {
- 'test1': {
- 'probe_type': 'icmp-ping',
- 'target': '192.168.0.1',
- 'source': '192.168.0.2',
- 'probe_count': 13,
- 'test_interval': 3
- },
- 'test2': {
- 'probe_type': 'http-ping',
- 'target': '172.17.17.1',
- 'source': '192.17.17.2',
- 'probe_count': 5,
- 'test_interval': 60
- }
- }
- }
- TEST_PROBES_RESULTS = {
- 'probe1': {
- 'test1': {
- 'last_test_min_delay': 63.120,
- 'global_test_min_delay': 62.912,
- 'current_test_avg_delay': 63.190,
- 'global_test_max_delay': 177.349,
- 'current_test_max_delay': 63.302,
- 'global_test_avg_delay': 63.802,
- 'last_test_avg_delay': 63.438,
- 'last_test_max_delay': 65.356,
- 'probe_type': 'icmp-ping',
- 'rtt': 63.138,
- 'last_test_loss': 0,
- 'round_trip_jitter': -59.0,
- 'target': '192.168.0.1',
- 'source': '192.168.0.2',
- 'probe_count': 15,
- 'current_test_min_delay': 63.138
- },
- 'test2': {
- 'last_test_min_delay': 176.384,
- 'global_test_min_delay': 169.226,
- 'current_test_avg_delay': 177.098,
- 'global_test_max_delay': 292.628,
- 'current_test_max_delay': 180.055,
- 'global_test_avg_delay': 177.959,
- 'last_test_avg_delay': 177.178,
- 'last_test_max_delay': 184.671,
- 'probe_type': 'icmp-ping',
- 'rtt': 176.449,
- 'last_test_loss': 0,
- 'round_trip_jitter': -34.0,
- 'target': '172.17.17.1',
- 'source': '172.17.17.2',
- 'probe_count': 15,
- 'current_test_min_delay': 176.402
- }
- }
- }
- TEST_ROUTE = {
- '172.16.0.0/25': [
- {
- 'protocol': 'BGP',
- 'last_active': True,
- 'current_active': True,
- 'age': 1178693,
- 'routing_table': 'inet.0',
- 'next_hop': '192.168.0.11',
- 'outgoing_interface': 'xe-1/1/1.100',
- 'preference': 170,
- 'selected_next_hop': False,
- 'protocol_attributes': {
- 'remote_as': 65001,
- 'metric': 5,
- 'local_as': 13335,
- 'as_path': '',
- 'remote_address': '192.168.0.11',
- 'metric2': 0,
- 'local_preference': 0,
- 'communities': [
- '0:2',
- 'no-export'
- ],
- 'preference2': -1
- },
- 'inactive_reason': ''
- },
- {
- 'protocol': 'BGP',
- 'last_active': False,
- 'current_active': False,
- 'age': 2359429,
- 'routing_table': 'inet.0',
- 'next_hop': '192.168.0.17',
- 'outgoing_interface': 'xe-1/1/1.100',
- 'preference': 170,
- 'selected_next_hop': True,
- 'protocol_attributes': {
- 'remote_as': 65001,
- 'metric': 5,
- 'local_as': 13335,
- 'as_path': '',
- 'remote_address': '192.168.0.17',
- 'metric2': 0,
- 'local_preference': 0,
- 'communities': [
- '0:3',
- 'no-export'
- ],
- 'preference2': -1
- },
- 'inactive_reason': 'Not Best in its group - Router ID'
- }
- ]
- }
- TEST_SNMP_INFO = {
- 'test_': 'value'
- }
- TEST_USERS = {
- 'mircea': {
- 'level': 15,
- 'password': '$1$0P70xKPa$4jt5/10cBTckk6I/w/',
- 'sshkeys': [
- 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4pFn+shPwTb2yELO4L7NtQrKOJXNeCl1je\
- l9STXVaGnRAnuc2PXl35vnWmcUq6YbUEcgUTRzzXfmelJKuVJTJIlMXii7h2xkbQp0YZIEs4P\
- 8ipwnRBAxFfk/ZcDsdfsdfsdfsdN56ejk345jhk345jk345jk341p3A/9LIL7l6YewLBCwJj6\
- D+fWSJ0/YW+7oH17Fk2HH+tw0L5PcWLHkwA4t60iXn16qDbIk/ze6jv2hDGdCdz7oYQeCE55C\
- CHOHMJWYfN3jcL4s0qv8/u6Ka1FVkV7iMmro7ChThoV/5snI4Ljf2wKqgHH7TfNaCfpU0WvHA\
- nTs8zhOrGScSrtb mircea@master-roshi'
- ]
- }
- }
- class MockNapalmDevice(object):
- '''Setup a mock device for our tests'''
- def get_facts(self):
- return TEST_FACTS
- def get_environment(self):
- return TEST_ENVIRONMENT
- def get_arp_table(self):
- return TEST_ARP_TABLE
- def get(self, key, default=None, *args, **kwargs):
- try:
- if key == 'DRIVER':
- return self
- return TEST_FACTS[key]
- except KeyError:
- return default
- def cli(self, commands, *args, **kwargs):
- assert commands[0] == 'show run'
- return TEST_COMMAND_RESPONSE
- def traceroute(self, destination, **kwargs):
- assert destination == 'destination.com'
- return TEST_TRACEROUTE_RESPONSE
- def ping(self, destination, **kwargs):
- assert destination == 'destination.com'
- return TEST_PING_RESPONSE
- def get_config(self, retrieve='all'):
- assert retrieve == 'running'
- return TEST_RUNNING_CONFIG
- def get_interfaces_ip(self, **kwargs):
- return TEST_IPADDRS
- def get_interfaces(self, **kwargs):
- return TEST_INTERFACES
- def get_lldp_neighbors_detail(self, **kwargs):
- return TEST_LLDP_NEIGHBORS
- def get_mac_address_table(self, **kwargs):
- return TEST_MAC_TABLE
- def get_optics(self, **kwargs):
- return TEST_OPTICS
- def load_merge_candidate(self, filename=None, config=None):
- assert config == 'new config'
- return TEST_RUNNING_CONFIG
- def load_replace_candidate(self, filename=None, config=None):
- assert config == 'new config'
- return TEST_RUNNING_CONFIG
- def commit_config(self, **kwargs):
- return TEST_RUNNING_CONFIG
- def discard_config(self, **kwargs):
- return TEST_RUNNING_CONFIG
- def compare_config(self, **kwargs):
- return TEST_RUNNING_CONFIG
- def rollback(self, **kwargs):
- return TEST_RUNNING_CONFIG
- def get_bgp_config(self, **kwargs):
- return TEST_BGP_CONFIG
- def get_bgp_neighbors_detail(self, neighbor_address=None, **kwargs):
- assert neighbor_address is None or "test_address"
- return TEST_BGP_NEIGHBORS
- def get_ntp_peers(self, **kwargs):
- return TEST_NTP_PEERS
- def get_ntp_servers(self, **kwargs):
- return TEST_NTP_SERVERS
- def get_ntp_stats(self, **kwargs):
- return TEST_NTP_STATS
- def get_probes_config(self, **kwargs):
- return TEST_PROBES_CONFIG
- def get_probes_results(self, **kwargs):
- return TEST_PROBES_RESULTS
- def get_route_to(self, destination, protocol=None, **kwargs):
- assert destination == '1.2.3.4'
- return TEST_ROUTE
- def get_snmp_information(self, **kwargs):
- return TEST_SNMP_INFO
- def get_users(self, **kwargs):
- return TEST_USERS
- def mock_proxy_napalm_wrap(func):
- '''
- The proper decorator checks for proxy minions. We don't care
- so just pass back to the origination function
- '''
- @wraps(func)
- def func_wrapper(*args, **kwargs):
- func.__globals__['napalm_device'] = MockNapalmDevice()
- return func(*args, **kwargs)
- return func_wrapper
- import salt.utils.napalm as napalm_utils # NOQA
- napalm_utils.proxy_napalm_wrap = mock_proxy_napalm_wrap # NOQA
- def true(name):
- return True
- def random_hash(source, method):
- return 12346789
- def join(*files):
- return True
- def get_managed_file(*args, **kwargs):
- return 'True'
|