test_client_gemini.py 1.96 KB
#!/usr/bin/env python3

import threading

import unittest

import sys
sys.path.append('..')
from src.server.server_udp_or_tcp import get_SocketServer_UDP_TCP
from src.client.socket_client_telescope_gemini import SocketClientTelescopeGEMINI

#HOST, PORT = "localhost", 9999
#HOST, PORT = "localhost", 20001
HOST, PORT = "localhost", 11110

class TestClient(unittest.TestCase):


    def setUp(self):
        self.seq = range(10)

    def server(self):
        with get_SocketServer_UDP_TCP(HOST, PORT, "UDP") as myserver:
            myserver.serve_forever()
        
    def test_run(self):
        
        qa = [
            (':toto#', 'TOTO'),
            (':GD#', '+12:28'),
            #(':GD#', '+12:28')
            #('6', 'G'),
        ]
        
        #TODO: RUN SERVER in a thread
        t_server = threading.Thread(target=self.server)
        #threads.append(t)
        t_server.start()
        #time.sleep(3)
        
        # RUN CLIENT to connect to server
        #tsock = SocketClient_UDP_TCP(HOST, PORT, "UDP")
        with SocketClientTelescopeGEMINI(HOST, PORT) as tsock:
            # Only useful for TCP (does nothing for UDP)
            tsock._connect_to_server()
            
            # 1) SEND REQUEST data to server
            
            for data in qa:
                question,answer = data
                tsock.send_data(question)
        
                # 2) RECEIVE REPLY data from server
                data_received = tsock.receive_data()
                self.assertEqual(data_received, answer)
            
            radec = tsock.get("RA-DEC")
            print("ra-dec is", radec)
            self.assertEqual(radec,  ['15:01:48', '+12:28'])
            
            #tsock.close()
            
        #TODO: Stop the server thread (t_server), how can we do that ?
        # cf https://www.oreilly.com/library/view/python-cookbook-2nd/0596007973/ch09s03.html
        #t_server.suicide_toi() !!!
        

if __name__ == '__main__':
    unittest.main()