You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bazarr/libs/test/send_test.py

177 lines
5.2 KiB

import os
import re
import unittest
import logging
import time
import uuid
import threading
from signalrcore.hub_connection_builder import HubConnectionBuilder
from signalrcore.hub.errors import HubError, HubConnectionError
from test.base_test_case import BaseTestCase, Urls
class TestSendException(BaseTestCase):
def receive_message(self, _):
raise Exception()
def setUp(self):
self.connection = self.get_connection()
self.connection.start()
while not self.connected:
time.sleep(0.1)
def test_send_exception(self):
_lock = threading.Lock()
_lock.acquire()
self.connection.send("SendMessage", ["user", "msg"])
del _lock
def test_hub_error(self):
_lock = threading.Lock()
self.assertTrue(_lock.acquire(timeout=10))
self.connection.on_error(lambda _: _lock.release())
def on_message(_):
_lock.release()
self.assertTrue(_lock.acquire(timeout=10))
self.connection.on("ThrowExceptionCall", on_message)
self.connection.send("ThrowException", ["msg"])
class TestSendExceptionMsgPack(TestSendException):
def setUp(self):
self.connection = self.get_connection(msgpack=True)
self.connection.start()
while not self.connected:
time.sleep(0.1)
class TestSendWarning(BaseTestCase):
def setUp(self):
self.connection = self.get_connection()
self.connection.start()
while not self.connected:
time.sleep(0.1)
def test_send_warning(self):
_lock = threading.Lock()
_lock.acquire()
self.connection.send("SendMessage", ["user", "msg"], lambda m: _lock.release())
self.assertTrue(_lock.acquire(timeout=10))
del _lock
class TestSendWarningMsgPack(TestSendWarning):
def setUp(self):
self.connection = super().get_connection(msgpack=True)
self.connection.start()
while not self.connected:
time.sleep(0.1)
class TestSendMethod(BaseTestCase):
received = False
message = None
def setUp(self):
self.connection = self.get_connection()
self.connection.on("ReceiveMessage", self.receive_message)
self.connection.start()
while not self.connected:
time.sleep(0.1)
def receive_message(self, args):
self.assertEqual(args[1], self.message)
self.received = True
def test_send_bad_args(self):
class A():
pass
self.assertRaises(TypeError, lambda : self.connection.send("SendMessage", A()))
def test_send(self):
self.message = "new message {0}".format(uuid.uuid4())
self.username = "mandrewcito"
self.received = False
self.connection.send("SendMessage", [self.username, self.message])
while not self.received:
time.sleep(0.1)
self.assertTrue(self.received)
def test_send_with_callback(self):
self.message = "new message {0}".format(uuid.uuid4())
self.username = "mandrewcito"
self.received = False
_lock = threading.Lock()
_lock.acquire()
uid = str(uuid.uuid4())
def release(m):
self.assertTrue(m.invocation_id, uid)
_lock.release()
self.connection.send(
"SendMessage",
[self.username, self.message],
release,
invocation_id=uid)
self.assertTrue(_lock.acquire(timeout=10))
del _lock
class TestSendNoSslMethod(TestSendMethod):
server_url = Urls.server_url_no_ssl
class TestSendMethodMsgPack(TestSendMethod):
def setUp(self):
self.connection = super().get_connection(msgpack=True)
self.connection.on("ReceiveMessage", super().receive_message)
self.connection.start()
while not self.connected:
time.sleep(0.1)
class TestSendNoSslMethodMsgPack(TestSendMethodMsgPack):
server_url = Urls.server_url_no_ssl
class TestSendErrorMethod(BaseTestCase):
received = False
message = None
def setUp(self):
self.connection = self.get_connection()
self.connection.on("ReceiveMessage", self.receive_message)
def receive_message(self, args):
self.assertEqual(args[1], self.message)
self.received = True
def test_send_with_error(self):
self.message = "new message {0}".format(uuid.uuid4())
self.username = "mandrewcito"
self.assertRaises(HubConnectionError,lambda : self.connection.send("SendMessage", [self.username, self.message]))
self.connection.start()
while not self.connected:
time.sleep(0.1)
self.received = False
self.connection.send("SendMessage", [self.username, self.message])
t0 = time.time()
while not self.received:
time.sleep(0.1)
self.assertTrue(self.received)
class TestSendErrorNoSslMethod(TestSendErrorMethod):
server_url = Urls.server_url_no_ssl
class TestSendErrorMethodMsgPack(TestSendErrorMethod):
def get_connection(self):
return super().get_connection(msgpack=True)
class TestSendErrorNoSslMethodMsgPack(TestSendErrorNoSslMethod):
def get_connection(self):
return super().get_connection(msgpack=True)