Public bug reported:

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'>

** Affects: neutron
     Importance: High
     Assignee: Oleg Bondarev (obondarev)
         Status: In Progress


** Tags: unittest

-- 
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:
  In Progress

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