annotate Lib/test/test_kqueue.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents ef889c3d5dc6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
1 """
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
2 Tests for kqueue wrapper.
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
3 """
71074
fdb98a7ef9be Issue #12400: Add missing import (os) to test_kqueue
Victor Stinner <victor.stinner@haypocalc.com>
parents: 71066
diff changeset
4 import errno
fdb98a7ef9be Issue #12400: Add missing import (os) to test_kqueue
Victor Stinner <victor.stinner@haypocalc.com>
parents: 71066
diff changeset
5 import os
fdb98a7ef9be Issue #12400: Add missing import (os) to test_kqueue
Victor Stinner <victor.stinner@haypocalc.com>
parents: 71066
diff changeset
6 import select
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
7 import socket
71074
fdb98a7ef9be Issue #12400: Add missing import (os) to test_kqueue
Victor Stinner <victor.stinner@haypocalc.com>
parents: 71066
diff changeset
8 import sys
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
9 import time
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
10 import unittest
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
11
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45996
diff changeset
12 from test import support
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
13 if not hasattr(select, "kqueue"):
52389
d4e7470bd660 Merged revisions 70554,70588-70589,70598,70605,70611-70621,70623-70624,70626-70627 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 51122
diff changeset
14 raise unittest.SkipTest("test works only on BSD")
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
15
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
16 class TestKQueue(unittest.TestCase):
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
17 def test_create_queue(self):
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
18 kq = select.kqueue()
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52389
diff changeset
19 self.assertTrue(kq.fileno() > 0, kq.fileno())
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52389
diff changeset
20 self.assertTrue(not kq.closed)
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
21 kq.close()
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52389
diff changeset
22 self.assertTrue(kq.closed)
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
23 self.assertRaises(ValueError, kq.fileno)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
24
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
25 def test_create_event(self):
51122
adbd77a90bde Merged revisions 69025 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 51016
diff changeset
26 from operator import lt, le, gt, ge
71066
74c6afbb524a Issue #12400: don't use sys.stderr in test_kqueue because it may be replaced by
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68257
diff changeset
27
74c6afbb524a Issue #12400: don't use sys.stderr in test_kqueue because it may be replaced by
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68257
diff changeset
28 fd = os.open(os.devnull, os.O_WRONLY)
74c6afbb524a Issue #12400: don't use sys.stderr in test_kqueue because it may be replaced by
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68257
diff changeset
29 self.addCleanup(os.close, fd)
74c6afbb524a Issue #12400: don't use sys.stderr in test_kqueue because it may be replaced by
Victor Stinner <victor.stinner@haypocalc.com>
parents: 68257
diff changeset
30
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
31 ev = select.kevent(fd)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
32 other = select.kevent(1000)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
33 self.assertEqual(ev.ident, fd)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
34 self.assertEqual(ev.filter, select.KQ_FILTER_READ)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
35 self.assertEqual(ev.flags, select.KQ_EV_ADD)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
36 self.assertEqual(ev.fflags, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
37 self.assertEqual(ev.data, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
38 self.assertEqual(ev.udata, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
39 self.assertEqual(ev, ev)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
40 self.assertNotEqual(ev, other)
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52389
diff changeset
41 self.assertTrue(ev < other)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 52389
diff changeset
42 self.assertTrue(other >= ev)
51122
adbd77a90bde Merged revisions 69025 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 51016
diff changeset
43 for op in lt, le, gt, ge:
adbd77a90bde Merged revisions 69025 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 51016
diff changeset
44 self.assertRaises(TypeError, op, ev, None)
adbd77a90bde Merged revisions 69025 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 51016
diff changeset
45 self.assertRaises(TypeError, op, ev, 1)
adbd77a90bde Merged revisions 69025 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 51016
diff changeset
46 self.assertRaises(TypeError, op, ev, "ev")
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
47
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
48 ev = select.kevent(fd, select.KQ_FILTER_WRITE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
49 self.assertEqual(ev.ident, fd)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
50 self.assertEqual(ev.filter, select.KQ_FILTER_WRITE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
51 self.assertEqual(ev.flags, select.KQ_EV_ADD)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
52 self.assertEqual(ev.fflags, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
53 self.assertEqual(ev.data, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
54 self.assertEqual(ev.udata, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
55 self.assertEqual(ev, ev)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
56 self.assertNotEqual(ev, other)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
57
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
58 ev = select.kevent(fd, select.KQ_FILTER_WRITE, select.KQ_EV_ONESHOT)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
59 self.assertEqual(ev.ident, fd)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
60 self.assertEqual(ev.filter, select.KQ_FILTER_WRITE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
61 self.assertEqual(ev.flags, select.KQ_EV_ONESHOT)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
62 self.assertEqual(ev.fflags, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
63 self.assertEqual(ev.data, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
64 self.assertEqual(ev.udata, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
65 self.assertEqual(ev, ev)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
66 self.assertNotEqual(ev, other)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
67
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
68 ev = select.kevent(1, 2, 3, 4, 5, 6)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
69 self.assertEqual(ev.ident, 1)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
70 self.assertEqual(ev.filter, 2)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
71 self.assertEqual(ev.flags, 3)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
72 self.assertEqual(ev.fflags, 4)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
73 self.assertEqual(ev.data, 5)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
74 self.assertEqual(ev.udata, 6)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
75 self.assertEqual(ev, ev)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
76 self.assertNotEqual(ev, other)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
77
84976
78db41e4c6a9 Issue #18325: Fix a test_kqueue failure on OpenBSD: kevent's data and event
Charles-François Natali <cf.natali@gmail.com>
parents: 83041
diff changeset
78 bignum = 0x7fff
78db41e4c6a9 Issue #18325: Fix a test_kqueue failure on OpenBSD: kevent's data and event
Charles-François Natali <cf.natali@gmail.com>
parents: 83041
diff changeset
79 ev = select.kevent(bignum, 1, 2, 3, bignum - 1, bignum)
57113
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
80 self.assertEqual(ev.ident, bignum)
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
81 self.assertEqual(ev.filter, 1)
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
82 self.assertEqual(ev.flags, 2)
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
83 self.assertEqual(ev.fflags, 3)
84976
78db41e4c6a9 Issue #18325: Fix a test_kqueue failure on OpenBSD: kevent's data and event
Charles-François Natali <cf.natali@gmail.com>
parents: 83041
diff changeset
84 self.assertEqual(ev.data, bignum - 1)
57113
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
85 self.assertEqual(ev.udata, bignum)
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
86 self.assertEqual(ev, ev)
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
87 self.assertNotEqual(ev, other)
f89a93a778a8 Merged revisions 76108 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 55618
diff changeset
88
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
89 def test_queue_event(self):
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
90 serverSocket = socket.socket()
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
91 serverSocket.bind(('127.0.0.1', 0))
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
92 serverSocket.listen(1)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
93 client = socket.socket()
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
94 client.setblocking(False)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
95 try:
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
96 client.connect(('127.0.0.1', serverSocket.getsockname()[1]))
80933
50d19c2fac82 Issue #16717: get rid of socket.error, replace with OSError
Andrew Svetlov <andrew.svetlov@gmail.com>
parents: 71074
diff changeset
97 except OSError as e:
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55618
diff changeset
98 self.assertEqual(e.args[0], errno.EINPROGRESS)
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
99 else:
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
100 #raise AssertionError("Connect should have raised EINPROGRESS")
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
101 pass # FreeBSD doesn't raise an exception here
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
102 server, addr = serverSocket.accept()
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
103
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
104 kq = select.kqueue()
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
105 kq2 = select.kqueue.fromfd(kq.fileno())
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
106
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
107 ev = select.kevent(server.fileno(),
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
108 select.KQ_FILTER_WRITE,
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
109 select.KQ_EV_ADD | select.KQ_EV_ENABLE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
110 kq.control([ev], 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
111 ev = select.kevent(server.fileno(),
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
112 select.KQ_FILTER_READ,
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
113 select.KQ_EV_ADD | select.KQ_EV_ENABLE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
114 kq.control([ev], 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
115 ev = select.kevent(client.fileno(),
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
116 select.KQ_FILTER_WRITE,
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
117 select.KQ_EV_ADD | select.KQ_EV_ENABLE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
118 kq2.control([ev], 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
119 ev = select.kevent(client.fileno(),
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
120 select.KQ_FILTER_READ,
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
121 select.KQ_EV_ADD | select.KQ_EV_ENABLE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
122 kq2.control([ev], 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
123
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
124 events = kq.control(None, 4, 1)
83041
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
125 events = set((e.ident, e.filter) for e in events)
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
126 self.assertEqual(events, set([
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
127 (client.fileno(), select.KQ_FILTER_WRITE),
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
128 (server.fileno(), select.KQ_FILTER_WRITE)]))
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
129
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
130 client.send(b"Hello!")
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
131 server.send(b"world!!!")
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
132
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
133 # We may need to call it several times
51016
578dd78fb557 Merged revisions 68900 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47201
diff changeset
134 for i in range(10):
578dd78fb557 Merged revisions 68900 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47201
diff changeset
135 events = kq.control(None, 4, 1)
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
136 if len(events) == 4:
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
137 break
51016
578dd78fb557 Merged revisions 68900 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47201
diff changeset
138 time.sleep(1.0)
578dd78fb557 Merged revisions 68900 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47201
diff changeset
139 else:
578dd78fb557 Merged revisions 68900 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47201
diff changeset
140 self.fail('timeout waiting for event notifications')
578dd78fb557 Merged revisions 68900 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 47201
diff changeset
141
83041
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
142 events = set((e.ident, e.filter) for e in events)
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
143 self.assertEqual(events, set([
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
144 (client.fileno(), select.KQ_FILTER_WRITE),
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
145 (client.fileno(), select.KQ_FILTER_READ),
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
146 (server.fileno(), select.KQ_FILTER_WRITE),
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
147 (server.fileno(), select.KQ_FILTER_READ)]))
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
148
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
149 # Remove completely client, and server read part
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
150 ev = select.kevent(client.fileno(),
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
151 select.KQ_FILTER_WRITE,
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
152 select.KQ_EV_DELETE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
153 kq.control([ev], 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
154 ev = select.kevent(client.fileno(),
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
155 select.KQ_FILTER_READ,
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
156 select.KQ_EV_DELETE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
157 kq.control([ev], 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
158 ev = select.kevent(server.fileno(),
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
159 select.KQ_FILTER_READ,
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
160 select.KQ_EV_DELETE)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
161 kq.control([ev], 0, 0)
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
162
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
163 events = kq.control([], 4, 0.99)
83041
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
164 events = set((e.ident, e.filter) for e in events)
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
165 self.assertEqual(events, set([
96776fc3cbcc Issue #6419: Fix a test_kqueue failure on some BSD flavors.
Charles-Francois Natali <cf.natali@gmail.com>
parents: 71074
diff changeset
166 (server.fileno(), select.KQ_FILTER_WRITE)]))
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
167
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
168 client.close()
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
169 server.close()
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
170 serverSocket.close()
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
171
55618
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
172 def testPair(self):
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
173 kq = select.kqueue()
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
174 a, b = socket.socketpair()
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
175
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
176 a.send(b'foo')
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
177 event1 = select.kevent(a, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
178 event2 = select.kevent(b, select.KQ_FILTER_READ, select.KQ_EV_ADD | select.KQ_EV_ENABLE)
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
179 r = kq.control([event1, event2], 1, 1)
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
180 self.assertTrue(r)
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
181 self.assertFalse(r[0].flags & select.KQ_EV_ERROR)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 55618
diff changeset
182 self.assertEqual(b.recv(r[0].data), b'foo')
55618
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
183
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
184 a.close()
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
185 b.close()
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
186 kq.close()
0148417e1301 Merged revisions 74055 via svnmerge from
Georg Brandl <georg@python.org>
parents: 55593
diff changeset
187
85300
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
188 def test_close(self):
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
189 open_file = open(__file__, "rb")
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
190 self.addCleanup(open_file.close)
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
191 fd = open_file.fileno()
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
192 kqueue = select.kqueue()
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
193
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
194 # test fileno() method and closed attribute
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
195 self.assertIsInstance(kqueue.fileno(), int)
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
196 self.assertFalse(kqueue.closed)
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
197
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
198 # test close()
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
199 kqueue.close()
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
200 self.assertTrue(kqueue.closed)
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
201 self.assertRaises(ValueError, kqueue.fileno)
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
202
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
203 # close() can be called more than once
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
204 kqueue.close()
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
205
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
206 # operations must fail with ValueError("I/O operation on closed ...")
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
207 self.assertRaises(ValueError, kqueue.control, None, 4)
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
208
85420
ef889c3d5dc6 Issue #18571: Implementation of the PEP 446: file descriptors and file handles
Victor Stinner <victor.stinner@gmail.com>
parents: 85300
diff changeset
209 def test_fd_non_inheritable(self):
ef889c3d5dc6 Issue #18571: Implementation of the PEP 446: file descriptors and file handles
Victor Stinner <victor.stinner@gmail.com>
parents: 85300
diff changeset
210 kqueue = select.kqueue()
ef889c3d5dc6 Issue #18571: Implementation of the PEP 446: file descriptors and file handles
Victor Stinner <victor.stinner@gmail.com>
parents: 85300
diff changeset
211 self.addCleanup(kqueue.close)
ef889c3d5dc6 Issue #18571: Implementation of the PEP 446: file descriptors and file handles
Victor Stinner <victor.stinner@gmail.com>
parents: 85300
diff changeset
212 self.assertEqual(os.get_inheritable(kqueue.fileno()), False)
ef889c3d5dc6 Issue #18571: Implementation of the PEP 446: file descriptors and file handles
Victor Stinner <victor.stinner@gmail.com>
parents: 85300
diff changeset
213
85300
ccbe2132392b Close #18794: Add a fileno() method and a closed attribute to select.devpoll
Victor Stinner <victor.stinner@gmail.com>
parents: 84977
diff changeset
214
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
215 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45996
diff changeset
216 support.run_unittest(TestKQueue)
45996
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
217
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
218 if __name__ == "__main__":
376b5cb8a014 Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
219 test_main()