This program will implement distributed chat on virtual ring topology network. Furthermore this program will implement Chang-Roberts algorithm to achieve full ordering of messages.
- Nodes can freely join into existing ring, based on information about one node (IP:port). First node will join with itself into ring.
- Ring will recover from unexpected disconnect of one node at the time.
- One node will be elected as central authority (leader), all messages will be then passed through leader.
- Leader will be elected using Chang-Roberts algorithm.
- GUI in Qt, it will also have CLI.
- Encryption of messages.
How to build documentation
- Create virtual environment using: python3.5 -m venv env
- Activate virtual environment: . env/bin/activate
- Install dependencies: python -m pip install -r requirements.txt
- Change directory into docs: cd docs
- Build documentation: make html
- Open file docs/_build/html/index.html to view documentation.
How to run tests
Run (in installed and activated virtual environment):
python setup.py test
pytest -v tests/test_chat.py