symbian-qemu-0.9.1-12/python-2.6.1/Demo/sockets/throughput.py
changeset 1 2fb8b9db1c86
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/symbian-qemu-0.9.1-12/python-2.6.1/Demo/sockets/throughput.py	Fri Jul 31 15:01:17 2009 +0100
@@ -0,0 +1,93 @@
+#! /usr/bin/env python
+
+# Test network throughput.
+#
+# Usage:
+# 1) on host_A: throughput -s [port]                    # start a server
+# 2) on host_B: throughput -c  count host_A [port]      # start a client
+#
+# The server will service multiple clients until it is killed.
+#
+# The client performs one transfer of count*BUFSIZE bytes and
+# measures the time it takes (roundtrip!).
+
+
+import sys, time
+from socket import *
+
+MY_PORT = 50000 + 42
+
+BUFSIZE = 1024
+
+
+def main():
+    if len(sys.argv) < 2:
+        usage()
+    if sys.argv[1] == '-s':
+        server()
+    elif sys.argv[1] == '-c':
+        client()
+    else:
+        usage()
+
+
+def usage():
+    sys.stdout = sys.stderr
+    print 'Usage:    (on host_A) throughput -s [port]'
+    print 'and then: (on host_B) throughput -c count host_A [port]'
+    sys.exit(2)
+
+
+def server():
+    if len(sys.argv) > 2:
+        port = eval(sys.argv[2])
+    else:
+        port = MY_PORT
+    s = socket(AF_INET, SOCK_STREAM)
+    s.bind(('', port))
+    s.listen(1)
+    print 'Server ready...'
+    while 1:
+        conn, (host, remoteport) = s.accept()
+        while 1:
+            data = conn.recv(BUFSIZE)
+            if not data:
+                break
+            del data
+        conn.send('OK\n')
+        conn.close()
+        print 'Done with', host, 'port', remoteport
+
+
+def client():
+    if len(sys.argv) < 4:
+        usage()
+    count = int(eval(sys.argv[2]))
+    host = sys.argv[3]
+    if len(sys.argv) > 4:
+        port = eval(sys.argv[4])
+    else:
+        port = MY_PORT
+    testdata = 'x' * (BUFSIZE-1) + '\n'
+    t1 = time.time()
+    s = socket(AF_INET, SOCK_STREAM)
+    t2 = time.time()
+    s.connect((host, port))
+    t3 = time.time()
+    i = 0
+    while i < count:
+        i = i+1
+        s.send(testdata)
+    s.shutdown(1) # Send EOF
+    t4 = time.time()
+    data = s.recv(BUFSIZE)
+    t5 = time.time()
+    print data
+    print 'Raw timers:', t1, t2, t3, t4, t5
+    print 'Intervals:', t2-t1, t3-t2, t4-t3, t5-t4
+    print 'Total:', t5-t1
+    print 'Throughput:', round((BUFSIZE*count*0.001) / (t5-t1), 3),
+    print 'K/sec.'
+
+
+main()