Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix for #1229 #1230

Open
wants to merge 22 commits into
base: master
Choose a base branch
from

Conversation

Aaron-MJohn
Copy link

@Aaron-MJohn Aaron-MJohn commented Feb 6, 2023

Fix for #1229
Read the whole buffer and get the last keyword.

@Aaron-MJohn
Copy link
Author

Pushed a commit with black format.

@Aaron-MJohn
Copy link
Author

I pushed this commit to fix the pylint failing but that doesn't seems to reflect here in this PR. 31d7aee. Any idea why it's not showing up here.

@ydnath
Copy link
Member

ydnath commented Feb 14, 2023

@Aaron-MJohn I see this error for the link you have provided above - This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Also check the build failures

@Aaron-MJohn
Copy link
Author

I forked this repo and made a branch and created pull request from that branch to this repo.
Github also suggest doing that Add more commits by pushing to the bugfix/serial_connection branch on Aaron-MJohn/py-junos-eznc.

@ydnath
Copy link
Member

ydnath commented Feb 14, 2023

@Aaron-MJohn, your 3rd commit still needs to be pushed here. It is visible in your fork. The pull request shows only two commits. The build is failing for the black tool, and I believe your 3rd commit will address it.

@chidanandpujar
Copy link
Collaborator

Hi @Aaron-MJohn
black tool format errors are fixed as part of pull request - #1232 and it is merged now .
Please fork the repo and apply your changes to create a pull request , that should fix the build errors .

Thanks
Chidanand

@Aaron-MJohn
Copy link
Author

Hi @Aaron-MJohn black tool format errors are fixed as part of pull request - #1232 and it is merged now . Please fork the repo and apply your changes to create a pull request , that should fix the build errors .

Thanks Chidanand

Thank you, I have pushed the changes.

@Aaron-MJohn
Copy link
Author

@chidanandpujar can you approve the workflow.

@chidanandpujar
Copy link
Collaborator

Hi @Aaron-MJohn
Thanks,
Unit tests are failed with code changes , please review the failures .
https://github.com/Juniper/py-junos-eznc/actions/runs/4196520634/jobs/7336357705

Thanks
Chidanand

@Aaron-MJohn
Copy link
Author

Pushed fix for test. @chidanandpujar can you approve the workflow?

@chidanandpujar
Copy link
Collaborator

chidanandpujar commented Feb 24, 2023

Hi @Aaron-MJohn
Thanks for the fixing the UT failures .
I will run functional tests with your changes and update the results.

Thanks

@chidanandpujar
Copy link
Collaborator

Executed Functional tests , all the tests looks to be working fine ..

:~/pyez_serial_issue_1229/py-junos-eznc/tests/functional# nosetests -v --with-xunit --xunit-file=functionaltests.xml --with-coverage --cover-package=jnpr.junos --cover-xml --cover-inclusive --cover-erase test_config.py test_core.py test_exception.py test_file_ftp.py test_file_scp.py test_route_table.py test_rpc.py test_route_table.py test_shell.py test_table_present.py test_telnet.py test_utils_sw.py
test_load_config_jinja2 (tests.functional.test_config.TestCore) ... ok
test_load_config_jinja2_template (tests.functional.test_config.TestCore) ... ok
test_load_config_json (tests.functional.test_config.TestCore) ... ok
test_load_config_set (tests.functional.test_config.TestCore) ... ok
test_load_config_text (tests.functional.test_config.TestCore) ... ok
test_load_config_xml (tests.functional.test_config.TestCore) ... ok
test_device_cli (tests.functional.test_core.TestCore) ... /root/pyez_serial_issue_1229/py-junos-eznc/lib/jnpr/junos/device.py:724: RuntimeWarning: 
CLI command is for debug use only!
Instead of:
cli('show version')
Use:
rpc.get_software_information()

  warnings.warn(warning_string, RuntimeWarning)
ok
test_device_facts (tests.functional.test_core.TestCore) ... ok
test_device_get_timeout (tests.functional.test_core.TestCore) ... ok
test_device_open (tests.functional.test_core.TestCore) ... ok
test_device_rpc (tests.functional.test_core.TestCore) ... ok
test_device_rpc_format_text (tests.functional.test_core.TestCore) ... ok
test_device_rpc_normalize_true (tests.functional.test_core.TestCore) ... ok
test_device_rpc_timeout (tests.functional.test_core.TestCore) ... ok
test_device_set_timeout (tests.functional.test_core.TestCore) ... ok
test_load_config (tests.functional.test_core.TestCore) ... ok
test_FS_checksum (tests.functional.test_exception.TestUtilFs) ... ok
test_config_exception (tests.functional.test_exception.TestUtilFs) ... ok
test_device_rpc_timeout (tests.functional.test_exception.TestUtilFs) ... ok
test_exception (tests.functional.test_exception.TestUtilFs) ... ok
test_exception_commitError (tests.functional.test_exception.TestUtilFs) ... ok
test_exception_commitError_commitCheck (tests.functional.test_exception.TestUtilFs) ... ok
test_exception_severity (tests.functional.test_exception.TestUtilFs) ... ok
test_load_exception (tests.functional.test_exception.TestUtilFs) ... ok
test_lock_exception (tests.functional.test_exception.TestUtilFs) ... ok
test_rescue_action (tests.functional.test_exception.TestUtilFs) ... ok
test_rollback_id (tests.functional.test_exception.TestUtilFs) ... ok
test_rpc_exception (tests.functional.test_exception.TestUtilFs) ... ok
test_rpc_exist (tests.functional.test_exception.TestUtilFs) ... ok
test_rpc_load_extension (tests.functional.test_exception.TestUtilFs) ... /root/pyez_serial_issue_1229/py-junos-eznc/lib/jnpr/junos/utils/config.py:550: ResourceWarning: unclosed file <_io.TextIOWrapper name='./sample/load_fail.html' mode='r' encoding='UTF-8'>
  rpc_contents = open(kvargs["path"], "r", newline=None).read()
ResourceWarning: Enable tracemalloc to get the object allocation traceback
ok
test_rpc_no_format (tests.functional.test_exception.TestUtilFs) ... ok
test_rpc_set_override (tests.functional.test_exception.TestUtilFs) ... ok
test_unlock_exception (tests.functional.test_exception.TestUtilFs) ... ok
test_scp_put (tests.functional.test_file_scp.test) ... ok
test_scp_put_file_get (tests.functional.test_file_scp.test) ... /root/pyez_serial_issue_1229/py-junos-eznc/lib/jnpr/junos/utils/scp.py:46: DeprecationWarning: inspect.getargspec() is deprecated since Python 3.0, use inspect.signature() or inspect.getfullargspec()
  spec = inspect.getargspec(self._user_progress)
ok
test_device_rpc (tests.functional.test_rpc.TestCore) ... ok
test_device_rpc_format_text (tests.functional.test_rpc.TestCore) ... ok
test_device_rpc_timeout (tests.functional.test_rpc.TestCore) ... ok
test_display_xml_rpc (tests.functional.test_rpc.TestCore) ... ok
test_getConfig (tests.functional.test_rpc.TestCore) ... ok
test_interface_terse_text (tests.functional.test_rpc.TestCore) ... ok
test_route_information (tests.functional.test_rpc.TestCore) ... ok
test_rpc_get_interface_information_mtun (tests.functional.test_rpc.TestCore) ... ok
test_shell_run (tests.functional.test_shell.test) ... ok
test_arp_table (tests.functional.test_table_present.test_table) ... ok
test_arp_table_to_json (tests.functional.test_table_present.test_table) ... ok
test_table_get_value (tests.functional.test_table_present.test_table) ... ok

----------------------------------------------------------------------
XML: /root/pyez_serial_issue_1229/py-junos-eznc/tests/functional/functionaltests.xml
/root/pyez_serial_issue_1229/py-junos-eznc/lib/jnpr/junos/transport/tty.py:56: DeprecationWarning: invalid escape sequence \s
  '(?P<cli>[^\\-"]>\s*$)',
Name                                                  Stmts   Miss  Cover
-------------------------------------------------------------------------
jnpr/junos/__init__.py                                   27      0   100%
jnpr/junos/_version.py                                  279    152    46%
jnpr/junos/console.py                                   173    135    22%
jnpr/junos/decorators.py                                114     33    71%
jnpr/junos/device.py                                    514    228    56%
jnpr/junos/exception.py                                 129     38    71%
jnpr/junos/factcache.py                                 102     58    43%
jnpr/junos/factory/__init__.py                            8      3    62%
jnpr/junos/factory/cfgtable.py                          281    240    15%
jnpr/junos/factory/cmdtable.py                          212    161    24%
jnpr/junos/factory/cmdview.py                            32      9    72%
jnpr/junos/factory/factory_cls.py                       106     72    32%
jnpr/junos/factory/factory_loader.py                    238    146    39%
jnpr/junos/factory/optable.py                            74     49    34%
jnpr/junos/factory/state_machine.py                     425    385     9%
jnpr/junos/factory/table.py                             156     61    61%
jnpr/junos/factory/to_json.py                            50     26    48%
jnpr/junos/factory/view.py                              166     91    45%
jnpr/junos/factory/viewfields.py                         34     14    59%
jnpr/junos/facts/__init__.py                             32      2    94%
jnpr/junos/facts/current_re.py                           53     33    38%
jnpr/junos/facts/domain.py                               25     19    24%
jnpr/junos/facts/ethernet_mac_table.py                   25     21    16%
jnpr/junos/facts/file_list.py                            13     10    23%
jnpr/junos/facts/get_chassis_cluster_status.py           26     22    15%
jnpr/junos/facts/get_chassis_inventory.py                15     10    33%
jnpr/junos/facts/get_route_engine_information.py         54     51     6%
jnpr/junos/facts/get_software_information.py            145     77    47%
jnpr/junos/facts/get_virtual_chassis_information.py      29     25    14%
jnpr/junos/facts/ifd_style.py                             9      6    33%
jnpr/junos/facts/iri_mapping.py                          39      1    97%
jnpr/junos/facts/is_linux.py                             14      3    79%
jnpr/junos/facts/personality.py                          67     63     6%
jnpr/junos/facts/swver.py                                64     33    48%
jnpr/junos/jxml.py                                       76     12    84%
jnpr/junos/ofacts/__init__.py                            11      0   100%
jnpr/junos/ofacts/chassis.py                             20     17    15%
jnpr/junos/ofacts/domain.py                              24     19    21%
jnpr/junos/ofacts/ifd_style.py                            5      4    20%
jnpr/junos/ofacts/personality.py                         41     39     5%
jnpr/junos/ofacts/routing_engines.py                     57     54     5%
jnpr/junos/ofacts/session.py                              3      1    67%
jnpr/junos/ofacts/srx_cluster.py                         15     14     7%
jnpr/junos/ofacts/switch_style.py                        14     12    14%
jnpr/junos/ofacts/swver.py                               56     52     7%
jnpr/junos/op/__init__.py                                28      3    89%
jnpr/junos/rpcmeta.py                                    95     28    71%
jnpr/junos/transport/__init__.py                          0      0   100%
jnpr/junos/transport/tty.py                             130    102    22%
jnpr/junos/transport/tty_netconf.py                     135     99    27%
jnpr/junos/transport/tty_serial.py                       48     33    31%
jnpr/junos/transport/tty_ssh.py                         116     84    28%
jnpr/junos/transport/tty_telnet.py                       61     39    36%
jnpr/junos/utils/__init__.py                              1      0   100%
jnpr/junos/utils/config.py                              293    109    63%
jnpr/junos/utils/fs.py                                  178    145    19%
jnpr/junos/utils/ftp.py                                  53     41    23%
jnpr/junos/utils/scp.py                                  37      2    95%
jnpr/junos/utils/ssh_client.py                           21      2    90%
jnpr/junos/utils/start_shell.py                          91     21    77%
jnpr/junos/utils/util.py                                 17      3    82%
jnpr/junos/version.py                                     8      2    75%
-------------------------------------------------------------------------
TOTAL                                                  5364   3214    40%
/root/pyez_serial_issue_1229/py-junos-eznc/lib/jnpr/junos/transport/tty.py:56: DeprecationWarning: invalid escape sequence \s
  '(?P<cli>[^\\-"]>\s*$)',
----------------------------------------------------------------------
Ran 47 tests in 135.787s

OK

@Aaron-MJohn
Copy link
Author

@chidanandpujar can you approve workflow?

@chidanandpujar
Copy link
Collaborator

chidanandpujar commented Apr 5, 2023

@chidanandpujar can you approve workflow?

Hi @Aaron-MJohn
The recent committed changes , I am yet to validate.
Could you please share the PyEZ console login test results with and without password set .

Thanks

@Aaron-MJohn
Copy link
Author

Hey, I assume this is what you asked for
#with password

2023-04-05 13:18:31,034 - [tty.py:107] - [INFO]: TTY: connecting to TTY:COM3 ..."
2023-04-05 13:18:31,063 - [tty.py:110] - [INFO]: TTY: logging in......"
2023-04-05 13:18:34,180 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:18:37,300 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:18:40,430 - [tty_serial.py:89] - [INFO]: root@rue-dst-sw0:RE:0% "
2023-04-05 13:18:40,430 - [tty.py:116] - [INFO]: TTY: OK.....starting NETCONF"

#without password

2023-04-05 13:36:18,812 - [tty.py:107] - [INFO]: TTY: connecting to TTY:COM3 ..."
2023-04-05 13:36:18,821 - [tty.py:110] - [INFO]: TTY: logging in......"
2023-04-05 13:36:21,953 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:36:25,074 - [tty_serial.py:89] - [INFO]: root@:RE:0% "
2023-04-05 13:36:25,074 - [tty.py:116] - [INFO]: TTY: OK.....starting NETCONF"

#with wrong password

2023-04-05 13:39:09,488 - [tty.py:107] - [INFO]: TTY: connecting to TTY:COM3 ..."
2023-04-05 13:39:09,504 - [tty.py:110] - [INFO]: TTY: logging in......"
2023-04-05 13:39:12,629 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:15,754 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:39:18,889 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:22,019 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:25,129 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:39:28,265 - [tty_serial.py:89] - [INFO]: "
2023-04-05 13:39:39,364 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:39:42,490 - [tty_serial.py:89] - [INFO]: "
2023-04-05 13:39:47,239 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:47,239 - [console.py:215] - [ERROR]: Exception occurred: login:ConnectAuthError(host: None, msg: Bad username/password)
"

@chidanandpujar
Copy link
Collaborator

Hey, I assume this is what you asked for #with password

2023-04-05 13:18:31,034 - [tty.py:107] - [INFO]: TTY: connecting to TTY:COM3 ..."
2023-04-05 13:18:31,063 - [tty.py:110] - [INFO]: TTY: logging in......"
2023-04-05 13:18:34,180 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:18:37,300 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:18:40,430 - [tty_serial.py:89] - [INFO]: root@rue-dst-sw0:RE:0% "
2023-04-05 13:18:40,430 - [tty.py:116] - [INFO]: TTY: OK.....starting NETCONF"

#without password

2023-04-05 13:36:18,812 - [tty.py:107] - [INFO]: TTY: connecting to TTY:COM3 ..."
2023-04-05 13:36:18,821 - [tty.py:110] - [INFO]: TTY: logging in......"
2023-04-05 13:36:21,953 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:36:25,074 - [tty_serial.py:89] - [INFO]: root@:RE:0% "
2023-04-05 13:36:25,074 - [tty.py:116] - [INFO]: TTY: OK.....starting NETCONF"

#with wrong password

2023-04-05 13:39:09,488 - [tty.py:107] - [INFO]: TTY: connecting to TTY:COM3 ..."
2023-04-05 13:39:09,504 - [tty.py:110] - [INFO]: TTY: logging in......"
2023-04-05 13:39:12,629 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:15,754 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:39:18,889 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:22,019 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:25,129 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:39:28,265 - [tty_serial.py:89] - [INFO]: "
2023-04-05 13:39:39,364 - [tty_serial.py:89] - [INFO]: Password:"
2023-04-05 13:39:42,490 - [tty_serial.py:89] - [INFO]: "
2023-04-05 13:39:47,239 - [tty_serial.py:89] - [INFO]: login: "
2023-04-05 13:39:47,239 - [console.py:215] - [ERROR]: Exception occurred: login:ConnectAuthError(host: None, msg: Bad username/password)
"

Thanks very much for sharing the logs .
I will discuss with team for the approval .

@chidanandpujar
Copy link
Collaborator

Hi @Aaron-MJohn
Thanks ,
I will validate the changes and share the results .
Meanwhile , please check if you can run Unit and Functional tests .

Thanks
Chidanand

@chidanandpujar
Copy link
Collaborator

Hi @Aaron-MJohn
Thanks for sharing the results .
I will run the UT and FT and share the results .

Thanks

@Aaron-MJohn
Copy link
Author

I ran unit test and all passed except one test failing in master branch

py-junos-eznc/tests/unit$ python3.9 -m pytest -v
======================================================================================= test session starts ========================================================================================
platform linux -- Python 3.9.17, pytest-8.1.1, pluggy-1.4.0 -- /usr/local/bin/python3.9
cachedir: .pytest_cache
rootdir: /home/robot/devel/ros_ws/src/py-junos-eznc
collected 824 items                                                                                                                                                                                

factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_dict_set PASSED                                                                                                                 [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_dot_none_RuntimeError PASSED                                                                                                    [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_enum_error PASSED                                                                                                               [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_enum_value_str_error PASSED                                                                                                     [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_enum_value_type_error PASSED                                                                                                    [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_field_value_xpath PASSED                                                                                                        [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_get PASSED                                                                                                                      [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_get_caller_provided_kvargs PASSED                                                                                               [  0%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_get_fields PASSED                                                                                                               [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_get_group PASSED                                                                                                                [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_get_namesonly PASSED                                                                                                            [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_get_options PASSED                                                                                                              [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_int_min_max_value_error PASSED                                                                                                  [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_invalid_field_dict_error PASSED                                                                                                 [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_invalid_field_error PASSED                                                                                                      [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_invalid_field_value_error PASSED                                                                                                [  1%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_invalid_key_field_not_defined_error PASSED                                                                                      [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_invalid_key_field_type_error PASSED                                                                                             [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_invalid_type_error PASSED                                                                                                       [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_invalid_view_not_defined_type_error PASSED                                                                                      [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_junos PASSED                                                                                                                    [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_junos1 PASSED                                                                                                                   [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_junos2 PASSED                                                                                                                   [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_key_value_none PASSED                                                                                                           [  2%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_load PASSED                                                                                                                     [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_load_append_not_call_error PASSED                                                                                               [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_path PASSED                                                                                                                     [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_set PASSED                                                                                                                      [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_set_append_not_call_error PASSED                                                                                                [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_set_bool PASSED                                                                                                                 [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_set_group PASSED                                                                                                                [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_set_inactive PASSED                                                                                                             [  3%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_set_no_key_error PASSED                                                                                                         [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_str_key_field PASSED                                                                                                            [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_str_min_max_value_error PASSED                                                                                                  [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_table_options PASSED                                                                                                            [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_unfreeze PASSED                                                                                                                 [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_unsupported_type_error PASSED                                                                                                   [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_user_defined_type_error PASSED                                                                                                  [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_with_block PASSED                                                                                                               [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_wrong_type_error PASSED                                                                                                         [  4%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_cfgtable_xml PASSED                                                                                                                      [  5%]
factory/test_cfgtable.py::TestFactoryCfgTable::test_optable_get_key_required_error PASSED                                                                                                    [  5%]
factory/test_cmdtable.py::TestFactoryCMDTable::test__contains__ PASSED                                                                                                                       [  5%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_cmdtable_iter PASSED                                                                                                                     [  5%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_cmdview_properties PASSED                                                                                                                [  5%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_exists PASSED                                                                                                                            [  5%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_field_eval PASSED                                                                                                                        [  5%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_fpcmemory_multi_key_columns PASSED                                                                                                       [  5%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_get_api_params PASSED                                                                                                                    [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_item_regex_pq3_pci PASSED                                                                                                                [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_item_with_fields_delimiter PASSED                                                                                                        [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_new_line_in_data PASSED                                                                                                                  [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_pci_errs_multi_key_regex PASSED                                                                                                          [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_regex_with_fields PASSED                                                                                                                 [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_request_pfe_rpc_not_avialable PASSED                                                                                                     [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_table_eval_expression PASSED                                                                                                             [  6%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_table_eval_expression_exception PASSED                                                                                                   [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_table_eval_with_filters PASSED                                                                                                           [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_table_item_group_key_mismatch PASSED                                                                                                     [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_table_path_option PASSED                                                                                                                 [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_table_with_item_regex PASSED                                                                                                             [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_table_with_item_without_view PASSED                                                                                                      [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_textfsm_table PASSED                                                                                                                     [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_textfsm_table_mutli_key FAILED                                                                                                           [  7%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_title_in_view PASSED                                                                                                                     [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_title_without_view PASSED                                                                                                                [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_cmerror PASSED                                                                                                              [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_cmerror_multiline_header PASSED                                                                                             [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_icmpstats_nested PASSED                                                                                                     [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_ithrottle_key_args PASSED                                                                                                   [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_linkstats PASSED                                                                                                            [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_mtip_cge_regex PASSED                                                                                                       [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_sysctl_oneline_op PASSED                                                                                                    [  8%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_unstructured_ttpstatistics PASSED                                                                                                        [  9%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_valueerror_with_no_target PASSED                                                                                                         [  9%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_view_setter_raise_exception PASSED                                                                                                       [  9%]
factory/test_cmdtable.py::TestFactoryCMDTable::test_view_variable PASSED                                                                                                                     [  9%]
factory/test_factory_cls.py::TestFactoryCls::test_factory_cls_cfgtable PASSED                                                                                                                [  9%]
factory/test_factory_cls.py::TestFactoryCls::test_factory_cls_factorytable PASSED                                                                                                            [  9%]
factory/test_factory_cls.py::TestFactoryCls::test_factory_cls_factoryview PASSED                                                                                                             [  9%]
factory/test_factory_cls.py::TestFactoryCls::test_factory_cls_optable PASSED                                                                                                                 [  9%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__add_dictfield_RuntimeError PASSED                                                                                     [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__add_dictfield_ValueError PASSED                                                                                       [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__build_cfgtable PASSED                                                                                                 [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__build_optable PASSED                                                                                                  [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__build_view PASSED                                                                                                     [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_False PASSED                                                                                                [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_False_fail PASSED                                                                                           [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_False_regex PASSED                                                                                          [ 10%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_False_regex_fail PASSED                                                                                     [ 11%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_True PASSED                                                                                                 [ 11%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_True_fail PASSED                                                                                            [ 11%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_True_regex PASSED                                                                                           [ 11%]
factory/test_factory_loader.py::TestFactoryLoader::test_FactoryLoader__fieldfunc_True_regex_fail PASSED                                                                                      [ 11%]
factory/test_optable.py::TestFactoryOpTable::test_generate_sax_parser_fields_with_diff_child_xpaths PASSED                                                                                   [ 11%]
factory/test_optable.py::TestFactoryOpTable::test_generate_sax_parser_fields_with_many_slash PASSED                                                                                          [ 11%]
factory/test_optable.py::TestFactoryOpTable::test_generate_sax_parser_item_with_many_slash PASSED                                                                                            [ 11%]
factory/test_optable.py::TestFactoryOpTable::test_generate_sax_parser_same_parents_with_diff_fields PASSED                                                                                   [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_key_and_item_pipe_delim_with_Null_use_Null PASSED                                                                                          [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_key_pipe_delim_with_Null PASSED                                                                                                            [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_key_pipe_delim_with_Null_use_Null PASSED                                                                                                   [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_optable_get PASSED                                                                                                                         [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_optable_get_key PASSED                                                                                                                     [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_optable_path PASSED                                                                                                                        [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_optable_view_get PASSED                                                                                                                    [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_optable_view_get_astype_bool PASSED                                                                                                        [ 12%]
factory/test_optable.py::TestFactoryOpTable::test_optable_view_get_astype_bool_regex PASSED                                                                                                  [ 13%]
factory/test_optable.py::TestFactoryOpTable::test_optable_view_get_unknown_field PASSED                                                                                                      [ 13%]
factory/test_optable.py::TestFactoryOpTable::test_optable_xml PASSED                                                                                                                         [ 13%]
factory/test_table.py::TestFactoryTable::test_config_constructor PASSED                                                                                                                      [ 13%]
factory/test_table.py::TestFactoryTable::test_keys_RuntimeError PASSED                                                                                                                       [ 13%]
factory/test_table.py::TestFactoryTable::test_keys__keys_composite PASSED                                                                                                                    [ 13%]
factory/test_table.py::TestFactoryTable::test_keys__keys_pipe PASSED                                                                                                                         [ 13%]
factory/test_table.py::TestFactoryTable::test_table__contains__ PASSED                                                                                                                       [ 13%]
factory/test_table.py::TestFactoryTable::test_table__getitem__ PASSED                                                                                                                        [ 14%]
factory/test_table.py::TestFactoryTable::test_table__getitem__slice PASSED                                                                                                                   [ 14%]
factory/test_table.py::TestFactoryTable::test_table__getitem__tuple PASSED                                                                                                                   [ 14%]
factory/test_table.py::TestFactoryTable::test_table_get_RuntimeError PASSED                                                                                                                  [ 14%]
factory/test_table.py::TestFactoryTable::test_table_get_keys_values PASSED                                                                                                                   [ 14%]
factory/test_table.py::TestFactoryTable::test_table_get_return_none PASSED                                                                                                                   [ 14%]
factory/test_table.py::TestFactoryTable::test_table_hostname PASSED                                                                                                                          [ 14%]
factory/test_table.py::TestFactoryTable::test_table_is_container PASSED                                                                                                                      [ 14%]
factory/test_table.py::TestFactoryTable::test_table_items PASSED                                                                                                                             [ 15%]
factory/test_table.py::TestFactoryTable::test_table_repr_xml_none PASSED                                                                                                                     [ 15%]
factory/test_table.py::TestFactoryTable::test_table_repr_xml_not_none PASSED                                                                                                                 [ 15%]
factory/test_table.py::TestFactoryTable::test_table_savexml PASSED                                                                                                                           [ 15%]
factory/test_table.py::TestFactoryTable::test_table_view_setter_ValueError PASSED                                                                                                            [ 15%]
factory/test_to_json.py::TestToJson::test_json_rpc PASSED                                                                                                                                    [ 15%]
factory/test_to_json.py::TestToJson::test_pyez_encoder_default PASSED                                                                                                                        [ 15%]
factory/test_to_json.py::TestToJson::test_table_encoder_default PASSED                                                                                                                       [ 15%]
factory/test_to_json.py::TestToJson::test_table_json PASSED                                                                                                                                  [ 16%]
factory/test_to_json.py::TestToJson::test_view_encoder_default PASSED                                                                                                                        [ 16%]
factory/test_to_json.py::TestToJson::test_view_json PASSED                                                                                                                                   [ 16%]
factory/test_view.py::TestFactoryView::test_view___getattr___munch PASSED                                                                                                                    [ 16%]
factory/test_view.py::TestFactoryView::test_view___getattr___munch_tag PASSED                                                                                                                [ 16%]
factory/test_view.py::TestFactoryView::test_view___getattr___raise_RuntimeError PASSED                                                                                                       [ 16%]
factory/test_view.py::TestFactoryView::test_view___getattr__table_item PASSED                                                                                                                [ 16%]
factory/test_view.py::TestFactoryView::test_view___getattr__wrong_attr PASSED                                                                                                                [ 16%]
factory/test_view.py::TestFactoryView::test_view_asview PASSED                                                                                                                               [ 16%]
factory/test_view.py::TestFactoryView::test_view_d PASSED                                                                                                                                    [ 17%]
factory/test_view.py::TestFactoryView::test_view_init PASSED                                                                                                                                 [ 17%]
factory/test_view.py::TestFactoryView::test_view_init_lxml_exception PASSED                                                                                                                  [ 17%]
factory/test_view.py::TestFactoryView::test_view_init_multi_exception PASSED                                                                                                                 [ 17%]
factory/test_view.py::TestFactoryView::test_view_name PASSED                                                                                                                                 [ 17%]
factory/test_view.py::TestFactoryView::test_view_name_xpath_composite PASSED                                                                                                                 [ 17%]
factory/test_view.py::TestFactoryView::test_view_name_xpath_none PASSED                                                                                                                      [ 17%]
factory/test_view.py::TestFactoryView::test_view_refresh_can_refresh_false PASSED                                                                                                            [ 17%]
factory/test_view.py::TestFactoryView::test_view_refresh_can_refresh_true PASSED                                                                                                             [ 18%]
factory/test_view.py::TestFactoryView::test_view_repr PASSED                                                                                                                                 [ 18%]
factory/test_view.py::TestFactoryView::test_view_updater_all_false PASSED                                                                                                                    [ 18%]
factory/test_view.py::TestFactoryView::test_view_updater_context PASSED                                                                                                                      [ 18%]
factory/test_view.py::TestFactoryView::test_view_updater_fields_true PASSED                                                                                                                  [ 18%]
factory/test_view.py::TestFactoryView::test_view_updater_groups_true PASSED                                                                                                                  [ 18%]
factory/test_view.py::TestFactoryView::test_view_updater_with_groups_all_false PASSED                                                                                                        [ 18%]
factory/test_view.py::TestFactoryView::test_view_updater_with_groups_all_true PASSED                                                                                                         [ 18%]
factory/test_view_fields.py::TestFactoryViewFields::test_viewfields_astype PASSED                                                                                                            [ 19%]
factory/test_view_fields.py::TestFactoryViewFields::test_viewfields_flag PASSED                                                                                                              [ 19%]
factory/test_view_fields.py::TestFactoryViewFields::test_viewfields_int PASSED                                                                                                               [ 19%]
factory/test_view_fields.py::TestFactoryViewFields::test_viewfields_string PASSED                                                                                                            [ 19%]
factory/test_view_fields.py::TestFactoryViewFields::test_viewfields_table PASSED                                                                                                             [ 19%]
facts/test__init__.py::TestFactInitialization::test_duplicate_facts PASSED                                                                                                                   [ 19%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact PASSED                                                                                                                         [ 19%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_empty PASSED                                                                                                                   [ 19%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_jdm PASSED                                                                                                                     [ 20%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_rpc_error PASSED                                                                                                               [ 20%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_srx_cluster_index_error PASSED                                                                                                 [ 20%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_srx_cluster_primary PASSED                                                                                                     [ 20%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_srx_cluster_primary_id_16 PASSED                                                                                               [ 20%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_srx_cluster_primary_id_255 PASSED                                                                                              [ 20%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_srx_cluster_primary_id_31 PASSED                                                                                               [ 20%]
facts/test_current_re.py::TestCurrentRe::test_current_re_fact_srx_cluster_secondary PASSED                                                                                                   [ 20%]
facts/test_domain.py::TestDomain::test_domain_fact_from_config PASSED                                                                                                                        [ 20%]
facts/test_domain.py::TestDomain::test_domain_fact_from_file PASSED                                                                                                                          [ 21%]
facts/test_ethernet_mac_table.py::TestEthernetMacTable::test_ethernet_mac_table_bd PASSED                                                                                                    [ 21%]
facts/test_ethernet_mac_table.py::TestEthernetMacTable::test_ethernet_mac_table_els PASSED                                                                                                   [ 21%]
facts/test_ethernet_mac_table.py::TestEthernetMacTable::test_ethernet_mac_table_non_master_bd_mx PASSED                                                                                      [ 21%]
facts/test_ethernet_mac_table.py::TestEthernetMacTable::test_ethernet_mac_table_non_master_bd_ptx PASSED                                                                                     [ 21%]
facts/test_ethernet_mac_table.py::TestEthernetMacTable::test_ethernet_mac_table_none PASSED                                                                                                  [ 21%]
facts/test_ethernet_mac_table.py::TestEthernetMacTable::test_ethernet_mac_table_vlan PASSED                                                                                                  [ 21%]
facts/test_file_list.py::TestFileList::test_home_fact PASSED                                                                                                                                 [ 21%]
facts/test_file_list.py::TestFileList::test_home_fact_multi_dir PASSED                                                                                                                       [ 22%]
facts/test_get_chassis_cluster_status.py::TestGetChassisClusterStatus::test_srx_cluster_fact_false PASSED                                                                                    [ 22%]
facts/test_get_chassis_cluster_status.py::TestGetChassisClusterStatus::test_srx_cluster_fact_none PASSED                                                                                     [ 22%]
facts/test_get_chassis_cluster_status.py::TestGetChassisClusterStatus::test_srx_cluster_fact_true PASSED                                                                                     [ 22%]
facts/test_get_chassis_cluster_status.py::TestGetChassisClusterStatus::test_srx_cluster_id_fact PASSED                                                                                       [ 22%]
facts/test_get_chassis_inventory.py::TestChassis::test_serialnumber_error_xml PASSED                                                                                                         [ 22%]
facts/test_get_chassis_inventory.py::TestChassis::test_serialnumber_fact_from_backplane PASSED                                                                                               [ 22%]
facts/test_get_chassis_inventory.py::TestChassis::test_serialnumber_fact_from_chassis PASSED                                                                                                 [ 22%]
facts/test_get_chassis_inventory.py::TestChassis::test_serialnumber_not_master PASSED                                                                                                        [ 23%]
facts/test_get_route_engine_information.py::TestGetRouteEngineInformation::test_re_info_dual PASSED                                                                                          [ 23%]
facts/test_get_route_engine_information.py::TestGetRouteEngineInformation::test_re_info_mx_vc PASSED                                                                                         [ 23%]
facts/test_get_route_engine_information.py::TestGetRouteEngineInformation::test_re_info_single PASSED                                                                                        [ 23%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_bsys PASSED                                                                                                 [ 23%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_dual PASSED                                                                                                 [ 23%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_dual_other_re_off PASSED                                                                                    [ 23%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_err PASSED                                                                                                  [ 23%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_ex PASSED                                                                                                   [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_gnf PASSED                                                                                                  [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_jdm PASSED                                                                                                  [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_nfx PASSED                                                                                                  [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_no_version PASSED                                                                                           [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_simple PASSED                                                                                               [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_single PASSED                                                                                               [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_srx_cluster PASSED                                                                                          [ 24%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_txp PASSED                                                                                                  [ 25%]
facts/test_get_software_information.py::TestGetSoftwareInformation::test_sw_info_vc PASSED                                                                                                   [ 25%]
facts/test_get_virtual_chassis_information.py::TestGetVirtualChassisInformation::test_vc PASSED                                                                                              [ 25%]
facts/test_get_virtual_chassis_information.py::TestGetVirtualChassisInformation::test_vc_dual_master PASSED                                                                                  [ 25%]
facts/test_get_virtual_chassis_information.py::TestGetVirtualChassisInformation::test_vc_empty PASSED                                                                                        [ 25%]
facts/test_get_virtual_chassis_information.py::TestGetVirtualChassisInformation::test_vc_error PASSED                                                                                        [ 25%]
facts/test_get_virtual_chassis_information.py::TestGetVirtualChassisInformation::test_vc_mmvc PASSED                                                                                         [ 25%]
facts/test_get_virtual_chassis_information.py::TestGetVirtualChassisInformation::test_vc_mmvcf PASSED                                                                                        [ 25%]
facts/test_ifd_style.py::TestIfdStyle::test_ifd_style_None PASSED                                                                                                                            [ 25%]
facts/test_ifd_style.py::TestIfdStyle::test_ifd_style_classic PASSED                                                                                                                         [ 26%]
facts/test_ifd_style.py::TestIfdStyle::test_ifd_style_switch PASSED                                                                                                                          [ 26%]
facts/test_iri_mapping.py::TestIriMapping::test_iri_host_to_ip_mapping_fact PASSED                                                                                                           [ 26%]
facts/test_iri_mapping.py::TestIriMapping::test_iri_ip_to_host_mapping_fact PASSED                                                                                                           [ 26%]
facts/test_iri_mapping.py::TestIriMapping::test_iri_template_host_to_ip_mapping_fact PASSED                                                                                                  [ 26%]
facts/test_iri_mapping.py::TestIriMapping::test_iri_template_ip_to_host_mapping_fact PASSED                                                                                                  [ 26%]
facts/test_personality.py::TestPersonality::test_personality_acx PASSED                                                                                                                      [ 26%]
facts/test_personality.py::TestPersonality::test_personality_firefly PASSED                                                                                                                  [ 26%]
facts/test_personality.py::TestPersonality::test_personality_gnf PASSED                                                                                                                      [ 27%]
facts/test_personality.py::TestPersonality::test_personality_jdm PASSED                                                                                                                      [ 27%]
facts/test_personality.py::TestPersonality::test_personality_m PASSED                                                                                                                        [ 27%]
facts/test_personality.py::TestPersonality::test_personality_mx PASSED                                                                                                                       [ 27%]
facts/test_personality.py::TestPersonality::test_personality_nfx PASSED                                                                                                                      [ 27%]
facts/test_personality.py::TestPersonality::test_personality_old_vmx PASSED                                                                                                                  [ 27%]
facts/test_personality.py::TestPersonality::test_personality_old_vrr PASSED                                                                                                                  [ 27%]
facts/test_personality.py::TestPersonality::test_personality_olive PASSED                                                                                                                    [ 27%]
facts/test_personality.py::TestPersonality::test_personality_ptx PASSED                                                                                                                      [ 28%]
facts/test_personality.py::TestPersonality::test_personality_srx_branch PASSED                                                                                                               [ 28%]
facts/test_personality.py::TestPersonality::test_personality_srx_high_end PASSED                                                                                                             [ 28%]
facts/test_personality.py::TestPersonality::test_personality_srx_mid_range PASSED                                                                                                            [ 28%]
facts/test_personality.py::TestPersonality::test_personality_t PASSED                                                                                                                        [ 28%]
facts/test_personality.py::TestPersonality::test_personality_virtual_chassis PASSED                                                                                                          [ 28%]
facts/test_personality.py::TestPersonality::test_personality_vjx PASSED                                                                                                                      [ 28%]
facts/test_personality.py::TestPersonality::test_personality_vmx PASSED                                                                                                                      [ 28%]
facts/test_personality.py::TestPersonality::test_personality_vptx PASSED                                                                                                                     [ 29%]
facts/test_swver.py::TestVersionInfo::test_emptyget_facts PASSED                                                                                                                             [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_feature_velocity PASSED                                                                                                                   [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_info_X_type_non_hyphenated PASSED                                                                                                         [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_info_X_type_non_hyphenated_nobuild PASSED                                                                                                 [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_info_after_type_len_else PASSED                                                                                                           [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_info_constructor_else_exception PASSED                                                                                                    [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_info_eq PASSED                                                                                                                            [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_info_gt PASSED                                                                                                                            [ 29%]
facts/test_swver.py::TestVersionInfo::test_version_info_gt_eq PASSED                                                                                                                         [ 30%]
facts/test_swver.py::TestVersionInfo::test_version_info_lt PASSED                                                                                                                            [ 30%]
facts/test_swver.py::TestVersionInfo::test_version_info_lt_eq PASSED                                                                                                                         [ 30%]
facts/test_swver.py::TestVersionInfo::test_version_info_not_eq PASSED                                                                                                                        [ 30%]
facts/test_swver.py::TestVersionInfo::test_version_info_repr PASSED                                                                                                                          [ 30%]
facts/test_swver.py::TestVersionInfo::test_version_iter PASSED                                                                                                                               [ 30%]
facts/test_swver.py::TestVersionInfo::test_version_to_json PASSED                                                                                                                            [ 30%]
facts/test_swver.py::TestVersionInfo::test_version_to_yaml PASSED                                                                                                                            [ 30%]
ofacts/test_chassis.py::TestChassis::test_2RE_true PASSED                                                                                                                                    [ 31%]
ofacts/test_chassis.py::TestChassis::test_chassis_exception_ConnectNotMasterError PASSED                                                                                                     [ 31%]
ofacts/test_chassis.py::TestChassis::test_chassis_exception_RpcError PASSED                                                                                                                  [ 31%]
ofacts/test_chassis.py::TestChassis::test_chassis_exception_RuntimeError PASSED                                                                                                              [ 31%]
ofacts/test_domain.py::TestDomain::test_domain_in_configuration PASSED                                                                                                                       [ 31%]
ofacts/test_domain.py::TestDomain::test_domain_rpc_error PASSED                                                                                                                              [ 31%]
ofacts/test_domain.py::TestDomain::test_resolv_conf PASSED                                                                                                                                   [ 31%]
ofacts/test_domain.py::TestDomain::test_resolv_conf_file_absent_under_etc PASSED                                                                                                             [ 31%]
ofacts/test_domain.py::TestDomain::test_resolv_conf_no_domain PASSED                                                                                                                         [ 32%]
ofacts/test_ifd_style.py::TestIFDStyle::test_ifd_style_else_condition PASSED                                                                                                                 [ 32%]
ofacts/test_ifd_style.py::TestIFDStyle::test_ifd_style_if_condition PASSED                                                                                                                   [ 32%]
ofacts/test_personality.py::TestPersonality::test_invalid_series PASSED                                                                                                                      [ 32%]
ofacts/test_personality.py::TestPersonality::test_m_ex_qfx_series PASSED                                                                                                                     [ 32%]
ofacts/test_personality.py::TestPersonality::test_m_series PASSED                                                                                                                            [ 32%]
ofacts/test_personality.py::TestPersonality::test_mx_series PASSED                                                                                                                           [ 32%]
ofacts/test_personality.py::TestPersonality::test_personality_olive PASSED                                                                                                                   [ 32%]
ofacts/test_personality.py::TestPersonality::test_ptx_series PASSED                                                                                                                          [ 33%]
ofacts/test_personality.py::TestPersonality::test_srx_high_series PASSED                                                                                                                     [ 33%]
ofacts/test_personality.py::TestPersonality::test_srx_series PASSED                                                                                                                          [ 33%]
ofacts/test_personality.py::TestPersonality::test_t_series PASSED                                                                                                                            [ 33%]
ofacts/test_personality.py::TestPersonality::test_virtual_hassis PASSED                                                                                                                      [ 33%]
ofacts/test_personality.py::TestPersonality::test_vjx_series PASSED                                                                                                                          [ 33%]
ofacts/test_personality.py::TestPersonality::test_vmx_series PASSED                                                                                                                          [ 33%]
ofacts/test_routing_engines.py::TestRoutingEngines::test_master PASSED                                                                                                                       [ 33%]
ofacts/test_routing_engines.py::TestRoutingEngines::test_mixed_mode_vcf PASSED                                                                                                               [ 33%]
ofacts/test_routing_engines.py::TestRoutingEngines::test_multi_instance PASSED                                                                                                               [ 34%]
ofacts/test_routing_engines.py::TestRoutingEngines::test_multi_re_vc PASSED                                                                                                                  [ 34%]
ofacts/test_routing_engines.py::TestRoutingEngines::test_routing_engine_exception_ret_none PASSED                                                                                            [ 34%]
ofacts/test_routing_engines.py::TestRoutingEngines::test_vc_info_true PASSED                                                                                                                 [ 34%]
ofacts/test_srx_cluster.py::TestSrxCluster::test_srx_cluster PASSED                                                                                                                          [ 34%]
ofacts/test_srx_cluster.py::TestSrxCluster::test_srx_cluster_no_node PASSED                                                                                                                  [ 34%]
ofacts/test_srx_cluster.py::TestSrxCluster::test_srx_cluster_node PASSED                                                                                                                     [ 34%]
ofacts/test_srx_cluster.py::TestSrxCluster::test_srx_cluster_none PASSED                                                                                                                     [ 34%]
ofacts/test_switch_style.py::TestSwitchStyle::test_switch_style_model_ex9000 PASSED                                                                                                          [ 35%]
ofacts/test_switch_style.py::TestSwitchStyle::test_switch_style_model_firefly PASSED                                                                                                         [ 35%]
ofacts/test_switch_style.py::TestSwitchStyle::test_switch_style_model_not_specific PASSED                                                                                                    [ 35%]
ofacts/test_switch_style.py::TestSwitchStyle::test_switch_style_mx_srx PASSED                                                                                                                [ 35%]
ofacts/test_switch_style.py::TestSwitchStyle::test_switch_style_persona_not_specific PASSED                                                                                                  [ 35%]
ofacts/test_swver.py::TestSwver::test_get_swver_vc PASSED                                                                                                                                    [ 35%]
ofacts/test_swver.py::TestSwver::test_get_swver_vc_capable_standalone PASSED                                                                                                                 [ 35%]
ofacts/test_swver.py::TestSwver::test_swver PASSED                                                                                                                                           [ 35%]
ofacts/test_swver.py::TestSwver::test_swver_exception_handling PASSED                                                                                                                        [ 36%]
ofacts/test_swver.py::TestSwver::test_swver_f_master_list PASSED                                                                                                                             [ 36%]
ofacts/test_swver.py::TestSwver::test_swver_hostname_none PASSED                                                                                                                             [ 36%]
ofacts/test_swver.py::TestSwver::test_swver_txp_master_list PASSED                                                                                                                           [ 36%]
test_console.py::TestConsole::test_console_close_error PASSED                                                                                                                                [ 36%]
test_console.py::TestConsole::test_console_close_error_skip_logout PASSED                                                                                                                    [ 36%]
test_console.py::TestConsole::test_console_close_socket_conn_reset PASSED                                                                                                                    [ 36%]
test_console.py::TestConsole::test_console_close_socket_error PASSED                                                                                                                         [ 36%]
test_console.py::TestConsole::test_console_close_telnet_conn_closed PASSED                                                                                                                   [ 37%]
test_console.py::TestConsole::test_console_connected PASSED                                                                                                                                  [ 37%]
test_console.py::TestConsole::test_console_gather_facts PASSED                                                                                                                               [ 37%]
test_console.py::TestConsole::test_console_gather_facts_true PASSED                                                                                                                          [ 37%]
test_console.py::TestConsole::test_console_open_error PASSED                                                                                                                                 [ 37%]
test_console.py::TestConsole::test_console_rpc_call PASSED                                                                                                                                   [ 37%]
test_console.py::TestConsole::test_console_rpc_call_exception PASSED                                                                                                                         [ 37%]
test_console.py::TestConsole::test_console_serial PASSED                                                                                                                                     [ 37%]
test_console.py::TestConsole::test_console_tty_open_err PASSED                                                                                                                               [ 37%]
test_console.py::TestConsole::test_console_zeroize PASSED                                                                                                                                    [ 38%]
test_console.py::TestConsole::test_load_console PASSED                                                                                                                                       [ 38%]
test_console.py::TestConsole::test_login_bad_password PASSED                                                                                                                                 [ 38%]
test_console.py::TestConsole::test_telnet_host_none PASSED                                                                                                                                   [ 38%]
test_console.py::TestConsole::test_telnet_old_fact_warning PASSED                                                                                                                            [ 38%]
test_console.py::TestConsole::test_timeout_getter_setter PASSED                                                                                                                              [ 38%]
test_console.py::TestConsole::test_with_context PASSED                                                                                                                                       [ 38%]
test_console.py::TestConsole::test_wrong_mode PASSED                                                                                                                                         [ 38%]
test_decorators.py::Test_Decorators::test_ignore_warning_false PASSED                                                                                                                        [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_list_3snf_no_match PASSED                                                                                                           [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_list_3snf_warnings PASSED                                                                                                           [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_list_3warn_match PASSED                                                                                                             [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_list_3warn_no_match PASSED                                                                                                          [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_missing PASSED                                                                                                                      [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_string_1snf_warning_1err PASSED                                                                                                     [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_string_3snf_no_match PASSED                                                                                                         [ 39%]
test_decorators.py::Test_Decorators::test_ignore_warning_string_3snf_warnings PASSED                                                                                                         [ 40%]
test_decorators.py::Test_Decorators::test_ignore_warning_true_3snf_warnings PASSED                                                                                                           [ 40%]
test_decorators.py::Test_Decorators::test_normalize_false_false PASSED                                                                                                                       [ 40%]
test_decorators.py::Test_Decorators::test_normalize_false_true PASSED                                                                                                                        [ 40%]
test_decorators.py::Test_Decorators::test_normalize_false_true_except PASSED                                                                                                                 [ 40%]
test_decorators.py::Test_Decorators::test_normalize_true_false PASSED                                                                                                                        [ 40%]
test_decorators.py::Test_Decorators::test_normalize_true_false_except PASSED                                                                                                                 [ 40%]
test_decorators.py::Test_Decorators::test_normalize_true_true PASSED                                                                                                                         [ 40%]
test_decorators.py::Test_Decorators::test_normalize_true_true_except PASSED                                                                                                                  [ 41%]
test_decorators.py::Test_Decorators::test_timeout PASSED                                                                                                                                     [ 41%]
test_decorators.py::Test_Decorators::test_timeout_except PASSED                                                                                                                              [ 41%]
test_device.py::Test_MyTemplateLoader::test_temp_load_get_source_filter_false PASSED                                                                                                         [ 41%]
test_device.py::Test_MyTemplateLoader::test_temp_load_get_source_filter_true PASSED                                                                                                          [ 41%]
test_device.py::TestDevice::test_device_ConnectAuthError PASSED                                                                                                                              [ 41%]
test_device.py::TestDevice::test_device_ConnectRefusedError PASSED                                                                                                                           [ 41%]
test_device.py::TestDevice::test_device_ConnectTimeoutError PASSED                                                                                                                           [ 41%]
test_device.py::TestDevice::test_device_ConnectUnknownHostError PASSED                                                                                                                       [ 41%]
test_device.py::TestDevice::test_device__sshconf_lkup PASSED                                                                                                                                 [ 42%]
test_device.py::TestDevice::test_device__sshconf_lkup_def PASSED                                                                                                                             [ 42%]
test_device.py::TestDevice::test_device__sshconf_lkup_path_not_exists PASSED                                                                                                                 [ 42%]
test_device.py::TestDevice::test_device__sshconf_lkup_sock_fd PASSED                                                                                                                         [ 42%]
test_device.py::TestDevice::test_device_bind_kvarg PASSED                                                                                                                                    [ 42%]
test_device.py::TestDevice::test_device_bind_kvarg_exception PASSED                                                                                                                          [ 42%]
test_device.py::TestDevice::test_device_bind_varg PASSED                                                                                                                                     [ 42%]
test_device.py::TestDevice::test_device_bind_varg_exception PASSED                                                                                                                           [ 42%]
test_device.py::TestDevice::test_device_cli PASSED                                                                                                                                           [ 43%]
test_device.py::TestDevice::test_device_cli_blank_output PASSED                                                                                                                              [ 43%]
test_device.py::TestDevice::test_device_cli_conf_info PASSED                                                                                                                                 [ 43%]
test_device.py::TestDevice::test_device_cli_connection_exception PASSED                                                                                                                      [ 43%]
test_device.py::TestDevice::test_device_cli_format_json PASSED                                                                                                                               [ 43%]
test_device.py::TestDevice::test_device_cli_output PASSED                                                                                                                                    [ 43%]
test_device.py::TestDevice::test_device_cli_output_warning PASSED                                                                                                                            [ 43%]
test_device.py::TestDevice::test_device_cli_rpc PASSED                                                                                                                                       [ 43%]
test_device.py::TestDevice::test_device_cli_rpc_exception PASSED                                                                                                                             [ 44%]
test_device.py::TestDevice::test_device_cli_rpc_reply_with_message PASSED                                                                                                                    [ 44%]
test_device.py::TestDevice::test_device_cli_timeout_exception PASSED                                                                                                                         [ 44%]
test_device.py::TestDevice::test_device_cli_to_rpc_string PASSED                                                                                                                             [ 44%]
test_device.py::TestDevice::test_device_cli_to_rpc_string_complex PASSED                                                                                                                     [ 44%]
test_device.py::TestDevice::test_device_cli_to_rpc_string_invalid PASSED                                                                                                                     [ 44%]
test_device.py::TestDevice::test_device_cli_to_rpc_string_strip_pipes PASSED                                                                                                                 [ 44%]
test_device.py::TestDevice::test_device_cli_unknown_exception PASSED                                                                                                                         [ 44%]
test_device.py::TestDevice::test_device_close PASSED                                                                                                                                         [ 45%]
test_device.py::TestDevice::test_device_conn_None_transform PASSED                                                                                                                           [ 45%]
test_device.py::TestDevice::test_device_context_manager PASSED                                                                                                                               [ 45%]
test_device.py::TestDevice::test_device_diff_err_message PASSED                                                                                                                              [ 45%]
test_device.py::TestDevice::test_device_display_xml_exception PASSED                                                                                                                         [ 45%]
test_device.py::TestDevice::test_device_display_xml_rpc PASSED                                                                                                                               [ 45%]
test_device.py::TestDevice::test_device_display_xml_rpc_text PASSED                                                                                                                          [ 45%]
test_device.py::TestDevice::test_device_execute PASSED                                                                                                                                       [ 45%]
test_device.py::TestDevice::test_device_execute_ValueError PASSED                                                                                                                            [ 45%]
test_device.py::TestDevice::test_device_execute_closed PASSED                                                                                                                                [ 46%]
test_device.py::TestDevice::test_device_execute_index_error PASSED                                                                                                                           [ 46%]
test_device.py::TestDevice::test_device_execute_permission_error PASSED                                                                                                                      [ 46%]
test_device.py::TestDevice::test_device_execute_rpc_error PASSED                                                                                                                             [ 46%]
test_device.py::TestDevice::test_device_execute_timeout PASSED                                                                                                                               [ 46%]
test_device.py::TestDevice::test_device_execute_topy PASSED                                                                                                                                  [ 46%]
test_device.py::TestDevice::test_device_execute_unknown_exception PASSED                                                                                                                     [ 46%]
test_device.py::TestDevice::test_device_execute_unopened PASSED                                                                                                                              [ 46%]
test_device.py::TestDevice::test_device_facts PASSED                                                                                                                                         [ 47%]
test_device.py::TestDevice::test_device_facts_error PASSED                                                                                                                                   [ 47%]
test_device.py::TestDevice::test_device_facts_error_exception_on_error PASSED                                                                                                                [ 47%]
test_device.py::TestDevice::test_device_facts_refresh_old_fact_style_with_keys PASSED                                                                                                        [ 47%]
test_device.py::TestDevice::test_device_facts_refresh_unknown_fact_style PASSED                                                                                                              [ 47%]
test_device.py::TestDevice::test_device_get_password PASSED                                                                                                                                  [ 47%]
test_device.py::TestDevice::test_device_get_timeout PASSED                                                                                                                                   [ 47%]
test_device.py::TestDevice::test_device_host_mand_param PASSED                                                                                                                               [ 47%]
test_device.py::TestDevice::test_device_hostname PASSED                                                                                                                                      [ 48%]
test_device.py::TestDevice::test_device_local PASSED                                                                                                                                         [ 48%]
test_device.py::TestDevice::test_device_manages PASSED                                                                                                                                       [ 48%]
test_device.py::TestDevice::test_device_master_gnf_is_backup PASSED                                                                                                                          [ 48%]
test_device.py::TestDevice::test_device_master_gnf_is_master PASSED                                                                                                                          [ 48%]
test_device.py::TestDevice::test_device_master_is_backup PASSED                                                                                                                              [ 48%]
test_device.py::TestDevice::test_device_master_is_master PASSED                                                                                                                              [ 48%]
test_device.py::TestDevice::test_device_master_is_multi_chassis_non_master1 PASSED                                                                                                           [ 48%]
test_device.py::TestDevice::test_device_master_is_multi_chassis_non_master2 PASSED                                                                                                           [ 49%]
test_device.py::TestDevice::test_device_master_is_none1 PASSED                                                                                                                               [ 49%]
test_device.py::TestDevice::test_device_master_is_none2 PASSED                                                                                                                               [ 49%]
test_device.py::TestDevice::test_device_master_is_old_facts PASSED                                                                                                                           [ 49%]
test_device.py::TestDevice::test_device_master_is_re0_only PASSED                                                                                                                            [ 49%]
test_device.py::TestDevice::test_device_master_setter PASSED                                                                                                                                 [ 49%]
test_device.py::TestDevice::test_device_ofacts_exception PASSED                                                                                                                              [ 49%]
test_device.py::TestDevice::test_device_old_style_facts_error_exception_on_error PASSED                                                                                                      [ 49%]
test_device.py::TestDevice::test_device_open PASSED                                                                                                                                          [ 50%]
test_device.py::TestDevice::test_device_open_normalize PASSED                                                                                                                                [ 50%]
test_device.py::TestDevice::test_device_open_with_look_for_keys_False PASSED                                                                                                                 [ 50%]
test_device.py::TestDevice::test_device_open_with_look_for_keys_True PASSED                                                                                                                  [ 50%]
test_device.py::TestDevice::test_device_other_error PASSED                                                                                                                                   [ 50%]
test_device.py::TestDevice::test_device_outbound PASSED                                                                                                                                      [ 50%]
test_device.py::TestDevice::test_device_probe_error PASSED                                                                                                                                   [ 50%]
test_device.py::TestDevice::test_device_probe_timeout_exception PASSED                                                                                                                       [ 50%]
test_device.py::TestDevice::test_device_probe_timeout_gt_zero PASSED                                                                                                                         [ 50%]
test_device.py::TestDevice::test_device_probe_timeout_zero PASSED                                                                                                                            [ 51%]
test_device.py::TestDevice::test_device_property_logfile_close PASSED                                                                                                                        [ 51%]
test_device.py::TestDevice::test_device_property_logfile_exception PASSED                                                                                                                    [ 51%]
test_device.py::TestDevice::test_device_property_logfile_isinstance PASSED                                                                                                                   [ 51%]
test_device.py::TestDevice::test_device_re_name_is_bsys_re0 PASSED                                                                                                                           [ 51%]
test_device.py::TestDevice::test_device_re_name_is_lcc_re1 PASSED                                                                                                                            [ 51%]
test_device.py::TestDevice::test_device_re_name_is_none1 PASSED                                                                                                                              [ 51%]
test_device.py::TestDevice::test_device_re_name_is_none2 PASSED                                                                                                                              [ 51%]
test_device.py::TestDevice::test_device_re_name_is_old_facts PASSED                                                                                                                          [ 52%]
test_device.py::TestDevice::test_device_re_name_is_re0 PASSED                                                                                                                                [ 52%]
test_device.py::TestDevice::test_device_re_name_is_re0_only PASSED                                                                                                                           [ 52%]
test_device.py::TestDevice::test_device_re_name_setter PASSED                                                                                                                                [ 52%]
test_device.py::TestDevice::test_device_repr PASSED                                                                                                                                          [ 52%]
test_device.py::TestDevice::test_device_rpc_json_ex PASSED                                                                                                                                   [ 52%]
test_device.py::TestDevice::test_device_rpcmeta PASSED                                                                                                                                       [ 52%]
test_device.py::TestDevice::test_device_set_facts_exception PASSED                                                                                                                           [ 52%]
test_device.py::TestDevice::test_device_set_ofacts_exception PASSED                                                                                                                          [ 53%]
test_device.py::TestDevice::test_device_set_password PASSED                                                                                                                                  [ 53%]
test_device.py::TestDevice::test_device_set_timeout PASSED                                                                                                                                   [ 53%]
test_device.py::TestDevice::test_device_set_timeout_invalid_string_value PASSED                                                                                                              [ 53%]
test_device.py::TestDevice::test_device_set_timeout_invalid_type PASSED                                                                                                                      [ 53%]
test_device.py::TestDevice::test_device_set_timeout_string PASSED                                                                                                                            [ 53%]
test_device.py::TestDevice::test_device_template PASSED                                                                                                                                      [ 53%]
test_device.py::TestDevice::test_device_uptime PASSED                                                                                                                                        [ 53%]
test_device.py::TestDevice::test_device_user PASSED                                                                                                                                          [ 54%]
test_device.py::TestDevice::test_new_console_return PASSED                                                                                                                                   [ 54%]
test_exception.py::Test_RpcError::test_CommitError_repr PASSED                                                                                                                               [ 54%]
test_exception.py::Test_RpcError::test_ConfigLoadError_repr PASSED                                                                                                                           [ 54%]
test_exception.py::Test_RpcError::test_ConnectError PASSED                                                                                                                                   [ 54%]
test_exception.py::Test_RpcError::test_ConnectError_msg PASSED                                                                                                                               [ 54%]
test_exception.py::Test_RpcError::test_RpcTimeoutError_repr PASSED                                                                                                                           [ 54%]
test_exception.py::Test_RpcError::test_SwRollbackError_repr PASSED                                                                                                                           [ 54%]
test_exception.py::Test_RpcError::test_SwRollbackError_repr_multi PASSED                                                                                                                     [ 54%]
test_exception.py::Test_RpcError::test_json_error PASSED                                                                                                                                     [ 55%]
test_exception.py::Test_RpcError::test_json_error_offending_line PASSED                                                                                                                      [ 55%]
test_exception.py::Test_RpcError::test_repr_multi_warning PASSED                                                                                                                             [ 55%]
test_exception.py::Test_RpcError::test_rpcerror_jxml_check PASSED                                                                                                                            [ 55%]
test_exception.py::Test_RpcError::test_rpcerror_repr PASSED                                                                                                                                  [ 55%]
test_factcache.py::TestFactCache::test_factcache_delete_fact PASSED                                                                                                                          [ 55%]
test_factcache.py::TestFactCache::test_factcache_fact_loop PASSED                                                                                                                            [ 55%]
test_factcache.py::TestFactCache::test_factcache_fail_to_return_expected_fact PASSED                                                                                                         [ 55%]
test_factcache.py::TestFactCache::test_factcache_iter_facts PASSED                                                                                                                           [ 56%]
test_factcache.py::TestFactCache::test_factcache_len_facts PASSED                                                                                                                            [ 56%]
test_factcache.py::TestFactCache::test_factcache_nonmatching_old_and_new_fact PASSED                                                                                                         [ 56%]
test_factcache.py::TestFactCache::test_factcache_refresh_all_facts PASSED                                                                                                                    [ 56%]
test_factcache.py::TestFactCache::test_factcache_refresh_exception_on_failure PASSED                                                                                                         [ 56%]
test_factcache.py::TestFactCache::test_factcache_refresh_no_exception_on_failure PASSED                                                                                                      [ 56%]
test_factcache.py::TestFactCache::test_factcache_refresh_single_key PASSED                                                                                                                   [ 56%]
test_factcache.py::TestFactCache::test_factcache_refresh_two_keys PASSED                                                                                                                     [ 56%]
test_factcache.py::TestFactCache::test_factcache_refresh_unknown_fact PASSED                                                                                                                 [ 57%]
test_factcache.py::TestFactCache::test_factcache_refresh_warnings_on_failure PASSED                                                                                                          [ 57%]
test_factcache.py::TestFactCache::test_factcache_repr_facts PASSED                                                                                                                           [ 57%]
test_factcache.py::TestFactCache::test_factcache_return_unexpected_fact PASSED                                                                                                               [ 57%]
test_factcache.py::TestFactCache::test_factcache_set_fact PASSED                                                                                                                             [ 57%]
test_factcache.py::TestFactCache::test_factcache_string_repr PASSED                                                                                                                          [ 57%]
test_factcache.py::TestFactCache::test_factcache_unknown_fact PASSED                                                                                                                         [ 57%]
test_junos.py::TestJunosInit::test_warning PASSED                                                                                                                                            [ 57%]
test_jxml.py::Test_JXML::test_cscript_conf PASSED                                                                                                                                            [ 58%]
test_jxml.py::Test_JXML::test_cscript_conf_output_tag_child_element PASSED                                                                                                                   [ 58%]
test_jxml.py::Test_JXML::test_cscript_conf_output_tag_not_first_child_element PASSED                                                                                                         [ 58%]
test_jxml.py::Test_JXML::test_cscript_conf_return_none PASSED                                                                                                                                [ 58%]
test_jxml.py::Test_JXML::test_insert PASSED                                                                                                                                                  [ 58%]
test_jxml.py::Test_JXML::test_name PASSED                                                                                                                                                    [ 58%]
test_jxml.py::Test_JXML::test_remove_namespaces PASSED                                                                                                                                       [ 58%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_config_filter_xml_model PASSED                                                                                                                   [ 58%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_config_filter_xml_string PASSED                                                                                                                  [ 58%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_config_filter_xml_string_xml PASSED                                                                                                              [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_config_format_json_JSONLoadError_with_line PASSED                                                                                                [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_rpc PASSED                                                                                                                                       [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_rpc_ignore_warning_bool PASSED                                                                                                                   [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_rpc_ignore_warning_list PASSED                                                                                                                   [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_get_rpc_ignore_warning_str PASSED                                                                                                                    [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_model_true PASSED                                                                                                                                    [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_constructor PASSED                                                                                                                           [ 59%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_format_json_14_2 PASSED                                                                                                             [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_format_json_gt_14_2 PASSED                                                                                                          [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_format_json_lt_14_2 PASSED                                                                                                          [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_kvargs_bool_False PASSED                                                                                                            [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_kvargs_bool_true PASSED                                                                                                             [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_kvargs_dict PASSED                                                                                                                  [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_kvargs_list_with_dict PASSED                                                                                                        [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_kvargs_tuple PASSED                                                                                                                 [ 60%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_normalize PASSED                                                                                                                    [ 61%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_exec_rpc_vargs PASSED                                                                                                                        [ 61%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_get_config PASSED                                                                                                                            [ 61%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_load_config PASSED                                                                                                                           [ 61%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_load_config_option_action PASSED                                                                                                             [ 61%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_load_config_with_configuration_tag PASSED                                                                                                    [ 61%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_option_format PASSED                                                                                                                         [ 61%]
test_rpcmeta.py::Test_RpcMetaExec::test_rpcmeta_option_format_json PASSED                                                                                                                    [ 61%]
transport/test_serial.py::TestSerial::test_close_connection PASSED                                                                                                                           [ 62%]
transport/test_serial.py::TestSerial::test_console_connected PASSED                                                                                                                          [ 62%]
transport/test_serial.py::TestSerial::test_tty_serial_open_exception PASSED                                                                                                                  [ 62%]
transport/test_serial.py::TestSerial::test_tty_serial_rawwrite PASSED                                                                                                                        [ 62%]
transport/test_serial.py::TestSerial::test_tty_serial_read PASSED                                                                                                                            [ 62%]
transport/test_serial.py::TestSerial::test_tty_serial_read_prompt PASSED                                                                                                                     [ 62%]
transport/test_serial.py::TestSerialWin::test_tty_serial_win_connected PASSED                                                                                                                [ 62%]
transport/test_serial.py::TestSerialWin::test_tty_serial_win_rpc_call PASSED                                                                                                                 [ 62%]
transport/test_tty.py::TestTTY::test_ev_option PASSED                                                                                                                                        [ 62%]
transport/test_tty.py::TestTTY::test_ev_shell PASSED                                                                                                                                         [ 63%]
transport/test_tty.py::TestTTY::test_loader PASSED                                                                                                                                           [ 63%]
transport/test_tty.py::TestTTY::test_login_bad_password_ConnectAuthError PASSED                                                                                                              [ 63%]
transport/test_tty.py::TestTTY::test_login_bad_password_runtimeerror PASSED                                                                                                                  [ 63%]
transport/test_tty.py::TestTTY::test_tty_already_logout PASSED                                                                                                                               [ 63%]
transport/test_tty.py::TestTTY::test_tty_cli PASSED                                                                                                                                          [ 63%]
transport/test_tty.py::TestTTY::test_tty_ev_netconf_closed PASSED                                                                                                                            [ 63%]
transport/test_tty.py::TestTTY::test_tty_ev_tty_nologin PASSED                                                                                                                               [ 63%]
transport/test_tty.py::TestTTY::test_tty_login_state_machine_hotkey PASSED                                                                                                                   [ 64%]
transport/test_tty.py::TestTTY::test_tty_login_state_machine_loader PASSED                                                                                                                   [ 64%]
transport/test_tty.py::TestTTY::test_tty_logout_state_machine_attempt_10 PASSED                                                                                                              [ 64%]
transport/test_tty.py::TestTTY::test_tty_no_login PASSED                                                                                                                                     [ 64%]
transport/test_tty_netconf.py::TestTTYNetconf::test_close_force_false PASSED                                                                                                                 [ 64%]
transport/test_tty_netconf.py::TestTTYNetconf::test_close_force_true PASSED                                                                                                                  [ 64%]
transport/test_tty_netconf.py::TestTTYNetconf::test_open_RuntimeError PASSED                                                                                                                 [ 64%]
transport/test_tty_netconf.py::TestTTYNetconf::test_open_at_shell_true PASSED                                                                                                                [ 64%]
transport/test_tty_netconf.py::TestTTYNetconf::test_rpc PASSED                                                                                                                               [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_multi_rpc_error PASSED                                                                                                       [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_receive_XMLSyntaxError PASSED                                                                                                [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_receive_XMLSyntaxError_eom_in_center PASSED                                                                                  [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_receive_empty_line PASSED                                                                                                    [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_receive_select_error PASSED                                                                                                  [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_receive_socket_error PASSED                                                                                                  [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_receive_splited_eom PASSED                                                                                                   [ 65%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_receive_xmn_error PASSED                                                                                                     [ 66%]
transport/test_tty_netconf.py::TestTTYNetconf::test_tty_netconf_single_rpc_error PASSED                                                                                                      [ 66%]
transport/test_tty_netconf.py::TestTTYNetconf::test_zeroize_exception PASSED                                                                                                                 [ 66%]
transport/test_tty_ssh.py::TestTTYSSH::test_close PASSED                                                                                                                                     [ 66%]
transport/test_tty_ssh.py::TestTTYSSH::test_open PASSED                                                                                                                                      [ 66%]
transport/test_tty_ssh.py::TestTTYSSH::test_open_exception PASSED                                                                                                                            [ 66%]
transport/test_tty_ssh.py::TestTTYSSH::test_read PASSED                                                                                                                                      [ 66%]
transport/test_tty_ssh.py::TestTTYSSH::test_tty_ssh_baud PASSED                                                                                                                              [ 66%]
transport/test_tty_ssh.py::TestTTYSSH::test_tty_ssh_rawwrite_sys_py3 PASSED                                                                                                                  [ 66%]
transport/test_tty_telnet.py::TestTTYTelnet::test_close PASSED                                                                                                                               [ 67%]
transport/test_tty_telnet.py::TestTTYTelnet::test_open PASSED                                                                                                                                [ 67%]
transport/test_tty_telnet.py::TestTTYTelnet::test_open_exception PASSED                                                                                                                      [ 67%]
transport/test_tty_telnet.py::TestTTYTelnet::test_read PASSED                                                                                                                                [ 67%]
transport/test_tty_telnet.py::TestTTYTelnet::test_read_prompt_RuntimeError PASSED                                                                                                            [ 67%]
transport/test_tty_telnet.py::TestTTYTelnet::test_read_prompt_in_use_RuntimeError PASSED                                                                                                     [ 67%]
transport/test_tty_telnet.py::TestTTYTelnet::test_tty_telnet_baud PASSED                                                                                                                     [ 67%]
transport/test_tty_telnet.py::TestTTYTelnet::test_tty_telnet_rawwrite_sys_py3 PASSED                                                                                                         [ 67%]
utils/test_config.py::TestConfig::test__enter__batch_exception_RpcError PASSED                                                                                                               [ 68%]
utils/test_config.py::TestConfig::test__enter__batch_exception_RpcTimeoutError PASSED                                                                                                        [ 68%]
utils/test_config.py::TestConfig::test__enter__dyanamic_exception_RpcError PASSED                                                                                                            [ 68%]
utils/test_config.py::TestConfig::test__enter__private_exception_RpcError PASSED                                                                                                             [ 68%]
utils/test_config.py::TestConfig::test__enter__private_exception_RpcTimeoutError PASSED                                                                                                      [ 68%]
utils/test_config.py::TestConfig::test_commit_RpcTimeoutError PASSED                                                                                                                         [ 68%]
utils/test_config.py::TestConfig::test_commit_check PASSED                                                                                                                                   [ 68%]
utils/test_config.py::TestConfig::test_commit_check_RpcTimeoutError PASSED                                                                                                                   [ 68%]
utils/test_config.py::TestConfig::test_commit_check_exception PASSED                                                                                                                         [ 69%]
utils/test_config.py::TestConfig::test_commit_configuration_multi_rpc_error PASSED                                                                                                           [ 69%]
utils/test_config.py::TestConfig::test_config_commit_check_exception_RpcError PASSED                                                                                                         [ 69%]
utils/test_config.py::TestConfig::test_config_commit_combination PASSED                                                                                                                      [ 69%]
utils/test_config.py::TestConfig::test_config_commit_comment PASSED                                                                                                                          [ 69%]
utils/test_config.py::TestConfig::test_config_commit_confirm PASSED                                                                                                                          [ 69%]
utils/test_config.py::TestConfig::test_config_commit_detail PASSED                                                                                                                           [ 69%]
utils/test_config.py::TestConfig::test_config_commit_exception PASSED                                                                                                                        [ 69%]
utils/test_config.py::TestConfig::test_config_commit_exception_RpcError PASSED                                                                                                               [ 70%]
utils/test_config.py::TestConfig::test_config_commit_force_sync PASSED                                                                                                                       [ 70%]
utils/test_config.py::TestConfig::test_config_commit_full PASSED                                                                                                                             [ 70%]
utils/test_config.py::TestConfig::test_config_commit_sync PASSED                                                                                                                             [ 70%]
utils/test_config.py::TestConfig::test_config_commit_timeout PASSED                                                                                                                          [ 70%]
utils/test_config.py::TestConfig::test_config_commit_xml_exception PASSED                                                                                                                    [ 70%]
utils/test_config.py::TestConfig::test_config_confirm_true PASSED                                                                                                                            [ 70%]
utils/test_config.py::TestConfig::test_config_constructor PASSED                                                                                                                             [ 70%]
utils/test_config.py::TestConfig::test_config_diff PASSED                                                                                                                                    [ 70%]
utils/test_config.py::TestConfig::test_config_diff_exception PASSED                                                                                                                          [ 71%]
utils/test_config.py::TestConfig::test_config_diff_exception_severity_warning PASSED                                                                                                         [ 71%]
utils/test_config.py::TestConfig::test_config_diff_exception_severity_warning_still_raise PASSED                                                                                             [ 71%]
utils/test_config.py::TestConfig::test_config_diff_rpc_timeout PASSED                                                                                                                        [ 71%]
utils/test_config.py::TestConfig::test_config_diff_use_fast_diff PASSED                                                                                                                      [ 71%]
utils/test_config.py::TestConfig::test_config_diff_use_fast_diff_rb_id_gt_0 PASSED                                                                                                           [ 71%]
utils/test_config.py::TestConfig::test_config_load PASSED                                                                                                                                    [ 71%]
utils/test_config.py::TestConfig::test_config_load_len_with_format_set PASSED                                                                                                                [ 71%]
utils/test_config.py::TestConfig::test_config_load_len_with_format_text PASSED                                                                                                               [ 72%]
utils/test_config.py::TestConfig::test_config_load_len_with_format_xml PASSED                                                                                                                [ 72%]
utils/test_config.py::TestConfig::test_config_load_lformat_byext_ValueError PASSED                                                                                                           [ 72%]
utils/test_config.py::TestConfig::test_config_load_lset_format_ValueError PASSED                                                                                                             [ 72%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_conf PASSED                                                                                                                [ 72%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_conf_replace_tag PASSED                                                                                                    [ 72%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_error PASSED                                                                                                               [ 72%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_insert PASSED                                                                                                              [ 72%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_json PASSED                                                                                                                [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set PASSED                                                                                                                 [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_activate PASSED                                                                                                        [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_annotate PASSED                                                                                                        [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_copy PASSED                                                                                                            [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_deactivate PASSED                                                                                                      [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_delete PASSED                                                                                                          [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_protect PASSED                                                                                                         [ 73%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_rename PASSED                                                                                                          [ 74%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_set_unprotect PASSED                                                                                                       [ 74%]
utils/test_config.py::TestConfig::test_config_load_lset_from_rexp_xml PASSED                                                                                                                 [ 74%]
utils/test_config.py::TestConfig::test_config_load_path_set PASSED                                                                                                                           [ 74%]
utils/test_config.py::TestConfig::test_config_load_path_text PASSED                                                                                                                          [ 74%]
utils/test_config.py::TestConfig::test_config_load_path_xml PASSED                                                                                                                           [ 74%]
utils/test_config.py::TestConfig::test_config_load_template PASSED                                                                                                                           [ 74%]
utils/test_config.py::TestConfig::test_config_load_template_path PASSED                                                                                                                      [ 74%]
utils/test_config.py::TestConfig::test_config_load_try_load_rpcerror PASSED                                                                                                                  [ 75%]
utils/test_config.py::TestConfig::test_config_load_try_load_rpctimeouterror PASSED                                                                                                           [ 75%]
utils/test_config.py::TestConfig::test_config_load_update PASSED                                                                                                                             [ 75%]
utils/test_config.py::TestConfig::test_config_load_update_merge_overwrite PASSED                                                                                                             [ 75%]
utils/test_config.py::TestConfig::test_config_load_url PASSED                                                                                                                                [ 75%]
utils/test_config.py::TestConfig::test_config_load_vargs_len PASSED                                                                                                                          [ 75%]
utils/test_config.py::TestConfig::test_config_load_with_format_json PASSED                                                                                                                   [ 75%]
utils/test_config.py::TestConfig::test_config_load_with_format_json_from_file_ext PASSED                                                                                                     [ 75%]
utils/test_config.py::TestConfig::test_config_lock PASSED                                                                                                                                    [ 75%]
utils/test_config.py::TestConfig::test_config_lock_ConnectClosedError PASSED                                                                                                                 [ 76%]
utils/test_config.py::TestConfig::test_config_lock_LockError PASSED                                                                                                                          [ 76%]
utils/test_config.py::TestConfig::test_config_lock_exception PASSED                                                                                                                          [ 76%]
utils/test_config.py::TestConfig::test_config_mode_batch PASSED                                                                                                                              [ 76%]
utils/test_config.py::TestConfig::test_config_mode_batch_open_configuration_ex PASSED                                                                                                        [ 76%]
utils/test_config.py::TestConfig::test_config_mode_close_configuration_ex PASSED                                                                                                             [ 76%]
utils/test_config.py::TestConfig::test_config_mode_dynamic PASSED                                                                                                                            [ 76%]
utils/test_config.py::TestConfig::test_config_mode_ephemeral_default PASSED                                                                                                                  [ 76%]
utils/test_config.py::TestConfig::test_config_mode_ephemeral_instance PASSED                                                                                                                 [ 77%]
utils/test_config.py::TestConfig::test_config_mode_exclusive PASSED                                                                                                                          [ 77%]
utils/test_config.py::TestConfig::test_config_mode_private PASSED                                                                                                                            [ 77%]
utils/test_config.py::TestConfig::test_config_mode_private_open_configuration_ex PASSED                                                                                                      [ 77%]
utils/test_config.py::TestConfig::test_config_mode_undefined PASSED                                                                                                                          [ 77%]
utils/test_config.py::TestConfig::test_config_pdiff PASSED                                                                                                                                   [ 77%]
utils/test_config.py::TestConfig::test_config_rollback PASSED                                                                                                                                [ 77%]
utils/test_config.py::TestConfig::test_config_rollback_exception PASSED                                                                                                                      [ 77%]
utils/test_config.py::TestConfig::test_config_try_load_exception PASSED                                                                                                                      [ 78%]
utils/test_config.py::TestConfig::test_config_unlock PASSED                                                                                                                                  [ 78%]
utils/test_config.py::TestConfig::test_config_unlock_ConnectClosedError PASSED                                                                                                               [ 78%]
utils/test_config.py::TestConfig::test_config_unlock_LockError PASSED                                                                                                                        [ 78%]
utils/test_config.py::TestConfig::test_config_unlock_exception PASSED                                                                                                                        [ 78%]
utils/test_config.py::TestConfig::test_config_unsupported_kwargs PASSED                                                                                                                      [ 78%]
utils/test_config.py::TestConfig::test_load_config_patch PASSED                                                                                                                              [ 78%]
utils/test_config.py::TestConfig::test_load_config_text PASSED                                                                                                                               [ 78%]
utils/test_config.py::TestConfig::test_load_merge_true PASSED                                                                                                                                [ 79%]
utils/test_config.py::TestConfig::test_rescue_action_delete PASSED                                                                                                                           [ 79%]
utils/test_config.py::TestConfig::test_rescue_action_get PASSED                                                                                                                              [ 79%]
utils/test_config.py::TestConfig::test_rescue_action_get_exception PASSED                                                                                                                    [ 79%]
utils/test_config.py::TestConfig::test_rescue_action_reload PASSED                                                                                                                           [ 79%]
utils/test_config.py::TestConfig::test_rescue_action_reload_exception PASSED                                                                                                                 [ 79%]
utils/test_config.py::TestConfig::test_rescue_action_save PASSED                                                                                                                             [ 79%]
utils/test_config.py::TestConfig::test_rescue_action_unsupported_action PASSED                                                                                                               [ 79%]
utils/test_fs.py::TestFS::test_cat PASSED                                                                                                                                                    [ 79%]
utils/test_fs.py::TestFS::test_cat_wrong_path_return_none PASSED                                                                                                                             [ 80%]
utils/test_fs.py::TestFS::test_checksum_return_none PASSED                                                                                                                                   [ 80%]
utils/test_fs.py::TestFS::test_checksum_return_rsp PASSED                                                                                                                                    [ 80%]
utils/test_fs.py::TestFS::test_checksum_unknown_calc PASSED                                                                                                                                  [ 80%]
utils/test_fs.py::TestFS::test_copy_return_false PASSED                                                                                                                                      [ 80%]
utils/test_fs.py::TestFS::test_copy_return_true PASSED                                                                                                                                       [ 80%]
utils/test_fs.py::TestFS::test_copy_routing_instance_return_true PASSED                                                                                                                      [ 80%]
utils/test_fs.py::TestFS::test_copy_source_address_return_true PASSED                                                                                                                        [ 80%]
utils/test_fs.py::TestFS::test_cwd PASSED                                                                                                                                                    [ 81%]
utils/test_fs.py::TestFS::test_directory_usage PASSED                                                                                                                                        [ 81%]
utils/test_fs.py::TestFS::test_directory_usage_error PASSED                                                                                                                                  [ 81%]
utils/test_fs.py::TestFS::test_directory_usage_no_dir_name PASSED                                                                                                                            [ 81%]
utils/test_fs.py::TestFS::test_directory_usage_no_directory PASSED                                                                                                                           [ 81%]
utils/test_fs.py::TestFS::test_ls_brief_true PASSED                                                                                                                                          [ 81%]
utils/test_fs.py::TestFS::test_ls_calling___decode_dir PASSED                                                                                                                                [ 81%]
utils/test_fs.py::TestFS::test_ls_calling___decode_dir_type_symbolic_link PASSED                                                                                                             [ 81%]
utils/test_fs.py::TestFS::test_ls_calling___decode_file PASSED                                                                                                                               [ 82%]
utils/test_fs.py::TestFS::test_ls_link_path_false PASSED                                                                                                                                     [ 82%]
utils/test_fs.py::TestFS::test_ls_return_none PASSED                                                                                                                                         [ 82%]
utils/test_fs.py::TestFS::test_mkdir PASSED                                                                                                                                                  [ 82%]
utils/test_fs.py::TestFS::test_move_return_false PASSED                                                                                                                                      [ 82%]
utils/test_fs.py::TestFS::test_move_return_true PASSED                                                                                                                                       [ 82%]
utils/test_fs.py::TestFS::test_pwd PASSED                                                                                                                                                    [ 82%]
utils/test_fs.py::TestFS::test_rm_return_false PASSED                                                                                                                                        [ 82%]
utils/test_fs.py::TestFS::test_rm_return_true PASSED                                                                                                                                         [ 83%]
utils/test_fs.py::TestFS::test_rmdir PASSED                                                                                                                                                  [ 83%]
utils/test_fs.py::TestFS::test_stat_calling___decode_dir PASSED                                                                                                                              [ 83%]
utils/test_fs.py::TestFS::test_stat_calling___decode_file PASSED                                                                                                                             [ 83%]
utils/test_fs.py::TestFS::test_stat_return_none PASSED                                                                                                                                       [ 83%]
utils/test_fs.py::TestFS::test_storage_cleanup PASSED                                                                                                                                        [ 83%]
utils/test_fs.py::TestFS::test_storage_cleanup_check PASSED                                                                                                                                  [ 83%]
utils/test_fs.py::TestFS::test_storage_usage PASSED                                                                                                                                          [ 83%]
utils/test_fs.py::TestFS::test_storage_usage_linux PASSED                                                                                                                                    [ 83%]
utils/test_fs.py::TestFS::test_symlink PASSED                                                                                                                                                [ 84%]
utils/test_fs.py::TestFS::test_tgz_return_error PASSED                                                                                                                                       [ 84%]
utils/test_fs.py::TestFS::test_tgz_return_true PASSED                                                                                                                                        [ 84%]
utils/test_ftp.py::TestFtp::test_ftp_close PASSED                                                                                                                                            [ 84%]
utils/test_ftp.py::TestFtp::test_ftp_context PASSED                                                                                                                                          [ 84%]
utils/test_ftp.py::TestFtp::test_ftp_dnload_file PASSED                                                                                                                                      [ 84%]
utils/test_ftp.py::TestFtp::test_ftp_dnload_file_errors PASSED                                                                                                                               [ 84%]
utils/test_ftp.py::TestFtp::test_ftp_dnload_file_get PASSED                                                                                                                                  [ 84%]
utils/test_ftp.py::TestFtp::test_ftp_dnload_file_get_retr PASSED                                                                                                                             [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_dnload_file_get_rf_filename PASSED                                                                                                                      [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_dnload_file_get_rf_filename_cb PASSED                                                                                                                   [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_open PASSED                                                                                                                                             [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_open_erors PASSED                                                                                                                                       [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_upload_file PASSED                                                                                                                                      [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_upload_file_errors PASSED                                                                                                                               [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_upload_file_rem_full_path PASSED                                                                                                                        [ 85%]
utils/test_ftp.py::TestFtp::test_ftp_upload_file_rem_path PASSED                                                                                                                             [ 86%]
utils/test_ftp.py::TestFtp::test_ftp_upload_file_rem_path_create PASSED                                                                                                                      [ 86%]
utils/test_scp.py::TestScp::test_scp_close PASSED                                                                                                                                            [ 86%]
utils/test_scp.py::TestScp::test_scp_console PASSED                                                                                                                                          [ 86%]
utils/test_scp.py::TestScp::test_scp_context PASSED                                                                                                                                          [ 86%]
utils/test_scp.py::TestScp::test_scp_open PASSED                                                                                                                                             [ 86%]
utils/test_scp.py::TestScp::test_scp_progress PASSED                                                                                                                                         [ 86%]
utils/test_scp.py::TestScp::test_scp_progress_true PASSED                                                                                                                                    [ 86%]
utils/test_scp.py::TestScp::test_scp_proxycommand PASSED                                                                                                                                     [ 87%]
utils/test_scp.py::TestScp::test_scp_user_def_progress PASSED                                                                                                                                [ 87%]
utils/test_scp.py::TestScp::test_scp_user_def_progress_args_2 PASSED                                                                                                                         [ 87%]
utils/test_scp.py::TestScp::test_ssh_private_key_file PASSED                                                                                                                                 [ 87%]
utils/test_start_shell.py::TestStartShell::test_startshell_close PASSED                                                                                                                      [ 87%]
utils/test_start_shell.py::TestStartShell::test_startshell_context PASSED                                                                                                                    [ 87%]
utils/test_start_shell.py::TestStartShell::test_startshell_open_with_bourne_shell PASSED                                                                                                     [ 87%]
utils/test_start_shell.py::TestStartShell::test_startshell_open_with_junos_term PASSED                                                                                                       [ 87%]
utils/test_start_shell.py::TestStartShell::test_startshell_open_with_shell_term PASSED                                                                                                       [ 87%]
utils/test_start_shell.py::TestStartShell::test_startshell_run PASSED                                                                                                                        [ 88%]
utils/test_start_shell.py::TestStartShell::test_startshell_run_regex PASSED                                                                                                                  [ 88%]
utils/test_start_shell.py::TestStartShell::test_startshell_run_this_None PASSED                                                                                                              [ 88%]
utils/test_start_shell.py::TestStartShell::test_startshell_wait_for PASSED                                                                                                                   [ 88%]
utils/test_start_shell.py::TestStartShell::test_startshell_wait_for_regex PASSED                                                                                                             [ 88%]
utils/test_sw.py::TestSW::test_sw_check_pending_install PASSED                                                                                                                               [ 88%]
utils/test_sw.py::TestSW::test_sw_check_pending_install_RpcError_continue PASSED                                                                                                             [ 88%]
utils/test_sw.py::TestSW::test_sw_constructor_multi_re PASSED                                                                                                                                [ 88%]
utils/test_sw.py::TestSW::test_sw_constructor_multi_vc PASSED                                                                                                                                [ 89%]
utils/test_sw.py::TestSW::test_sw_halt PASSED                                                                                                                                                [ 89%]
utils/test_sw.py::TestSW::test_sw_halt_exception PASSED                                                                                                                                      [ 89%]
utils/test_sw.py::TestSW::test_sw_halt_multi_re_vc PASSED                                                                                                                                    [ 89%]
utils/test_sw.py::TestSW::test_sw_hashfile PASSED                                                                                                                                            [ 89%]
utils/test_sw.py::TestSW::test_sw_install_issu PASSED                                                                                                                                        [ 89%]
utils/test_sw.py::TestSW::test_sw_install_issu_nssu_both_error PASSED                                                                                                                        [ 89%]
utils/test_sw.py::TestSW::test_sw_install_issu_nssu_single_re_error PASSED                                                                                                                   [ 89%]
utils/test_sw.py::TestSW::test_sw_install_issu_single_re_error PASSED                                                                                                                        [ 90%]
utils/test_sw.py::TestSW::test_sw_install_kwargs_force_host PASSED                                                                                                                           [ 90%]
utils/test_sw.py::TestSW::test_sw_install_mixed_vc PASSED                                                                                                                                    [ 90%]
utils/test_sw.py::TestSW::test_sw_install_mixed_vc_TypeError PASSED                                                                                                                          [ 90%]
utils/test_sw.py::TestSW::test_sw_install_mixed_vc_ValueError PASSED                                                                                                                         [ 90%]
utils/test_sw.py::TestSW::test_sw_install_mixed_vc_safe_copy_false PASSED                                                                                                                    [ 90%]
utils/test_sw.py::TestSW::test_sw_install_mixed_vc_with_copy PASSED                                                                                                                          [ 90%]
utils/test_sw.py::TestSW::test_sw_install_multi_mx PASSED                                                                                                                                    [ 90%]
utils/test_sw.py::TestSW::test_sw_install_multi_mx_msg_check PASSED                                                                                                                          [ 91%]
utils/test_sw.py::TestSW::test_sw_install_multi_mx_msg_check_failure PASSED                                                                                                                  [ 91%]
utils/test_sw.py::TestSW::test_sw_install_multi_vc PASSED                                                                                                                                    [ 91%]
utils/test_sw.py::TestSW::test_sw_install_multi_vc_member_id PASSED                                                                                                                          [ 91%]
utils/test_sw.py::TestSW::test_sw_install_multi_vc_mode_disabled PASSED                                                                                                                      [ 91%]
utils/test_sw.py::TestSW::test_sw_install_multi_vc_multiple_member_id PASSED                                                                                                                 [ 91%]
utils/test_sw.py::TestSW::test_sw_install_no_package_result PASSED                                                                                                                           [ 91%]
utils/test_sw.py::TestSW::test_sw_install_nonexistent_mx80_package PASSED                                                                                                                    [ 91%]
utils/test_sw.py::TestSW::test_sw_install_nssu PASSED                                                                                                                                        [ 91%]
utils/test_sw.py::TestSW::test_sw_install_single_re PASSED                                                                                                                                   [ 92%]
utils/test_sw.py::TestSW::test_sw_install_single_re_on_multi_re PASSED                                                                                                                       [ 92%]
utils/test_sw.py::TestSW::test_sw_install_srx_branch_cluster PASSED                                                                                                                          [ 92%]
utils/test_sw.py::TestSW::test_sw_install_url_in_pkg_set PASSED                                                                                                                              [ 92%]
utils/test_sw.py::TestSW::test_sw_install_validate PASSED                                                                                                                                    [ 92%]
utils/test_sw.py::TestSW::test_sw_install_via_url PASSED                                                                                                                                     [ 92%]
utils/test_sw.py::TestSW::test_sw_install_vmhost PASSED                                                                                                                                      [ 92%]
utils/test_sw.py::TestSW::test_sw_inventory PASSED                                                                                                                                           [ 92%]
utils/test_sw.py::TestSW::test_sw_local_checksum_unknown_alg PASSED                                                                                                                          [ 93%]
utils/test_sw.py::TestSW::test_sw_local_md5 PASSED                                                                                                                                           [ 93%]
utils/test_sw.py::TestSW::test_sw_local_sha1 PASSED                                                                                                                                          [ 93%]
utils/test_sw.py::TestSW::test_sw_local_sha256 PASSED                                                                                                                                        [ 93%]
utils/test_sw.py::TestSW::test_sw_pkgadd PASSED                                                                                                                                              [ 93%]
utils/test_sw.py::TestSW::test_sw_pkgaddISSU PASSED                                                                                                                                          [ 93%]
utils/test_sw.py::TestSW::test_sw_pkgaddNSSU PASSED                                                                                                                                          [ 93%]
utils/test_sw.py::TestSW::test_sw_pkgadd_pkg_set PASSED                                                                                                                                      [ 93%]
utils/test_sw.py::TestSW::test_sw_poweroff PASSED                                                                                                                                            [ 94%]
utils/test_sw.py::TestSW::test_sw_poweroff_exception PASSED                                                                                                                                  [ 94%]
utils/test_sw.py::TestSW::test_sw_poweroff_multi_re_vc PASSED                                                                                                                                [ 94%]
utils/test_sw.py::TestSW::test_sw_progress PASSED                                                                                                                                            [ 94%]
utils/test_sw.py::TestSW::test_sw_progress_true PASSED                                                                                                                                       [ 94%]
utils/test_sw.py::TestSW::test_sw_put PASSED                                                                                                                                                 [ 94%]
utils/test_sw.py::TestSW::test_sw_put_ftp PASSED                                                                                                                                             [ 94%]
utils/test_sw.py::TestSW::test_sw_put_progress PASSED                                                                                                                                        [ 94%]
utils/test_sw.py::TestSW::test_sw_reboot PASSED                                                                                                                                              [ 95%]
utils/test_sw.py::TestSW::test_sw_reboot_at PASSED                                                                                                                                           [ 95%]
utils/test_sw.py::TestSW::test_sw_reboot_exception PASSED                                                                                                                                    [ 95%]
utils/test_sw.py::TestSW::test_sw_reboot_exception_RpcTimeoutError PASSED                                                                                                                    [ 95%]
utils/test_sw.py::TestSW::test_sw_reboot_mixed_vc PASSED                                                                                                                                     [ 95%]
utils/test_sw.py::TestSW::test_sw_reboot_mixed_vc_all_re_false PASSED                                                                                                                        [ 95%]
utils/test_sw.py::TestSW::test_sw_reboot_multi_re_vc PASSED                                                                                                                                  [ 95%]
utils/test_sw.py::TestSW::test_sw_reboot_output_in_reply PASSED                                                                                                                              [ 95%]
utils/test_sw.py::TestSW::test_sw_remote_checksum_md5 PASSED                                                                                                                                 [ 95%]
utils/test_sw.py::TestSW::test_sw_remote_checksum_not_found PASSED                                                                                                                           [ 96%]
utils/test_sw.py::TestSW::test_sw_remote_checksum_not_rpc_error PASSED                                                                                                                       [ 96%]
utils/test_sw.py::TestSW::test_sw_remote_checksum_sha1 PASSED                                                                                                                                [ 96%]
utils/test_sw.py::TestSW::test_sw_remote_checksum_sha256 PASSED                                                                                                                              [ 96%]
utils/test_sw.py::TestSW::test_sw_remote_checksum_unknown_alg PASSED                                                                                                                         [ 96%]
utils/test_sw.py::TestSW::test_sw_rollback PASSED                                                                                                                                            [ 96%]
utils/test_sw.py::TestSW::test_sw_rollback_exception PASSED                                                                                                                                  [ 96%]
utils/test_sw.py::TestSW::test_sw_rollback_multi PASSED                                                                                                                                      [ 96%]
utils/test_sw.py::TestSW::test_sw_rollback_multi_exception PASSED                                                                                                                            [ 97%]
utils/test_sw.py::TestSW::test_sw_safe_copy PASSED                                                                                                                                           [ 97%]
utils/test_sw.py::TestSW::test_sw_safe_copy_checksum_none PASSED                                                                                                                             [ 97%]
utils/test_sw.py::TestSW::test_sw_safe_copy_cleanfs_fail PASSED                                                                                                                              [ 97%]
utils/test_sw.py::TestSW::test_sw_safe_copy_missing_local_file PASSED                                                                                                                        [ 97%]
utils/test_sw.py::TestSW::test_sw_safe_copy_return_false PASSED                                                                                                                              [ 97%]
utils/test_sw.py::TestSW::test_sw_safe_install PASSED                                                                                                                                        [ 97%]
utils/test_sw.py::TestSW::test_sw_safe_install_copy_fail PASSED                                                                                                                              [ 97%]
utils/test_sw.py::TestSW::test_sw_val_issu_request_shell_execute_gres_on PASSED                                                                                                              [ 98%]
utils/test_sw.py::TestSW::test_sw_validate PASSED                                                                                                                                            [ 98%]
utils/test_sw.py::TestSW::test_sw_validate_issu PASSED                                                                                                                                       [ 98%]
utils/test_sw.py::TestSW::test_sw_validate_issu_2re_false PASSED                                                                                                                             [ 98%]
utils/test_sw.py::TestSW::test_sw_validate_issu_commit_sync_off PASSED                                                                                                                       [ 98%]
utils/test_sw.py::TestSW::test_sw_validate_issu_nonstop_routing_off PASSED                                                                                                                   [ 98%]
utils/test_sw.py::TestSW::test_sw_validate_issu_request_shell_execute PASSED                                                                                                                 [ 98%]
utils/test_sw.py::TestSW::test_sw_validate_issu_ss_graceful_off PASSED                                                                                                                       [ 98%]
utils/test_sw.py::TestSW::test_sw_validate_issu_ss_login_other_re_fail PASSED                                                                                                                [ 99%]
utils/test_sw.py::TestSW::test_sw_validate_issu_stateful_replication_off PASSED                                                                                                              [ 99%]
utils/test_sw.py::TestSW::test_sw_validate_issu_validation_succeeded PASSED                                                                                                                  [ 99%]
utils/test_sw.py::TestSW::test_sw_validate_nssu PASSED                                                                                                                                       [ 99%]
utils/test_sw.py::TestSW::test_sw_zeroize PASSED                                                                                                                                             [ 99%]
utils/test_sw.py::TestSW::test_sw_zeroize_exception PASSED                                                                                                                                   [ 99%]
utils/test_util.py::TestUtil::test_dev_setter_exception PASSED                                                                                                                               [ 99%]
utils/test_util.py::TestUtil::test_repr PASSED                                                                                                                                               [ 99%]
utils/test_util.py::TestUtil::test_rpc_setter_exception PASSED                                                                                                                               [100%]

============================================================================================= FAILURES =============================================================================================
_________________________________________________________________________ TestFactoryCMDTable.test_textfsm_table_mutli_key _________________________________________________________________________

self = <tests.unit.factory.test_cmdtable.TestFactoryCMDTable testMethod=test_textfsm_table_mutli_key>, mock_execute = <MagicMock name='execute' id='139766733105472'>

        @patch("jnpr.junos.Device.execute")
        def test_textfsm_table_mutli_key(self, mock_execute):
            mock_execute.side_effect = self._mock_manager
            yaml_data = """
    ---
    ARPtable:
        command: show arp no-resolve
        platform: juniper_junos
        key:
          - ip
          - mac
        use_textfsm: True
        view: ARPview
    
    ARPview:
        fields:
            mac: MAC
            ip: IP_ADDRESS
            interface: INTERFACE
            flag: FLAGS
    """
            globals().update(
                FactoryLoader().load(
                    yaml.load(yaml_data, Loader=yamlordereddictloader.Loader)
                )
            )
            stats = ARPtable(self.dev)
>           stats = stats.get()

factory/test_cmdtable.py:2393: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/home/robot/.local/lib/python3.9/site-packages/jnpr/junos/factory/cmdtable.py:164: in get
    self.output = self._parse_textfsm(
/home/robot/.local/lib/python3.9/site-packages/jnpr/junos/factory/cmdtable.py:374: in _parse_textfsm
    return self._filter_output(cli_table)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <[AttributeError("'NoneType' object has no attribute 'keys'") raised in repr()] ARPtable object at 0x7f1dfa7bdf70>
cli_table = CliTable('MAC_ADDRESS, IP_ADDRESS, INTERFACE, FLAGS\nf0:76:1c:9d:23:19, 10.221.128.201, fxp0.0, none\nfc:45:96:f3:be:1...2.32, fxp0.0, none\n56:68:ad:d8:20:44, 10.221.132.62, fxp0.0, none\n56:68:ad:d8:1d:3b, 10.221.132.199, fxp0.0, none\n')

    def _filter_output(self, cli_table):
        """
        textfsm return list of list, covert it into more consumable format
    
        :param cli_table: CLiTable object from textfsm
        :return: dict of key, fields and its values, list of dict when key is None
        """
        self._set_key(cli_table)
    
        fields = self.VIEW.FIELDS if self.VIEW is not None else {}
        reverse_fields = {val: key for key, val in fields.items()}
        if self.KEY is None:
            cli_table_size = cli_table.size
            if cli_table_size > 1:
                raise KeyError(
                    "Key is Mandatory for parsed o/p of %s " "length" % cli_table_size
                )
            elif cli_table_size == 1:
                temp_dict = self._parse_row(cli_table[1], cli_table, reverse_fields)
                logger.debug("For Null Key, data returned: {}".format(temp_dict))
                return temp_dict
        output = {}
        for row in cli_table:
            temp_dict = self._parse_row(row, cli_table, reverse_fields)
            logger.debug("data at index {} is {}".format(row.row, temp_dict))
            if isinstance(self.KEY, list):
                key_list = []
                for key in self.KEY:
                    if key not in fields:
                        key_list.append(temp_dict.pop(key))
                    else:
>                       key_list.append(temp_dict[key])
E                       KeyError: 'mac'

/home/robot/.local/lib/python3.9/site-packages/jnpr/junos/factory/cmdtable.py:407: KeyError
========================================================================================= warnings summary =========================================================================================
test_console.py:43
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:43: DeprecationWarning: invalid escape sequence \s
    (1, re.search("(?P<login>ogin:\s*$)", "login: "), six.b("\r\r\n ogin:")),

test_console.py:46
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:46: DeprecationWarning: invalid escape sequence \s
    re.search("(?P<passwd>assword:\s*$)", "password: "),

test_console.py:51
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:51: DeprecationWarning: invalid escape sequence \s
    re.search("(?P<shell>%|#\s*$)", "junos % "),

test_console.py:90
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:90: DeprecationWarning: invalid escape sequence \s
    (1, re.search("(?P<login>ogin:\s*$)", "login: "), six.b("\r\r\n ogin:")),

test_console.py:93
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:93: DeprecationWarning: invalid escape sequence \s
    re.search("(?P<passwd>assword:\s*$)", "password: "),

test_console.py:113
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:113: DeprecationWarning: invalid escape sequence \s
    (1, re.search("(?P<login>ogin:\s*$)", "login: "), six.b("\r\r\n ogin:")),

test_console.py:116
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:116: DeprecationWarning: invalid escape sequence \s
    re.search("(?P<passwd>assword:\s*$)", "password: "),

test_console.py:121
  /home/robot/devel/ros_ws/src/py-junos-eznc/tests/unit/test_console.py:121: DeprecationWarning: invalid escape sequence \s
    re.search("(?P<shell>%|#\s*$)", "junos % "),

tests/unit/test_decorators.py::Test_Decorators::test_ignore_warning_list_3snf_warnings
tests/unit/test_decorators.py::Test_Decorators::test_ignore_warning_list_3warn_match
tests/unit/test_decorators.py::Test_Decorators::test_ignore_warning_string_3snf_warnings
tests/unit/test_decorators.py::Test_Decorators::test_ignore_warning_true_3snf_warnings
  /usr/local/lib/python3.9/unittest/case.py:686: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.
    if not expr:

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
===================================================================================== short test summary info ======================================================================================
FAILED factory/test_cmdtable.py::TestFactoryCMDTable::test_textfsm_table_mutli_key - KeyError: 'mac'
=========================================================================== 1 failed, 823 passed, 12 warnings in 13.47s ============================================================================

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants