summaryrefslogtreecommitdiff
path: root/tester.py
diff options
context:
space:
mode:
Diffstat (limited to 'tester.py')
-rw-r--r--tester.py79
1 files changed, 65 insertions, 14 deletions
diff --git a/tester.py b/tester.py
index d5e9f32..265d99b 100644
--- a/tester.py
+++ b/tester.py
@@ -1,23 +1,74 @@
-from socket import socket, SOCK_STREAM
+from socket import socket
import json
+from time import sleep, time
+
MESSAGE, AUTHENTICATE, RENAME = "message", "authenticate", "rename"
-with socket() as sock:
- addr = host, port = "localhost", 8080
- print(addr)
- sock.connect(addr)
- for i in range(1000):
- print(f"Sending {i} request")
+def int_from_bytes(data: bytes) -> int:
+ num = 0
+ for i, byte in enumerate(data):
+ num += byte << ((4 - i - 1) * 8)
+ return num
+
+
+def to_bytes(num: int) -> bytes:
+ b = bytearray(4)
+ mask = 0xFF
+ for i in range(4):
+ b[4 - i - 1] = num & mask
+ num >>= 8
+ return bytes(b)
+
+
+def send_message(connection: socket, data: bytes):
+ size = len(data)
+ b = to_bytes(size)
+ # print(size, list(map(int, b)))
+ connection.sendall(b + data)
+
+
+def main():
+ with socket() as sock:
+ addr = host, port = "localhost", 8080
+ print(addr)
+ sock.connect(addr)
+
+ t1 = time()
+
request = {
- "type": "message",
- "data": f"hello, {i}",
+ "type": AUTHENTICATE,
+ "data": "auth",
"user": "andrew"
}
- sock.sendall(json.dumps(request).encode())
- print("Waiting for response")
- response = sock.recv(4096).decode()
- print(f"Response: {response}")
+ send_message(sock, json.dumps(request).encode())
+
+ for i in range(10000):
+ print(f"Sending {i} request")
+ request = {
+ "type": MESSAGE,
+ "data": f"hello, {i}",
+ "user": "andrew"
+ }
+ send_message(sock, json.dumps(request).encode())
+
+ print("Waiting for response")
+ response = sock.recv(4)
+ size = int_from_bytes(response)
+ # print(f"Size is {size}")
+
+ response = sock.recv(size).decode()
+ print(f"Response: {response}")
+
+ request = {
+ "type": MESSAGE,
+ "data": "exit",
+ "user": "andrew"
+ }
+ send_message(sock, json.dumps(request).encode())
+ print(time() - t1)
+
- sock.sendall("exit".encode())
+if __name__ == '__main__':
+ main() \ No newline at end of file