|
|
"""
|
|
|
Это вспомогательный скрипт для тестирования сервера из задания в 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)
|