Author: Matti Picus <matti.pi...@gmail.com>
Branch: py3.6
Changeset: r98239:aa3b8c5bd232
Date: 2019-12-06 16:32 +0200
http://bitbucket.org/pypy/pypy/changeset/aa3b8c5bd232/

Log:    merge default into branch

diff --git a/pypy/module/thread/test/test_thread.py 
b/pypy/module/thread/test/test_thread.py
--- a/pypy/module/thread/test/test_thread.py
+++ b/pypy/module/thread/test/test_thread.py
@@ -3,36 +3,6 @@
 
 class AppTestThread(GenericTestThread):
 
-    def setup_class(cls):
-        GenericTestThread.setup_class.im_func(cls)
-        # if we cannot start more than, say, 1000 threads on this OS, then
-        # we can check that we get the proper error at app-level
-        space = cls.space
-        lock = thread.allocate_lock()
-        lock.acquire()
-        def f():
-            lock.acquire()
-            lock.release()
-        start = thread._count()
-        try:
-            try:
-                for i in range(1000):
-                    thread.start_new_thread(f, ())
-            finally:
-                lock.release()
-        except (thread.error, MemoryError):
-            cls.w_can_start_many_threads = space.wrap(False)
-        else:
-            cls.w_can_start_many_threads = space.wrap(True)
-        # wait a bit to allow all threads to finish now
-        remaining = thread._count()
-        retries = 0
-        while remaining > start:
-            retries += 1
-            if retries == 200:
-                raise Exception("the test's threads don't stop!")
-            time.sleep(0.2)
-            remaining = thread._count()
 
     def test_thread_error(self):
         import _thread
@@ -193,35 +163,6 @@
             assert done    # see stderr for failures in threads
         assert sorted(lst) == list(range(120))
 
-    def test_many_threads(self):
-        import _thread, time, sys
-        if self.can_start_many_threads or sys.platform == 'win32':
-            skip("this OS supports too many threads to check (> 1000)")
-        lock = _thread.allocate_lock()
-        lock.acquire()
-        count = [0]
-        def f():
-            count[0] += 1
-            lock.acquire()
-            lock.release()
-            count[0] -= 1
-        try:
-            try:
-                for i in range(1000):
-                    _thread.start_new_thread(f, ())
-            finally:
-                lock.release()
-                # wait a bit to allow most threads to finish now
-                while count[0] > 10:
-                    print(count[0])     # <- releases the GIL
-                print("ok.")
-        except (_thread.error, MemoryError):
-            pass
-        else:
-            raise Exception("could unexpectedly start 1000 threads")
-        # safety: check that we can start a new thread here
-        _thread.start_new_thread(lambda: None, ())
-
     def test_stack_size(self):
         import _thread
         _thread.stack_size(0)
@@ -260,3 +201,74 @@
             waiting = []
             _thread.start_new_thread(f, ())
             raises(KeyboardInterrupt, busy_wait)
+
+@pytest.mark.skip("too slow")
+class _AppTestThread(GenericTestThread):
+    '''
+    This test is very slow, do not run it by default.
+    '''
+    def setup_class(cls):
+        GenericTestThread.setup_class.im_func(cls)
+        # if we cannot start more than, say, 1000 threads on this OS, then
+        # we can check that we get the proper error at app-level
+        space = cls.space
+        lock = thread.allocate_lock()
+        lock.acquire()
+        def f():
+            lock.acquire()
+            lock.release()
+        start = thread._count()
+        try:
+            try:
+                for i in range(1000):
+                    thread.start_new_thread(f, ())
+            finally:
+                lock.release()
+        except (thread.error, MemoryError):
+            cls.w_can_start_many_threads = space.wrap(False)
+        else:
+            cls.w_can_start_many_threads = space.wrap(True)
+        # wait a bit to allow all threads to finish now
+        remaining = thread._count()
+        retries = 0
+        while remaining > start:
+            retries += 1
+            if retries == 200:
+                raise Exception("the test's threads don't stop!")
+            time.sleep(0.2)
+            remaining = thread._count()
+
+    def test_many_threads(self):
+        import time, sys
+        if sys.version_info[0] < 3:
+            import thread as _thread
+        else:
+            import _thread
+        if self.can_start_many_threads or sys.platform == 'win32':
+            skip("this OS supports too many threads to check (> 1000)")
+        lock = _thread.allocate_lock()
+        lock.acquire()
+        count = [0]
+        def f():
+            count[0] += 1
+            lock.acquire()
+            lock.release()
+            count[0] -= 1
+        try:
+            try:
+                for i in range(1000):
+                    _thread.start_new_thread(f, ())
+            finally:
+                lock.release()
+                # wait a bit to allow most threads to finish now
+                while count[0] > 10:
+                    print(count[0])     # <- releases the GIL
+                print("ok.")
+        except (_thread.error, MemoryError):
+            pass
+        else:
+            raise Exception("could unexpectedly start 1000 threads")
+        # safety: check that we can start a new thread here
+        _thread.start_new_thread(lambda: None, ())
+
+
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to