diff options
Diffstat (limited to 'tester.py')
| -rw-r--r-- | tester.py | 79 |
1 files changed, 65 insertions, 14 deletions
@@ -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 |