Changeset 53:fd2b3f70b221 in ralphm-patches
- Timestamp:
- Aug 3, 2011, 9:48:58 AM (11 years ago)
- Branch:
- default
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
disco-addressing.patch
r47 r53 1 1 # HG changeset patch 2 # Parent ec507e96d825c087430df236727e6f6161d8af122 # Parent 038fd78ebd5cdc8d25d00e4bc33a0c263eed277a 3 3 Reimplement _DiscoRequest as generic.Request. 4 4 … … 6 6 Fixes: #73. 7 7 8 diff -r ec507e96d825wokkel/disco.py9 --- a/wokkel/disco.py Fri Mar 04 09:49:28 2011 +010010 +++ b/wokkel/disco.py Mon Mar 07 19:08:18 2011 +010011 @@ -14, 7+14,7 @@8 diff -r 038fd78ebd5c wokkel/disco.py 9 --- a/wokkel/disco.py Wed Aug 03 09:14:08 2011 +0200 10 +++ b/wokkel/disco.py Wed Aug 03 09:26:08 2011 +0200 11 @@ -14,8 +14,7 @@ 12 12 from twisted.words.protocols.jabber import error, jid 13 13 from twisted.words.xish import domish 14 14 15 15 -from wokkel import data_form 16 -from wokkel.compat import IQ 16 17 +from wokkel import data_form, generic 17 from wokkel.compat import IQ18 18 from wokkel.iwokkel import IDisco 19 19 from wokkel.subprotocols import IQHandlerMixin, XMPPHandler 20 @@ -346,26 +346,56 @@ 20 21 @@ -346,26 +345,57 @@ 21 22 22 23 … … 60 61 + def __init__(self, verb=None, nodeIdentifier='', 61 62 + recipient=None, sender=None): 62 + generic.Request.__init__(self, 'get', recipient, sender) 63 + generic.Request.__init__(self, recipient=recipient, sender=sender, 64 + stanzaType='get') 63 65 + self.verb = verb 64 66 + self.nodeIdentifier = nodeIdentifier … … 177 179 return d 178 180 179 diff -r ec507e96d825wokkel/generic.py180 --- a/wokkel/generic.py Fri Mar 04 09:49:28 2011 +0100181 +++ b/wokkel/generic.py Mon Mar 07 19:08:18 2011 +0100181 diff -r 038fd78ebd5c wokkel/generic.py 182 --- a/wokkel/generic.py Wed Aug 03 09:14:08 2011 +0200 183 +++ b/wokkel/generic.py Wed Aug 03 09:26:08 2011 +0200 182 184 @@ -20,7 +20,6 @@ 183 185 except ImportError: … … 205 207 stanzaID = None 206 208 stanzaType = None 207 diff -r ec507e96d825wokkel/test/test_disco.py208 --- a/wokkel/test/test_disco.py Fri Mar 04 09:49:28 2011 +0100209 +++ b/wokkel/test/test_disco.py Mon Mar 07 19:08:18 2011 +0100209 diff -r 038fd78ebd5c wokkel/test/test_disco.py 210 --- a/wokkel/test/test_disco.py Wed Aug 03 09:14:08 2011 +0200 211 +++ b/wokkel/test/test_disco.py Wed Aug 03 09:26:08 2011 +0200 210 212 @@ -477,9 +477,14 @@ 211 213 Set up stub and protocol for testing. -
request-stanza.patch
r47 r53 1 1 # HG changeset patch 2 # Parent cddd993198e15f928c472d299e3351b8802e36082 # Parent 02050b16f4310d9875ae26fbe70ec31415a5d829 3 3 Add base class for IQ get/set request stanzas: Request. 4 4 5 diff -r cddd993198e1 wokkel/generic.py6 --- a/wokkel/generic.py Fri Mar 04 09:48:19 2011 +01007 +++ b/wokkel/generic.py Fri Mar 04 09:49:28 2011 +01008 @@ -236,6 +236, 27@@5 diff -r 02050b16f431 wokkel/generic.py 6 --- a/wokkel/generic.py Wed Aug 03 09:00:34 2011 +0200 7 +++ b/wokkel/generic.py Wed Aug 03 09:14:08 2011 +0200 8 @@ -236,6 +236,34 @@ 9 9 self.exception = error.exceptionFromStanza(element) 10 10 11 11 12 12 +class Request(Stanza): 13 + """ 14 + IQ request stanza. 15 + 16 + This is a base class for IQ get or set stanzas, to be used with 17 + L{wokkel.subprotocols.StreamManager.request}. 18 + """ 19 + 13 20 + stanzaKind = 'iq' 14 21 + stanzaType = 'get' 15 22 + timeout = None 16 23 + 17 + def __init__(self, stanzaType='get', recipient=None, sender=None):24 + def __init__(self, recipient=None, sender=None, stanzaType='get'): 18 25 + Stanza.__init__(self, recipient=recipient, sender=sender) 19 26 + self.stanzaType = stanzaType … … 34 41 protocol = xmlstream.XmlStream 35 42 36 diff -r cddd993198e1 wokkel/test/test_generic.py37 --- a/wokkel/test/test_generic.py Fri Mar 04 09:48:19 2011 +010038 +++ b/wokkel/test/test_generic.py Fri Mar 04 09:49:28 2011 +010043 diff -r 02050b16f431 wokkel/test/test_generic.py 44 --- a/wokkel/test/test_generic.py Wed Aug 03 09:00:34 2011 +0200 45 +++ b/wokkel/test/test_generic.py Wed Aug 03 09:14:08 2011 +0200 39 46 @@ -7,6 +7,7 @@ 40 47 -
request-tracking.patch
r47 r53 1 1 # HG changeset patch 2 # Parent 6 0dcf9e2441bb510f1da17e6bc4401ef7b6db0e92 # Parent 6f36a7f92973d3843a42b4c80791715e694b66a3 3 3 Add iq request (set/get) tracking for StreamManager. 4 4 … … 20 20 from the moment request is sent over the wire. 21 21 22 diff -r 6 0dcf9e2441bwokkel/subprotocols.py23 --- a/wokkel/subprotocols.py Mon Feb 28 21:04:37 2011 +010024 +++ b/wokkel/subprotocols.py Fri Mar 04 09:45:24 2011 +010022 diff -r 6f36a7f92973 wokkel/subprotocols.py 23 --- a/wokkel/subprotocols.py Thu Jul 28 20:14:02 2011 +0200 24 +++ b/wokkel/subprotocols.py Wed Aug 03 09:45:01 2011 +0200 25 25 @@ -156,11 +156,23 @@ 26 26 @type _initialized: C{bool} … … 73 73 for p in self._packetQueue: 74 74 xs.send(p) 75 @@ -268,6 +291,3 4@@75 @@ -268,6 +291,31 @@ 76 76 for e in list(self): 77 77 e.connectionLost(reason) … … 90 90 + Handle iq response by firing associated deferred. 91 91 + """ 92 + if getattr(iq, 'handled', False):93 + return94 +95 92 + try: 96 93 + d = self._iqDeferreds[iq["id"]] … … 108 105 def send(self, obj): 109 106 """ 110 @@ -285,6 +33 6,68 @@107 @@ -285,6 +333,68 @@ 111 108 self._packetQueue.append(obj) 112 109 … … 141 138 + if (request.stanzaKind != 'iq' or 142 139 + request.stanzaType not in ('get', 'set')): 143 + return defer.fail( Exception("Not a request"))140 + return defer.fail(ValueError("Not a request")) 144 141 + 145 142 + element = request.toElement() … … 154 151 + self._iqDeferreds[element['id']] = d 155 152 + 156 + timeout = request.timeout or self.timeout153 + timeout = getattr(request, 'timeout', self.timeout) 157 154 + 158 155 + if timeout is not None: … … 177 174 class IQHandlerMixin(object): 178 175 """ 179 diff -r 6 0dcf9e2441bwokkel/test/test_subprotocols.py180 --- a/wokkel/test/test_subprotocols.py Mon Feb 28 21:04:37 2011 +0100181 +++ b/wokkel/test/test_subprotocols.py Fri Mar 04 09:45:24 2011 +0100176 diff -r 6f36a7f92973 wokkel/test/test_subprotocols.py 177 --- a/wokkel/test/test_subprotocols.py Thu Jul 28 20:14:02 2011 +0200 178 +++ b/wokkel/test/test_subprotocols.py Wed Aug 03 09:45:01 2011 +0200 182 179 @@ -9,12 +9,13 @@ 183 180 … … 196 193 class DummyFactory(object): 197 194 """ 198 @@ -164,20 +165,4 8@@195 @@ -164,20 +165,46 @@ 199 196 200 197 201 198 202 199 +class IQGetStanza(generic.Stanza): 203 + timeout = None204 +205 200 + stanzaKind = 'iq' 206 201 + stanzaType = 'get' … … 248 243 self.assertEquals([], sm.handlers) 249 244 self.assertEquals(sm._connected, 250 @@ -407,6 +43 6,7 @@245 @@ -407,6 +434,7 @@ 251 246 self.assertEquals(0, handler.nestedHandler.doneLost) 252 247 … … 256 251 """ 257 252 Test removal of protocol handler. 258 @@ -418,6 +44 8,7 @@253 @@ -418,6 +446,7 @@ 259 254 self.assertNotIn(handler, sm) 260 255 self.assertIdentical(None, handler.parent) … … 264 259 """ 265 260 Test send when the stream has been initialized. 266 @@ -509,6 +5 40,194@@261 @@ -509,6 +538,228 @@ 267 262 self.assertEquals("<presence/>", sm._packetQueue[0]) 268 263 … … 449 444 + d = self.streamManager.request(self.request) 450 445 + 451 + xs = self.xmlstream452 446 + self.xmlstream.connectionLost(failure.Failure(ConnectionDone())) 453 447 + self.assertFailure(d, ConnectionDone) … … 456 450 + 457 451 + 452 + def test_requestNotIQ(self): 453 + """ 454 + The request stanza must be an iq. 455 + """ 456 + stanza = generic.Stanza() 457 + stanza.stanzaKind = 'message' 458 + 459 + d = self.streamManager.request(stanza) 460 + self.assertFailure(d, ValueError) 461 + 462 + 463 + def test_requestNotResult(self): 464 + """ 465 + The request stanza cannot be of type 'result'. 466 + """ 467 + stanza = generic.Stanza() 468 + stanza.stanzaKind = 'iq' 469 + stanza.stanzaType = 'result' 470 + 471 + d = self.streamManager.request(stanza) 472 + self.assertFailure(d, ValueError) 473 + 474 + 475 + def test_requestNotError(self): 476 + """ 477 + The request stanza cannot be of type 'error'. 478 + """ 479 + stanza = generic.Stanza() 480 + stanza.stanzaKind = 'iq' 481 + stanza.stanzaType = 'error' 482 + 483 + d = self.streamManager.request(stanza) 484 + self.assertFailure(d, ValueError) 485 + 486 + 458 487 459 488 class DummyIQHandler(subprotocols.IQHandlerMixin): -
request-xmpphandler.patch
r47 r53 1 1 # HG changeset patch 2 # Parent b05489ad4987a5e6263513c26048be801f7ce42b2 # Parent 4d60ea3a5ab59d48e5080c913f6aeea9af55fccb 3 3 Add request method to XMPPHandler, passing up to its StreamManager. 4 4 5 diff -r b05489ad4987wokkel/subprotocols.py6 --- a/wokkel/subprotocols.py Fri Mar 04 09:45:25 2011 +01007 +++ b/wokkel/subprotocols.py Fri Mar 04 09:48:19 2011 +01005 diff -r 4d60ea3a5ab5 wokkel/subprotocols.py 6 --- a/wokkel/subprotocols.py Wed Aug 03 09:45:01 2011 +0200 7 +++ b/wokkel/subprotocols.py Wed Aug 03 09:46:32 2011 +0200 8 8 @@ -94,6 +94,18 @@ 9 9 self.parent.send(obj) … … 25 25 class XMPPHandlerCollection(object): 26 26 """ 27 diff -r b05489ad4987wokkel/test/test_subprotocols.py28 --- a/wokkel/test/test_subprotocols.py Fri Mar 04 09:45:25 2011 +010029 +++ b/wokkel/test/test_subprotocols.py Fri Mar 04 09:48:19 2011 +010027 diff -r 4d60ea3a5ab5 wokkel/test/test_subprotocols.py 28 --- a/wokkel/test/test_subprotocols.py Wed Aug 03 09:45:01 2011 +0200 29 +++ b/wokkel/test/test_subprotocols.py Wed Aug 03 09:46:32 2011 +0200 30 30 @@ -71,6 +71,15 @@ 31 31 … … 58 58 + def request(self, request): 59 59 + self.requests.append(request) 60 + d =defer.succeed(None)60 + return defer.succeed(None) 61 61 + 62 62 + handler = subprotocols.XMPPHandler() … … 72 72 class XMPPHandlerCollectionTest(unittest.TestCase): 73 73 """ 74 @@ -165,1 5+195,6 @@74 @@ -165,13 +195,6 @@ 75 75 76 76 77 77 78 78 -class IQGetStanza(generic.Stanza): 79 - timeout = None80 -81 79 - stanzaKind = 'iq' 82 80 - stanzaType = 'get'
Note: See TracChangeset
for help on using the changeset viewer.