Reviewed:  https://review.openstack.org/333827
Committed: 
https://git.openstack.org/cgit/openstack/neutron/commit/?id=a5d19b41a57141ef51208b8a821bb7d2e0b6c159
Submitter: Jenkins
Branch:    master

commit a5d19b41a57141ef51208b8a821bb7d2e0b6c159
Author: Oleg Bondarev <[email protected]>
Date:   Fri Jun 24 11:42:52 2016 +0300

    Mock threading.Thread to prevent daemon creation by unit tests
    
    tests.unit.agent.ovsdb.native.test_connection.TestOVSNativeConnection
    calls Connection.start() which starts a daemon with a while True loop
    full of mocks. mock._CallList of those mocks start to grow very
    quick and finally eat all available memory.
    
    Closes-Bug: #1595878
    Change-Id: Ie053a2248925ce5bb960207c16c23b261d1d458c


** Changed in: neutron
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1595878

Title:
  Memory leak in unit tests

Status in neutron:
  Fix Released

Bug description:
  tests.unit.agent.ovsdb.native.test_connection.TestOVSNativeConnection
  calls Connection.start() which starts a daemon with a while True loop
  full of mocks. mock._CallList of those mocks start to grow very quick
  and finally eat all available memory.

  mem_top output during unit tests run:

  refs:
  18118 <class 'mock.mock._CallList'> [call(1),
   call().get_nowait(),
   call().get_nowait().do_commit(),
   call().get_nowait().results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952637975312'>),
   call().task_do
  18117 <class 'mock.mock._CallList'> [call.get_nowait(),
   call.get_nowait().do_commit(),
   call.get_nowait().results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952637975312'>),
   call.task_done(),
   call.get_no
  17990 <class 'mock.mock._CallList'> [call(1),
   call().get_nowait(),
   call().get_nowait().do_commit(),
   call().get_nowait().results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952663067600'>),
   call().task_do
  17989 <class 'mock.mock._CallList'> [call.get_nowait(),
   call.get_nowait().do_commit(),
   call.get_nowait().results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952663067600'>),
   call.task_done(),
   call.get_no
  13592 <class 'mock.mock._CallList'> [call(),
   call().fd_wait(<MagicMock name='TransactionQueue().alert_fileno' 
id='139952638377296'>, 1),
   call().timer_wait(<Mock id='139952614993680'>),
   call().block(),
   call().fd_wait(<MagicMock name=
  13591 <class 'mock.mock._CallList'> [call.fd_wait(<MagicMock 
name='TransactionQueue().alert_fileno' id='139952638377296'>, 1),
   call.timer_wait(<Mock id='139952614993680'>),
   call.block(),
   call.fd_wait(<MagicMock name='TransactionQueue
  13591 <class 'mock.mock._CallList'> [call.fd_wait(<MagicMock 
name='TransactionQueue().alert_fileno' id='139952638377296'>, 1),
   call.timer_wait(<Mock id='139952614993680'>),
   call.block(),
   call.fd_wait(<MagicMock name='TransactionQueue
  13588 <class 'mock.mock._CallList'> [call(),
   call().do_commit(),
   call().results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952637975312'>),
   call(),
   call().do_commit(),
   call().results.put(<MagicMock nam
  13496 <class 'mock.mock._CallList'> [call(),
   call().fd_wait(<MagicMock name='TransactionQueue().alert_fileno' 
id='139952689448208'>, 1),
   call().timer_wait(<Mock id='139952687478800'>),
   call().block(),
   call().fd_wait(<MagicMock name=
  13495 <class 'mock.mock._CallList'> [call.fd_wait(<MagicMock 
name='TransactionQueue().alert_fileno' id='139952689448208'>, 1),
   call.timer_wait(<Mock id='139952687478800'>),
   call.block(),
   call.fd_wait(<MagicMock name='TransactionQueue
  13495 <class 'mock.mock._CallList'> [call.fd_wait(<MagicMock 
name='TransactionQueue().alert_fileno' id='139952689448208'>, 1),
   call.timer_wait(<Mock id='139952687478800'>),
   call.block(),
   call.fd_wait(<MagicMock name='TransactionQueue
  13492 <class 'mock.mock._CallList'> [call(),
   call().do_commit(),
   call().results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952663067600'>),
   call(),
   call().do_commit(),
   call().results.put(<MagicMock nam
  11550 <type 'dict'> {'keystoneclient.service_catalog': <module 
'keystoneclient.service_catalog' from 
'/opt/stack/neutron/.tox/py27/local/lib/python2.7/site-packages/keystoneclient/service_catalog.pyc'>,
 'oslo_messaging.r
  9061  <class 'mock.mock._CallList'> [call(<Mock id='139952630613712'>, <Mock 
name='get_schema_helper()' id='139952630616016'>),
   call().wait(<MagicMock name='Poller()' id='139952641693968'>),
   call().run(),
   call().wait(<MagicMock name=
  9060  <class 'mock.mock._CallList'> [call.wait(<MagicMock name='Poller()' 
id='139952641693968'>),
   call.run(),
   call.wait(<MagicMock name='Poller()' id='139952641693968'>),
   call.run(),
   call.wait(<MagicMock name='Poller()' id='13995264
  9060  <class 'mock.mock._CallList'> [call.wait(<MagicMock name='Poller()' 
id='139952641693968'>),
   call.run(),
   call.wait(<MagicMock name='Poller()' id='139952641693968'>),
   call.run(),
   call.wait(<MagicMock name='Poller()' id='13995264
  9059  <class 'mock.mock._CallList'> [call.do_commit(),
   call.results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952637975312'>),
   call.do_commit(),
   call.results.put(<MagicMock name='TransactionQueue().get_
  9059  <class 'mock.mock._CallList'> [call.do_commit(),
   call.results.put(<MagicMock 
name='TransactionQueue().get_nowait().do_commit()' id='139952637975312'>),
   call.do_commit(),
   call.results.put(<MagicMock name='TransactionQueue().get_
  9059  <class 'mock.mock._CallList'> [call.get_nowait(),
   call.task_done(),
   call.get_nowait(),
   call.task_done(),
   call.get_nowait(),
   call.task_done(),
   call.get_nowait(),
   call.task_done(),
   call.get_nowait(),
   call.task_done(),
   call
  8997  <class 'mock.mock._CallList'> [call(<Mock id='139952686333712'>, <Mock 
name='get_schema_helper()' id='139952686333840'>),
   call().wait(<MagicMock name='Poller()' id='139952689107984'>),
   call().run(),
   call().wait(<MagicMock name=

  types:
  460418         <class 'mock.mock._Call'>
  79091  <type 'tuple'>
  47269  <type 'function'>
  45542  <type 'dict'>
  30758  <type 'list'>
  14696  <type 'weakref'>
  8601   <type 'set'>
  6579   <type 'cell'>
  5639   <type 'type'>
  4940   <class 'mock.mock.MagicProxy'>
  3858   <type 'getset_descriptor'>
  3291   <class 'unittest.suite.TestSuite'>
  3275   <type 'itertools.count'>
  3267   <class 'unittest2.case._TypeEqualityDict'>
  2439   <type 'module'>
  2304   <class '_weakrefset.WeakSet'>
  2222   <type 'instancemethod'>
  2219   <type 'builtin_function_or_method'>
  1869   <type 'property'>
  1424   <type 'wrapper_descriptor'>

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to