Challenge Overview
-
Our client is looking for existing Python 3 based libraries for their standard TCP and Websocket TCP related tasks.
-
The goal of this challenge is to find and recommend such library/libraries to the client, and to create one or more demo scripts to demonstrate the capabilities of the recommended libraries. Specific requirements of the libraries can be found in the Challenge Details section below.
-
Specifically, the library requirements are the following:
-
Identify an open source Python library to handle standard TCP traffic.
-
Identify an open source Python library to handle WebSocket-TCP traffic.
-
-
It should be ensured that the recommended libraries are open source, preferably available via pip and actively maintained by the open source community.
Challenge Details
-
Target platform - Python version 3.6.8 is the highest that client’s team supports right now, based on CentOS7 recommendations. It should be ensured that the recommended libraries work on CentOS7
-
Important - Scenarios which need to be supported (and demonstrate via script) with the chosen libraries (both on TCP and WebSocket-TCP):
-
Open/Close (this should be demonstrated as part of the other scenarios).
-
A simple Send and Receive, including a quick demonstration on how the payload is parsed. NOTE – We need to make sure there is not a block on the Send. Sending and receiving are two separate actions. All Send will result in a Receive, but Receives can also come in later. See the requirement below.
-
An unsolicited Receive, i.e. the client pushes a message not directly tied to a recent request. NOTE – the key is to demonstrate that responses can be received by the server at any time (i.e. send-recv, send-recv, recv, recv, send-recv, etc.)
-
Multiple open sockets utilizing the library at the same time.
-
SSL/TLS over the socket utilizing a certificate. NOTE – scenarios A-D can be demonstrated independent of this. The assumption is that once the security is properly set up, send/recv should look the same across the board.
-
-
The demo script(s) should be relatively simple to execute, and all relevant deployment instructions along with version details, should be provided along with details on how to test each of the features listed above.
-
Proper instructions on how to install and update the recommended library/libraries should be provided.
-
Important note from the client - The library functionality should be demonstrated via command line Python scripts which import the chosen open-source Python3 libraries and execute the requested scenarios. These should focus on direct network calls with no reliance on a UI. Each scenario should be clearly labeled either via comments or via function name.
-
Ideally, if the client wants to demonstrate a particular capability in the demo to their internal teams, they should be able to easily find and run the demo for that feature. Additionally, there should also be an option to run all feature tests sequentially.
Data and additional code access
No existing code or reference is required. The code base needs to be implemented from scratch.
Final Submission Guidelines
What to Submit
-
A PDF/DOC/Markdown file providing the recommendations and any details that can be useful for the client.
-
The demo code.
-
Deployment guide (preferably via a README.md file) of the demo code, along with + installation/update instructions for the recommended library/libraries
-
Any additional documentation or write-ups that might be useful for the client.
-
Verification details of each requested feature in the demo.
Technology Stack
-
Python 3.6.8