On Wed, Mar 13, 2024 at 03:57:06PM +0100, Lucas Nussbaum wrote:
> > =================================== FAILURES 
> > ===================================
> > ___________________ TestUtils.test_init_once_and_debug_mode 
> > ____________________
> > 
> > self = <libcloud.test.test_init.TestUtils 
> > testMethod=test_init_once_and_debug_mode>
> > 
> >     def test_init_once_and_debug_mode(self):
> >         if have_paramiko:
> >             paramiko_logger = logging.getLogger('paramiko')
> >             paramiko_logger.setLevel(logging.INFO)
> >     
> >         # Debug mode is disabled
> >         _init_once()
> >     
> > >       self.assertIsNone(LoggingConnection.log)
> > E       AssertionError: <codecs.StreamReaderWriter object at 
> > 0x7f79cb14b090> is not None
> > 
> > libcloud/test/test_init.py:50: AssertionError

This seems to be an issue with the upstream test suite and is caused by
_init_once() having already been called earlier in the test execution process.
If we run just the failing test on its own, it is successful, but if we run
tests in libcloud/test/compute/test_ssh_client.py first, then it fails because
its setup method calls _init_once().  See below for logs indicating this
behavior.  I'm not sure of the best way to avoid this.  Can we somehow
undo the effect of _init_once()?  Or force these tests to run in a
separate process?  Someone who knows pytest better than me might have
ideas...

Note that this issue is still present in the libcloud 3.8.0 currently in
git.

Successful standalone test execution:

builder@b6dfde9f3b55:/src/libcloud/.pybuild/cpython3_3.11_libcloud/build$ 
python3 -m pytest libcloud/test/test_init.py -v
==================================================== test session starts 
====================================================
platform linux -- Python 3.11.9, pytest-8.1.2, pluggy-1.5.0 -- /usr/bin/python3
cachedir: .pytest_cache
benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False 
min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 
warmup=False warmup_iterations=100000)
rootdir: /src/libcloud/.pybuild/cpython3_3.11_libcloud/build
configfile: pyproject.toml
plugins: xdist-3.5.0, benchmark-4.0.0, timeout-2.3.1, requests-mock-1.11.0
collected 5 items                                                               
                                            

libcloud/test/test_init.py::TestUtils::test_factory PASSED                      
                                      [ 20%]
libcloud/test/test_init.py::TestUtils::test_init_once_and_debug_mode PASSED     
                                      [ 40%]
libcloud/test/test_init.py::TestUtils::test_init_once_correct_chardet_version 
PASSED                                  [ 60%]
libcloud/test/test_init.py::TestUtils::test_init_once_detects_bad_yum_install_requests
 PASSED                         [ 80%]
libcloud/test/test_init.py::TestUtils::test_raises_error PASSED                 
                                      [100%]

=================================================== slowest 10 durations 
====================================================
0.01s call     libcloud/test/test_init.py::TestUtils::test_factory

(9 durations < 0.005s hidden.  Use -vv to show these durations.)
===================================================== 5 passed in 0.11s 
=====================================================

Failing execution following execution of a test from
libcloud/test/compute/test_ssh_client.py:

libcloud/test/compute/test_ssh_client.py::ParamikoSSHClientTests::test_key_material_valid_pem_keys_invalid_header_auto_converbuilder@b6dfde9f3b55:/src/libcloud/.pybuild/cpython3_3.11_libcloud/build$
 python3 -m pytest 
libcloud/test/compute/test_ssh_client.py::ParamikoSSHClientTests::test_password_protected_key_valid_password_provided
 libcloud/test/test_init.py -v
==================================================== test session starts 
====================================================
platform linux -- Python 3.11.9, pytest-8.1.2, pluggy-1.5.0 -- /usr/bin/python3
cachedir: .pytest_cache
benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False 
min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 
warmup=False warmup_iterations=100000)
rootdir: /src/libcloud/.pybuild/cpython3_3.11_libcloud/build
configfile: pyproject.toml
plugins: xdist-3.5.0, benchmark-4.0.0, timeout-2.3.1, requests-mock-1.11.0
collected 6 items                                                               
                                            

libcloud/test/compute/test_ssh_client.py::ParamikoSSHClientTests::test_password_protected_key_valid_password_provided
 PASSED [ 16%]
libcloud/test/test_init.py::TestUtils::test_factory PASSED                      
                                      [ 33%]
libcloud/test/test_init.py::TestUtils::test_init_once_and_debug_mode FAILED     
                                      [ 50%]
libcloud/test/test_init.py::TestUtils::test_init_once_correct_chardet_version 
PASSED                                  [ 66%]
libcloud/test/test_init.py::TestUtils::test_init_once_detects_bad_yum_install_requests
 PASSED                         [ 83%]
libcloud/test/test_init.py::TestUtils::test_raises_error PASSED                 
                                      [100%]

========================================================= FAILURES 
==========================================================
__________________________________________ 
TestUtils.test_init_once_and_debug_mode 
__________________________________________

self = <libcloud.test.test_init.TestUtils 
testMethod=test_init_once_and_debug_mode>

    def test_init_once_and_debug_mode(self):
        if have_paramiko:
            paramiko_logger = logging.getLogger("paramiko")
            paramiko_logger.setLevel(logging.INFO)
    
        # Debug mode is disabled
        _init_once()
    
>       self.assertIsNone(LoggingConnection.log)
E       AssertionError: <codecs.StreamReaderWriter object at 0x7f12de4a3410> is 
not None

libcloud/test/test_init.py:49: AssertionError
===================================================== warnings summary 
======================================================
libcloud/test/compute/test_ssh_client.py::ParamikoSSHClientTests::test_password_protected_key_valid_password_provided
  
/src/libcloud/.pybuild/cpython3_3.11_libcloud/build/libcloud/compute/ssh.py:147:
 DeprecationWarning: You are using deprecated "key" argument which has been 
replaced with "key_files" argument
    warnings.warn(message, DeprecationWarning)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=================================================== slowest 10 durations 
====================================================
0.41s call     
libcloud/test/compute/test_ssh_client.py::ParamikoSSHClientTests::test_password_protected_key_valid_password_provided

(9 durations < 0.005s hidden.  Use -vv to show these durations.)
================================================== short test summary info 
==================================================
FAILED libcloud/test/test_init.py::TestUtils::test_init_once_and_debug_mode - 
AssertionError: <codecs.StreamReaderWriter object at 0x7f12de4a3410> is not None
========================================== 1 failed, 5 passed, 1 warning in 
0.56s ===========================================

Reply via email to