Mercurial > cpython-lru_cache-weakref
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 |
| 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() |
