Ich möchte Ping-Timeout eines Websocket in einem Test simulieren.Python-Patch-Objekt-Methode
Zuerst habe ich versucht, TCP-Socket ruhig zu schließen, aber es ist nicht möglich aufgrund FIN wird trotzdem gesendet. Iptables ist keine Option.
Ich benutze Tornado-Bibliothek, um einen Websocket-Client zu verspotten.
Ich habe gelesen, wie Methode in bereits instanziierten Objekt zu ersetzen. Es funktioniert in einer einfachen Demo, aber Tornado scheint meine Manipulationen zu ignorieren.
Was könnte es sein?
import types
ws.websocket_connect(url, callback=openCallback,
on_message_callback=messageCallback)
def openCallback(future):
ws = future.result()
inst = ws.protocol
def stub(self, x):
print "STUB"
inst.write_ping = types.MethodType(stub, inst, inst.__class__)
Es gibt keinen Fehler, aber Stub wird nicht aufgerufen, und der Client antwortet weiterhin auf Server-Ping-Anforderungen.