You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
3.3 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"""
Это вспомогательный скрипт для тестирования сервера из задания в 6 блоке.
Для запуска скрипта на локальном компьютере разместите рядом файл client.py,
где содержится код клиента, который реализован в задание блока 5.
Сначала запускаете ваш сервер на адресе 127.0.0.1 и порту 8888, а затем
запускаете этот скрипт.
"""
import sys
from client import Client, ClientProtocolError, ClientSocketError
def run(host, port):
client1 = Client(host, port, timeout=5)
client2 = Client(host, port, timeout=5)
try:
client1.send("malformed command test\n")
client2.send("malformed command test\n")
except ClientSocketError as err:
print(f"Ошибка общения с сервером: {err.__class__}: {err}")
sys.exit(1)
except ClientProtocolError:
pass
else:
print(
"Неверная команда, отправленная серверу, должна возвращать ошибку протокола"
)
sys.exit(1)
try:
client1.put("k1", 0.25, timestamp=1)
client2.put("k1", 2.156, timestamp=2)
client1.put("k1", 0.35, timestamp=3)
client2.put("k2", 30, timestamp=4)
client1.put("k2", 40, timestamp=5)
client1.put("k2", 40, timestamp=5)
except Exception as err:
print(f"Ошибка вызова client.put(...) {err.__class__}: {err}")
sys.exit(1)
expected_metrics = {
"k1": [(1, 0.25), (2, 2.156), (3, 0.35)],
"k2": [(4, 30.0), (5, 40.0)],
}
try:
metrics = client1.get("*")
if metrics != expected_metrics:
print(
f"client.get('*') вернул неверный результат. Ожидается: {expected_metrics}. Получено: {metrics}"
)
sys.exit(1)
except Exception as err:
print(f"Ошибка вызова client.get('*') {err.__class__}: {err}")
sys.exit(1)
expected_metrics = {"k2": [(4, 30.0), (5, 40.0)]}
try:
metrics = client2.get("k2")
if metrics != expected_metrics:
print(
f"client.get('k2') вернул неверный результат. Ожидается: {expected_metrics}. Получено: {metrics}"
)
sys.exit(1)
except Exception as err:
print(f"Ошибка вызова client.get('k2') {err.__class__}: {err}")
sys.exit(1)
try:
result = client1.get("k3")
if result != {}:
print(
f"Ошибка вызова метода get с ключом, который еще не был добавлен. Ожидается: пустой словарь. Получено: {result}"
)
sys.exit(1)
except Exception as err:
print(
f"Ошибка вызова метода get с ключом, который еще не был добавлен: {err.__class__} {err}"
)
sys.exit(1)
print("Похоже, что все верно!")
if __name__ == "__main__":
run("127.0.0.1", 8888)