mardi 5 juillet 2016

Python socket unit testing

I'm trying to write a socket server testing framework which simply listens on a network socket for a set of commands and takes the appropriate action.

import socket

   host=localhost
   port=80
   buffer=32
   class CSE:

    def __init__(self, host, port):

        self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.server.bind((host, port))


    def listen(self, connection=3):
        self.server.listen(connection)
        self.accept()

    def accept(self):
        self.client, self.remote_addr = self.server.accept()
        self.connected = True

    def recv_Data(self, buffer):
        return self.client.recv(buffer)


    def wait_commands(self):
        while self.connected:
            supported_commands = self.recv_Data()
            if supported_commands:
                if supported_commands in ("loop", "print"):
                    payload = self.recv_Data(256)

                elif supported_commands == "print":
                    print payload

                elif supported_commands == "close":
                    self.close()
                elif
                    print "Command not found"
                    continue

    def close(self):
        self.client.close()
        self.server.close()
        self.connected = False


if __name__ == '__main__':
    srv = CSE()    
    srv.listen()
    srv.wait_commands()

This is what i came up with

import socket
import unittest
import CSE


class Test(unittest.TestCase):
    def test_server(self):
        testServ = CSE(localhost, 80)
        server_thread = threading.Thread(target=testServ.start_listening)
        server_thread.start()

        client = socket.socket()
        client.settimeout(1)
        client.connect((localhost, 80))
        client.close()

        # server thread finishes
        server_thread.join()


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

I'm not sure how to go about it further. I couldn't find much on socket unit testing using python. The tests cases I came up with are:

1. Start the server
2. Establish connection with client
3. Test the server by sending 3 commands
    - loop command should  send all load.
    - print command should print load
    - close command should close the server.

Any help is greatly appreciated.

Thank You

Aucun commentaire:

Enregistrer un commentaire