67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
import socket
|
|
import struct
|
|
from time import sleep
|
|
|
|
def create_insert_message(timestamp: int, price: int) -> bytes:
|
|
"""Create a 9-byte insert message."""
|
|
return struct.pack('!cii', b'I', timestamp, price)
|
|
|
|
def create_query_message(mintime: int, maxtime: int) -> bytes:
|
|
"""Create a 9-byte query message."""
|
|
return struct.pack('!cii', b'Q', mintime, maxtime)
|
|
|
|
def receive_response(sock: socket.socket) -> int:
|
|
"""Receive and decode a 4-byte response."""
|
|
data = sock.recv(4)
|
|
return struct.unpack('!i', data)[0]
|
|
|
|
def run_test():
|
|
# Connect to the server
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect(('localhost', 40000)) # Using the same port as your other servers
|
|
|
|
# Test case 1: Insert some values
|
|
test_data = [
|
|
(12345, 101), # (timestamp, price)
|
|
(12346, 102),
|
|
(12347, 100),
|
|
(40960, 5),
|
|
]
|
|
|
|
print("Inserting test data...")
|
|
for timestamp, price in test_data:
|
|
message = create_insert_message(timestamp, price)
|
|
sock.send(message)
|
|
print(f"Inserted: timestamp={timestamp}, price={price}")
|
|
sleep(0.1) # Small delay to avoid overwhelming the server
|
|
|
|
# Test case 2: Query for mean price
|
|
mintime = 12288
|
|
maxtime = 16384
|
|
print(f"\nQuerying mean price between {mintime} and {maxtime}...")
|
|
|
|
query = create_query_message(mintime, maxtime)
|
|
sock.send(query)
|
|
|
|
# Get response
|
|
mean_price = receive_response(sock)
|
|
print(f"Received mean price: {mean_price}")
|
|
|
|
# Test case 3: Query with no data in range
|
|
print("\nTesting query with no data in range...")
|
|
query = create_query_message(1, 1000)
|
|
sock.send(query)
|
|
mean_price = receive_response(sock)
|
|
print(f"Received mean price (should be 0): {mean_price}")
|
|
|
|
# Clean up
|
|
sock.close()
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
run_test()
|
|
except ConnectionRefusedError:
|
|
print("Could not connect to server. Make sure it's running on port 40000.")
|
|
except Exception as e:
|
|
print(f"An error occurred: {e}")
|