Selaa lähdekoodia

update against trunk and add pypy to tox.ini

Chris McDonough 10 vuotta sitten
vanhempi
commit
5dc80ac972
3 muutettua tiedostoa jossa 28 lisäystä ja 2 poistoa
  1. 5 1
      .travis.yml
  2. 22 0
      supervisor/tests/test_socket_manager.py
  3. 1 1
      tox.ini

+ 5 - 1
.travis.yml

@@ -4,10 +4,14 @@ env:
     - TOXENV=cover3
     - TOXENV=cover3
     - TOXENV=py26
     - TOXENV=py26
     - TOXENV=py27
     - TOXENV=py27
-    # - TOXENV=pypy
+    - TOXENV=pypy
     - TOXENV=py32
     - TOXENV=py32
     - TOXENV=py33
     - TOXENV=py33
     - TOXENV=py34
     - TOXENV=py34
+matrix:
+  allow_failures:
+    - env: TOXENV=pypy
+  fast_finish: true
 install:
 install:
     - travis_retry pip install tox==1.6.1
     - travis_retry pip install tox==1.6.1
 script:
 script:

+ 22 - 0
supervisor/tests/test_socket_manager.py

@@ -1,11 +1,18 @@
 """Test suite for supervisor.socket_manager"""
 """Test suite for supervisor.socket_manager"""
 
 
+import gc
 import sys
 import sys
 import os
 import os
 import unittest
 import unittest
 import supervisor.medusa.text_socket as socket
 import supervisor.medusa.text_socket as socket
 import tempfile
 import tempfile
 
 
+try:
+    import __pypy__
+    PYPY = True
+except ImportError:
+    PYPY = False
+
 from supervisor.tests.base import DummySocketConfig
 from supervisor.tests.base import DummySocketConfig
 from supervisor.tests.base import DummyLogger
 from supervisor.tests.base import DummyLogger
 from supervisor.datatypes import UnixStreamSocketConfig
 from supervisor.datatypes import UnixStreamSocketConfig
@@ -45,6 +52,7 @@ class ProxyTest(unittest.TestCase):
         proxy = self._makeOne(TestObject(), on_delete=self.setOnDeleteCalled)
         proxy = self._makeOne(TestObject(), on_delete=self.setOnDeleteCalled)
         self.assertEqual(5, proxy.getValue())
         self.assertEqual(5, proxy.getValue())
         proxy = None
         proxy = None
+        gc_collect()
         self.assertTrue(self.on_deleteCalled)
         self.assertTrue(self.on_deleteCalled)
 
 
 class ReferenceCounterTest(unittest.TestCase):
 class ReferenceCounterTest(unittest.TestCase):
@@ -86,6 +94,10 @@ class ReferenceCounterTest(unittest.TestCase):
         self.assertRaises(Exception, ctr.decrement)
         self.assertRaises(Exception, ctr.decrement)
 
 
 class SocketManagerTest(unittest.TestCase):
 class SocketManagerTest(unittest.TestCase):
+
+    def tearDown(self):
+        gc_collect()
+
     def _getTargetClass(self):
     def _getTargetClass(self):
         from supervisor.socket_manager import SocketManager
         from supervisor.socket_manager import SocketManager
         return SocketManager
         return SocketManager
@@ -149,10 +161,12 @@ class SocketManagerTest(unittest.TestCase):
         self.assertTrue(sock_manager.is_prepared())
         self.assertTrue(sock_manager.is_prepared())
         self.assertFalse(sock_manager.socket.close_called)
         self.assertFalse(sock_manager.socket.close_called)
         sock = None
         sock = None
+        gc_collect()
         # Socket not actually closed yet b/c ref ct is 1
         # Socket not actually closed yet b/c ref ct is 1
         self.assertTrue(sock_manager.is_prepared())
         self.assertTrue(sock_manager.is_prepared())
         self.assertFalse(sock_manager.socket.close_called)
         self.assertFalse(sock_manager.socket.close_called)
         sock2 = None
         sock2 = None
+        gc_collect()
         # Socket closed
         # Socket closed
         self.assertFalse(sock_manager.is_prepared())
         self.assertFalse(sock_manager.is_prepared())
         self.assertTrue(sock_manager.socket.close_called)
         self.assertTrue(sock_manager.socket.close_called)
@@ -165,6 +179,7 @@ class SocketManagerTest(unittest.TestCase):
         self.assertNotEqual(sock_id, sock3_id)
         self.assertNotEqual(sock_id, sock3_id)
         # Drop ref ct to zero
         # Drop ref ct to zero
         del sock3
         del sock3
+        gc_collect()
         # Now assert that socket is closed
         # Now assert that socket is closed
         self.assertFalse(sock_manager.is_prepared())
         self.assertFalse(sock_manager.is_prepared())
         self.assertTrue(sock_manager.socket.close_called)
         self.assertTrue(sock_manager.socket.close_called)
@@ -179,6 +194,7 @@ class SocketManagerTest(unittest.TestCase):
         self.assertEqual('Creating socket %s' % repr(conf), logger.data[0])
         self.assertEqual('Creating socket %s' % repr(conf), logger.data[0])
         # socket close
         # socket close
         del sock
         del sock
+        gc_collect()
         self.assertEqual(len(logger.data), 2)
         self.assertEqual(len(logger.data), 2)
         self.assertEqual('Closing socket %s' % repr(conf), logger.data[1])
         self.assertEqual('Closing socket %s' % repr(conf), logger.data[1])
 
 
@@ -215,6 +231,12 @@ class SocketManagerTest(unittest.TestCase):
         except Exception as e:
         except Exception as e:
             self.assertEqual(e.args[0], 'Socket has not been prepared')
             self.assertEqual(e.args[0], 'Socket has not been prepared')
 
 
+def gc_collect():
+    if PYPY:
+        gc.collect()
+        gc.collect()
+        gc.collect()
+
 def test_suite():
 def test_suite():
     return unittest.findTestCases(sys.modules[__name__])
     return unittest.findTestCases(sys.modules[__name__])
 
 

+ 1 - 1
tox.ini

@@ -1,6 +1,6 @@
 [tox]
 [tox]
 envlist =
 envlist =
-    cover,cover3,py26,py27,py32,py33,py34
+    cover,cover3,py26,py27,py32,py33,py34,pypy
 
 
 [testenv]
 [testenv]
 commands =
 commands =