123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519 |
- """
- Base classes for napalm unit tests
- :codeauthor: :email:`Anthony Shaw <anthonyshaw@apache.org>`
- """
- from functools import wraps
- from salt.utils.immutabletypes import freeze
- TEST_INTERFACES = freeze(
- {
- "Management1": {
- "is_up": False,
- "is_enabled": False,
- "description": "",
- "last_flapped": -1,
- "speed": 1000,
- "mac_address": "dead:beef:dead",
- }
- }
- )
- # Test data
- TEST_FACTS = freeze(
- {
- "__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 = freeze({"hot": "yes"})
- TEST_COMMAND_RESPONSE = freeze({"show run": "all the command output"})
- TEST_TRACEROUTE_RESPONSE = freeze(
- {
- "success": {
- 1: {
- "probes": {
- 1: {
- "rtt": 1.123,
- "ip_address": "206.223.116.21",
- "host_name": "eqixsj-google-gige.google.com",
- }
- }
- }
- }
- }
- )
- TEST_PING_RESPONSE = freeze(
- {
- "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 = freeze(
- [
- {
- "interface": "MgmtEth0/RSP0/CPU0/0",
- "mac": "5C:5E:AB:DA:3C:F0",
- "ip": "172.17.17.1",
- "age": 1454496274.84,
- }
- ]
- )
- TEST_IPADDRS = freeze(
- {"FastEthernet8": {"ipv4": {"10.66.43.169": {"prefix_length": 22}}}}
- )
- TEST_INTERFACES = freeze(
- {
- "Management1": {
- "is_up": False,
- "is_enabled": False,
- "description": "",
- "last_flapped": -1,
- "speed": 1000,
- "mac_address": "dead:beef:dead",
- }
- }
- )
- TEST_LLDP_NEIGHBORS = freeze(
- {"Ethernet2": [{"hostname": "junos-unittest", "port": "520"}]}
- )
- TEST_MAC_TABLE = freeze(
- [
- {
- "mac": "00:1C:58:29:4A:71",
- "interface": "Ethernet47",
- "vlan": 100,
- "static": False,
- "active": True,
- "moves": 1,
- "last_move": 1454417742.58,
- }
- ]
- )
- TEST_RUNNING_CONFIG = freeze({"one": "two"})
- TEST_OPTICS = freeze(
- {
- "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 = freeze({"test": "value"})
- TEST_BGP_NEIGHBORS = freeze(
- {
- "default": {
- 8121: [
- {
- "up": True,
- "local_as": 13335,
- "remote_as": 8121,
- "local_address": "172.101.76.1",
- "local_address_configured": True,
- "local_port": 179,
- "remote_address": "192.247.78.0",
- "router_id": "192.168.0.1",
- "remote_port": 58380,
- "multihop": False,
- "import_policy": "4-NTT-TRANSIT-IN",
- "export_policy": "4-NTT-TRANSIT-OUT",
- "input_messages": 123,
- "output_messages": 13,
- "input_updates": 123,
- "output_updates": 5,
- "messages_queued_out": 23,
- "connection_state": "Established",
- "previous_connection_state": "EstabSync",
- "last_event": "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 = freeze({"result": True, "already_configured": False})
- TEST_NTP_PEERS = freeze(
- {
- "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 = freeze(
- {
- "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 = freeze(
- [
- {
- "remote": "188.114.101.4",
- "referenceid": "188.114.100.1",
- "synchronized": True,
- "stratum": 4,
- "type": "-",
- "when": "107",
- "hostpoll": 256,
- "reachability": 377,
- "delay": 164.228,
- "offset": -13.866,
- "jitter": 2.695,
- }
- ]
- )
- TEST_PROBES_CONFIG = freeze(
- {
- "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 = freeze(
- {
- "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 = freeze(
- {
- "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 = freeze({"test_": "value"})
- TEST_USERS = freeze(
- {
- "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:
- """Setup a mock device for our tests"""
- def __init__(self):
- self._d = {}
- def __getitem__(self, key):
- return self._d[key]
- def __setitem__(self, key, value):
- self._d[key] = value
- def get_facts(self):
- return TEST_FACTS.copy()
- def get_environment(self):
- return TEST_ENVIRONMENT.copy()
- def get_arp_table(self):
- return TEST_ARP_TABLE.copy()
- def get(self, key, default=None, *args, **kwargs):
- try:
- if key == "DRIVER":
- return self
- return TEST_FACTS.copy()[key]
- except KeyError:
- return default
- def cli(self, commands, *args, **kwargs):
- assert commands[0] == "show run"
- return TEST_COMMAND_RESPONSE.copy()
- def traceroute(self, destination, **kwargs):
- assert destination == "destination.com"
- return TEST_TRACEROUTE_RESPONSE.copy()
- def ping(self, destination, **kwargs):
- assert destination == "destination.com"
- return TEST_PING_RESPONSE.copy()
- def get_config(self, retrieve="all"):
- assert retrieve == "running"
- return TEST_RUNNING_CONFIG.copy()
- def get_interfaces_ip(self, **kwargs):
- return TEST_IPADDRS.copy()
- def get_interfaces(self, **kwargs):
- return TEST_INTERFACES.copy()
- def get_lldp_neighbors_detail(self, **kwargs):
- return TEST_LLDP_NEIGHBORS.copy()
- def get_mac_address_table(self, **kwargs):
- return TEST_MAC_TABLE.copy()
- def get_optics(self, **kwargs):
- return TEST_OPTICS.copy()
- def load_merge_candidate(self, filename=None, config=None):
- assert config == "new config"
- return TEST_RUNNING_CONFIG.copy()
- def load_replace_candidate(self, filename=None, config=None):
- assert config == "new config"
- return TEST_RUNNING_CONFIG.copy()
- def commit_config(self, **kwargs):
- return TEST_RUNNING_CONFIG.copy()
- def discard_config(self, **kwargs):
- return TEST_RUNNING_CONFIG.copy()
- def compare_config(self, **kwargs):
- return TEST_RUNNING_CONFIG.copy()
- def rollback(self, **kwargs):
- return TEST_RUNNING_CONFIG.copy()
- def get_bgp_config(self, **kwargs):
- return TEST_BGP_CONFIG.copy()
- def get_bgp_neighbors_detail(self, neighbor_address=None, **kwargs):
- assert neighbor_address is None or "test_address"
- return TEST_BGP_NEIGHBORS.copy()
- def get_ntp_peers(self, **kwargs):
- return TEST_NTP_PEERS.copy()
- def get_ntp_servers(self, **kwargs):
- return TEST_NTP_SERVERS.copy()
- def get_ntp_stats(self, **kwargs):
- return TEST_NTP_STATS.copy()
- def get_probes_config(self, **kwargs):
- return TEST_PROBES_CONFIG.copy()
- def get_probes_results(self, **kwargs):
- return TEST_PROBES_RESULTS.copy()
- def get_route_to(self, destination, protocol=None, **kwargs):
- assert destination == "1.2.3.4"
- return TEST_ROUTE.copy()
- def get_snmp_information(self, **kwargs):
- return TEST_SNMP_INFO.copy()
- def get_users(self, **kwargs):
- return TEST_USERS.copy()
- 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
- 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"
|