22 header.flags, |
22 header.flags, |
23 payload)) |
23 payload)) |
24 |
24 |
25 class SingleSendTests(unittest.TestCase): |
25 class SingleSendTests(unittest.TestCase): |
26 """A reactor that can only send once rejects subsequent sends.""" |
26 """A reactor that can only send once rejects subsequent sends.""" |
|
27 |
|
28 if not getattr(unittest.TestCase, 'assertRaisesRegex', False): |
|
29 # Python 3.7 deprecates the regex*p* version, but 2.7 lacks |
|
30 # the regex version. |
|
31 assertRaisesRegex = (# camelcase-required |
|
32 unittest.TestCase.assertRaisesRegexp) |
|
33 |
27 def testbasic(self): |
34 def testbasic(self): |
28 reactor = framing.clientreactor(hasmultiplesend=False, buffersends=True) |
35 reactor = framing.clientreactor(hasmultiplesend=False, buffersends=True) |
29 |
36 |
30 request, action, meta = reactor.callcommand(b'foo', {}) |
37 request, action, meta = reactor.callcommand(b'foo', {}) |
31 self.assertEqual(request.state, b'pending') |
38 self.assertEqual(request.state, b'pending') |
37 for frame in meta[b'framegen']: |
44 for frame in meta[b'framegen']: |
38 self.assertEqual(request.state, b'sending') |
45 self.assertEqual(request.state, b'sending') |
39 |
46 |
40 self.assertEqual(request.state, b'sent') |
47 self.assertEqual(request.state, b'sent') |
41 |
48 |
42 with self.assertRaisesRegexp(error.ProgrammingError, |
49 with self.assertRaisesRegex(error.ProgrammingError, |
43 'cannot issue new commands'): |
50 'cannot issue new commands'): |
44 reactor.callcommand(b'foo', {}) |
51 reactor.callcommand(b'foo', {}) |
45 |
52 |
46 with self.assertRaisesRegexp(error.ProgrammingError, |
53 with self.assertRaisesRegex(error.ProgrammingError, |
47 'cannot issue new commands'): |
54 'cannot issue new commands'): |
48 reactor.callcommand(b'foo', {}) |
55 reactor.callcommand(b'foo', {}) |
49 |
56 |
50 class NoBufferTests(unittest.TestCase): |
57 class NoBufferTests(unittest.TestCase): |
51 """A reactor without send buffering sends requests immediately.""" |
58 """A reactor without send buffering sends requests immediately.""" |
75 self.assertEqual(request.state, b'sending') |
82 self.assertEqual(request.state, b'sending') |
76 |
83 |
77 self.assertEqual(request.state, b'sent') |
84 self.assertEqual(request.state, b'sent') |
78 |
85 |
79 class BadFrameRecvTests(unittest.TestCase): |
86 class BadFrameRecvTests(unittest.TestCase): |
|
87 if not getattr(unittest.TestCase, 'assertRaisesRegex', False): |
|
88 # Python 3.7 deprecates the regex*p* version, but 2.7 lacks |
|
89 # the regex version. |
|
90 assertRaisesRegex = (# camelcase-required |
|
91 unittest.TestCase.assertRaisesRegexp) |
|
92 |
80 def testoddstream(self): |
93 def testoddstream(self): |
81 reactor = framing.clientreactor() |
94 reactor = framing.clientreactor() |
82 |
95 |
83 action, meta = sendframe(reactor, ffs(b'1 1 0 1 0 foo')) |
96 action, meta = sendframe(reactor, ffs(b'1 1 0 1 0 foo')) |
84 self.assertEqual(action, b'error') |
97 self.assertEqual(action, b'error') |
99 |
112 |
100 request, action, meta = reactor.callcommand(b'foo', {}) |
113 request, action, meta = reactor.callcommand(b'foo', {}) |
101 for frame in meta[b'framegen']: |
114 for frame in meta[b'framegen']: |
102 pass |
115 pass |
103 |
116 |
104 with self.assertRaisesRegexp(error.ProgrammingError, |
117 with self.assertRaisesRegex(error.ProgrammingError, |
105 'unhandled frame type'): |
118 'unhandled frame type'): |
106 sendframe(reactor, ffs(b'1 0 stream-begin text-output 0 foo')) |
119 sendframe(reactor, ffs(b'1 0 stream-begin text-output 0 foo')) |
107 |
120 |
108 class StreamTests(unittest.TestCase): |
121 class StreamTests(unittest.TestCase): |
109 def testmultipleresponseframes(self): |
122 def testmultipleresponseframes(self): |