Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: third_party/twisted_8_1/twisted/pair/test/test_ethernet.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
2 # See LICENSE for details.
3
4 #
5 from twisted.trial import unittest
6
7 from twisted.internet import protocol, reactor, error
8 from twisted.python import failure, components
9 from twisted.pair import ethernet, raw
10 from zope.interface import implements
11
12 class MyProtocol:
13 implements(raw.IRawPacketProtocol)
14
15 def __init__(self, expecting):
16 self.expecting = list(expecting)
17
18 def datagramReceived(self, data, **kw):
19 assert self.expecting, 'Got a packet when not expecting anymore.'
20 expect = self.expecting.pop(0)
21 assert expect == (data, kw), \
22 "Expected %r, got %r" % (
23 expect, (data, kw),
24 )
25
26 class EthernetTestCase(unittest.TestCase):
27 def testPacketParsing(self):
28 proto = ethernet.EthernetProtocol()
29 p1 = MyProtocol([
30
31 ('foobar', {
32 'partial': 0,
33 'dest': "123456",
34 'source': "987654",
35 'protocol': 0x0800,
36 }),
37
38 ])
39 proto.addProto(0x0800, p1)
40
41 proto.datagramReceived("123456987654\x08\x00foobar",
42 partial=0)
43
44 assert not p1.expecting, \
45 'Should not expect any more packets, but still want %r' % p1.expe cting
46
47
48 def testMultiplePackets(self):
49 proto = ethernet.EthernetProtocol()
50 p1 = MyProtocol([
51
52 ('foobar', {
53 'partial': 0,
54 'dest': "123456",
55 'source': "987654",
56 'protocol': 0x0800,
57 }),
58
59 ('quux', {
60 'partial': 1,
61 'dest': "012345",
62 'source': "abcdef",
63 'protocol': 0x0800,
64 }),
65
66 ])
67 proto.addProto(0x0800, p1)
68
69 proto.datagramReceived("123456987654\x08\x00foobar",
70 partial=0)
71 proto.datagramReceived("012345abcdef\x08\x00quux",
72 partial=1)
73
74 assert not p1.expecting, \
75 'Should not expect any more packets, but still want %r' % p1.expe cting
76
77
78 def testMultipleSameProtos(self):
79 proto = ethernet.EthernetProtocol()
80 p1 = MyProtocol([
81
82 ('foobar', {
83 'partial': 0,
84 'dest': "123456",
85 'source': "987654",
86 'protocol': 0x0800,
87 }),
88
89 ])
90
91 p2 = MyProtocol([
92
93 ('foobar', {
94 'partial': 0,
95 'dest': "123456",
96 'source': "987654",
97 'protocol': 0x0800,
98 }),
99
100 ])
101
102 proto.addProto(0x0800, p1)
103 proto.addProto(0x0800, p2)
104
105 proto.datagramReceived("123456987654\x08\x00foobar",
106 partial=0)
107
108 assert not p1.expecting, \
109 'Should not expect any more packets, but still want %r' % p1.expe cting
110 assert not p2.expecting, \
111 'Should not expect any more packets, but still want %r' % p2.expe cting
112
113 def testWrongProtoNotSeen(self):
114 proto = ethernet.EthernetProtocol()
115 p1 = MyProtocol([])
116 proto.addProto(0x0801, p1)
117
118 proto.datagramReceived("123456987654\x08\x00foobar",
119 partial=0)
120 proto.datagramReceived("012345abcdef\x08\x00quux",
121 partial=1)
122
123 def testDemuxing(self):
124 proto = ethernet.EthernetProtocol()
125 p1 = MyProtocol([
126
127 ('foobar', {
128 'partial': 0,
129 'dest': "123456",
130 'source': "987654",
131 'protocol': 0x0800,
132 }),
133
134 ('quux', {
135 'partial': 1,
136 'dest': "012345",
137 'source': "abcdef",
138 'protocol': 0x0800,
139 }),
140
141 ])
142 proto.addProto(0x0800, p1)
143
144 p2 = MyProtocol([
145
146 ('quux', {
147 'partial': 1,
148 'dest': "012345",
149 'source': "abcdef",
150 'protocol': 0x0806,
151 }),
152
153 ('foobar', {
154 'partial': 0,
155 'dest': "123456",
156 'source': "987654",
157 'protocol': 0x0806,
158 }),
159
160 ])
161 proto.addProto(0x0806, p2)
162
163 proto.datagramReceived("123456987654\x08\x00foobar",
164 partial=0)
165 proto.datagramReceived("012345abcdef\x08\x06quux",
166 partial=1)
167 proto.datagramReceived("123456987654\x08\x06foobar",
168 partial=0)
169 proto.datagramReceived("012345abcdef\x08\x00quux",
170 partial=1)
171
172 assert not p1.expecting, \
173 'Should not expect any more packets, but still want %r' % p1.expe cting
174 assert not p2.expecting, \
175 'Should not expect any more packets, but still want %r' % p2.expe cting
176
177 def testAddingBadProtos_WrongLevel(self):
178 """Adding a wrong level protocol raises an exception."""
179 e = ethernet.EthernetProtocol()
180 try:
181 e.addProto(42, "silliness")
182 except components.CannotAdapt:
183 pass
184 else:
185 raise AssertionError, 'addProto must raise an exception for bad prot ocols'
186
187
188 def testAddingBadProtos_TooSmall(self):
189 """Adding a protocol with a negative number raises an exception."""
190 e = ethernet.EthernetProtocol()
191 try:
192 e.addProto(-1, MyProtocol([]))
193 except TypeError, e:
194 if e.args == ('Added protocol must be positive or zero',):
195 pass
196 else:
197 raise
198 else:
199 raise AssertionError, 'addProto must raise an exception for bad prot ocols'
200
201
202 def testAddingBadProtos_TooBig(self):
203 """Adding a protocol with a number >=2**16 raises an exception."""
204 e = ethernet.EthernetProtocol()
205 try:
206 e.addProto(2**16, MyProtocol([]))
207 except TypeError, e:
208 if e.args == ('Added protocol must fit in 16 bits',):
209 pass
210 else:
211 raise
212 else:
213 raise AssertionError, 'addProto must raise an exception for bad prot ocols'
214
215 def testAddingBadProtos_TooBig2(self):
216 """Adding a protocol with a number >=2**16 raises an exception."""
217 e = ethernet.EthernetProtocol()
218 try:
219 e.addProto(2**16+1, MyProtocol([]))
220 except TypeError, e:
221 if e.args == ('Added protocol must fit in 16 bits',):
222 pass
223 else:
224 raise
225 else:
226 raise AssertionError, 'addProto must raise an exception for bad prot ocols'
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/pair/test/__init__.py ('k') | third_party/twisted_8_1/twisted/pair/test/test_ip.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698