summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_asynchat.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-04-06 16:32:22 (GMT)
committerGuido van Rossum <guido@python.org>2001-04-06 16:32:22 (GMT)
commit66172520ee5b0762274f010e0bfdffd1559876f3 (patch)
treedf6d46bb82b87ebc8a32a76ecac3f712215af3bf /Lib/test/test_asynchat.py
parente4a1b6d7c4e96dd2af0541dd12444932260e2a66 (diff)
downloadcpython-66172520ee5b0762274f010e0bfdffd1559876f3.zip
cpython-66172520ee5b0762274f010e0bfdffd1559876f3.tar.gz
cpython-66172520ee5b0762274f010e0bfdffd1559876f3.tar.bz2
Add test for asynchat. This also tests asyncore.
Diffstat (limited to 'Lib/test/test_asynchat.py')
-rw-r--r--Lib/test/test_asynchat.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/Lib/test/test_asynchat.py b/Lib/test/test_asynchat.py
new file mode 100644
index 0000000..3d31524
--- /dev/null
+++ b/Lib/test/test_asynchat.py
@@ -0,0 +1,55 @@
+# test asynchat -- requires threading
+
+import asyncore, asynchat, socket, threading
+
+HOST = "127.0.0.1"
+PORT = 54321
+
+class echo_server(threading.Thread):
+
+ def run(self):
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ sock.bind((HOST, PORT))
+ sock.listen(1)
+ conn, client = sock.accept()
+ buffer = ""
+ while "\n" not in buffer:
+ data = conn.recv(10)
+ if not data:
+ break
+ buffer = buffer + data
+ while buffer:
+ n = conn.send(buffer)
+ buffer = buffer[n:]
+ conn.close()
+ sock.close()
+
+class echo_client(asynchat.async_chat):
+
+ def __init__(self):
+ asynchat.async_chat.__init__(self)
+ self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.connect((HOST, PORT))
+ self.set_terminator("\n")
+ self.buffer = ""
+ self.send("hello ")
+ self.send("world\n")
+
+ def handle_connect(self):
+ print "Connected"
+
+ def collect_incoming_data(self, data):
+ self.buffer = self.buffer + data
+
+ def found_terminator(self):
+ print "Received:", `self.buffer`
+ self.buffer = ""
+ self.close()
+
+def main():
+ s = echo_server()
+ s.start()
+ c = echo_client()
+ asyncore.loop()
+
+main()