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