53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
import socket
|
|
import string
|
|
import unittest
|
|
import random
|
|
from threading import Thread
|
|
from typing import Optional
|
|
|
|
from source.network.packet import PacketChat
|
|
|
|
|
|
class TestNetwork(unittest.TestCase):
|
|
PORT: int = 54231
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
|
|
# Prépare deux sockets pour simuler les packets
|
|
self.co_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
self.so_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
|
|
self.so_server.bind(("", self.PORT))
|
|
self.so_server.listen()
|
|
self.co_server: Optional[socket.socket] = None
|
|
|
|
def connect_server(): self.co_server, _ = self.so_server.accept()
|
|
def connect_client(): self.co_client.connect(("127.0.0.1", self.PORT))
|
|
|
|
thread_server = Thread(target=connect_server)
|
|
thread_client = Thread(target=connect_client)
|
|
thread_server.start()
|
|
thread_client.start()
|
|
thread_server.join()
|
|
thread_client.join()
|
|
|
|
def __del__(self):
|
|
self.co_client.close()
|
|
self.so_server.close()
|
|
|
|
def test_packet_chat(self):
|
|
for _ in range(100):
|
|
message = "".join(random.choice(string.printable) for _ in range(random.randint(1, 100)))
|
|
|
|
PacketChat(message).send_data_connection(self.co_server)
|
|
packet_chat = PacketChat.from_connection(self.co_client)
|
|
|
|
self.assertEqual(message, packet_chat.message)
|
|
|
|
# TODO: autre type de packets
|
|
# TODO: type de packet générique
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|