Public bug reported:

Seen in a proposed patch to update upper-constraints in
openstack/requirements [1]:


nova.tests.unit.console.test_websocketproxy.NovaProxyRequestHandlerTestCase.test_tcp_rst_no_compute_rpcapitesttools.testresult.real._StringException:
 pythonlogging:'': {{{
2020-07-15 21:09:49,927 INFO [nova.console.websocketproxy] WebSocket server 
settings:
2020-07-15 21:09:49,928 INFO [nova.console.websocketproxy]   - Listen on :None
2020-07-15 21:09:49,928 INFO [nova.console.websocketproxy]   - SSL/TLS support
2020-07-15 21:09:49,932 INFO [nova.console.websocketproxy] handler exception: 
Expected int or long, got <class 'mock.mock.MagicMock'>
}}}

Traceback (most recent call last):
  File 
"/home/zuul/src/opendev.org/openstack/nova/nova/tests/unit/console/test_websocketproxy.py",
 line 627, in test_tcp_rst_no_compute_rpcapi
    self.assertIsNone(self.wh._compute_rpcapi)
  File 
"/home/zuul/src/opendev.org/openstack/nova/.tox/py36/lib/python3.6/site-packages/testtools/testcase.py",
 line 430, in assertIsNone
    self.assertThat(observed, matcher, message)
  File 
"/home/zuul/src/opendev.org/openstack/nova/.tox/py36/lib/python3.6/site-packages/testtools/testcase.py",
 line 502, in assertThat
    raise mismatch_error
testtools.matchers._impl.MismatchError: <nova.compute.rpcapi.ComputeAPI object 
at 0x7ff4113810f0> is not None


I did some print()ing locally and found that what's happening here is that the 
mock library's own process for create_autospec is calling the 
NovaProxyRequestHandler class's compute_rpcapi @property directly and causing 
us to create the nova.compute.rpcapi.ComputeAPI object even though none of the 
nova code is touching it.

This bug has actually been brought up before as an issue in the mock
library repo [2] and is likely a bug in mock.

The mock library is minimally maintained AFAIK and the community has
desired to move away from it. Based on this, I think instead of working
around the bug in nova or potentially blacklisting mock==4.0.2 (since
nova is the only project failing with its use at this point), it might
best to fix the issue by using unittest.mock from the python standard
library instead, in test_websocketproxy.py.

[1] https://review.opendev.org/741091
[2] https://github.com/testing-cabal/mock/issues/487

** Affects: nova
     Importance: Low
     Assignee: melanie witt (melwitt)
         Status: New


** Tags: testing

** Summary changed:

- 
nova.tests.unit.console.test_websocketproxy.NovaProxyRequestHandlerTestCase.test_tcp_rst_no_compute_rpcapi
 fails with mock==4.0.2
+ nova.tests.unit.console.test_websocketproxy. 
NovaProxyRequestHandlerTestCase.test_tcp_rst_no_compute_rpcapi fails with 
mock==4.0.2

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1887735

Title:
  nova.tests.unit.console.test_websocketproxy.
  NovaProxyRequestHandlerTestCase.test_tcp_rst_no_compute_rpcapi fails
  with mock==4.0.2

Status in OpenStack Compute (nova):
  New

Bug description:
  Seen in a proposed patch to update upper-constraints in
  openstack/requirements [1]:

  
  
nova.tests.unit.console.test_websocketproxy.NovaProxyRequestHandlerTestCase.test_tcp_rst_no_compute_rpcapitesttools.testresult.real._StringException:
 pythonlogging:'': {{{
  2020-07-15 21:09:49,927 INFO [nova.console.websocketproxy] WebSocket server 
settings:
  2020-07-15 21:09:49,928 INFO [nova.console.websocketproxy]   - Listen on :None
  2020-07-15 21:09:49,928 INFO [nova.console.websocketproxy]   - SSL/TLS support
  2020-07-15 21:09:49,932 INFO [nova.console.websocketproxy] handler exception: 
Expected int or long, got <class 'mock.mock.MagicMock'>
  }}}

  Traceback (most recent call last):
    File 
"/home/zuul/src/opendev.org/openstack/nova/nova/tests/unit/console/test_websocketproxy.py",
 line 627, in test_tcp_rst_no_compute_rpcapi
      self.assertIsNone(self.wh._compute_rpcapi)
    File 
"/home/zuul/src/opendev.org/openstack/nova/.tox/py36/lib/python3.6/site-packages/testtools/testcase.py",
 line 430, in assertIsNone
      self.assertThat(observed, matcher, message)
    File 
"/home/zuul/src/opendev.org/openstack/nova/.tox/py36/lib/python3.6/site-packages/testtools/testcase.py",
 line 502, in assertThat
      raise mismatch_error
  testtools.matchers._impl.MismatchError: <nova.compute.rpcapi.ComputeAPI 
object at 0x7ff4113810f0> is not None

  
  I did some print()ing locally and found that what's happening here is that 
the mock library's own process for create_autospec is calling the 
NovaProxyRequestHandler class's compute_rpcapi @property directly and causing 
us to create the nova.compute.rpcapi.ComputeAPI object even though none of the 
nova code is touching it.

  This bug has actually been brought up before as an issue in the mock
  library repo [2] and is likely a bug in mock.

  The mock library is minimally maintained AFAIK and the community has
  desired to move away from it. Based on this, I think instead of
  working around the bug in nova or potentially blacklisting mock==4.0.2
  (since nova is the only project failing with its use at this point),
  it might best to fix the issue by using unittest.mock from the python
  standard library instead, in test_websocketproxy.py.

  [1] https://review.opendev.org/741091
  [2] https://github.com/testing-cabal/mock/issues/487

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1887735/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to