]> git.proxmox.com Git - mirror_novnc.git/blame - tests/wsencoding.py
Merge branch 'master' of git@github.com:kanaka/noVNC
[mirror_novnc.git] / tests / wsencoding.py
CommitLineData
507b473a
JM
1#!/usr/bin/python
2
3'''
4WebSocket server-side load test program. Sends and receives traffic
5that has a random payload (length and content) that is checksummed and
6given a sequence number. Any errors are reported and counted.
7'''
8
9import sys, os, socket, ssl, time, traceback
10import random, time
11from base64 import b64encode, b64decode
12from codecs import utf_8_encode, utf_8_decode
13from select import select
14
7210e79e 15sys.path.insert(0,os.path.dirname(__file__) + "/../utils/")
507b473a
JM
16from websocket import *
17
18buffer_size = 65536
19recv_cnt = send_cnt = 0
20
21
22def check(buf):
23
24 if buf[0] != '\x00' or buf[-1] != '\xff':
25 raise Exception("Invalid WS packet")
26
27 for decoded in decode(buf):
28 nums = [ord(c) for c in decoded]
29 print "Received nums: ", nums
30
31 return
32
33
34def responder(client):
35 cpartial = ""
36 socks = [client]
37 sent = False
38 received = False
39
40 while True:
41 ins, outs, excepts = select(socks, socks, socks, 1)
42 if excepts: raise Exception("Socket exception")
43
44 if client in ins:
45 buf = client.recv(buffer_size)
46 if len(buf) == 0: raise Exception("Client closed")
47 received = True
48 #print "Client recv: %s (%d)" % (repr(buf[1:-1]), len(buf))
49 if buf[-1] == '\xff':
50 if cpartial:
51 err = check(cpartial + buf)
52 cpartial = ""
53 else:
54 err = check(buf)
55 if err:
56 print err
57 else:
58 print "received partitial"
59 cpartial = cpartial + buf
60
61 if received and not sent and client in outs:
62 sent = True
63 #nums = "".join([unichr(c) for c in range(0,256)])
64 #nums = "".join([chr(c) for c in range(1,128)])
65 #nums = nums + chr(194) + chr(128) + chr(194) + chr(129)
66 #nums = "".join([chr(c) for c in range(0,256)])
67 nums = "\x81\xff"
68 nums = nums + "".join([chr(c) for c in range(0,256,4)])
69 nums = nums + "\x00\x40\x41\xff\x81"
70# print nums
71 client.send(encode(nums))
72# client.send("\x00" + nums + "\xff")
73# print "Sent characters 0-255"
74# #print "Client send: %s (%d)" % (repr(nums), len(nums))
75
76if __name__ == '__main__':
77 try:
78 if len(sys.argv) < 2: raise
79 listen_port = int(sys.argv[1])
80 except:
81 print "Usage: <listen_port>"
82 sys.exit(1)
83
6ee61a4c
JM
84 settings['listen_port'] = listen_port
85 settings['daemon'] = False
86 settings['handler'] = responder
87 start_server()