Chaos is the web service which can feed Navitia with real-time disruptions. It can work together with Kirin which can feed Navitia with real-time delays.
git clone git@github.com:CanalTP/Chaos.git
cd Chaos
- Install Python
sudo apt-get install python2.7 python2.7-dev
- Install pip
- Install virtualenv
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
- Install protoc
sudo apt-get install protobuf-compiler
(or build it from source: protobuf v2.6.1) - Build protobufs
git submodule init
git submodule update
./setup.py build_pbf
sudo apt-get install postgresql libpq-dev
sudo -i -u postgres
# Create a user
createuser -P navitia (password "navitia")
# Create database
createdb -O navitia chaos
# Create database for tests
createdb -O navitia chaos_testing
ctrl + d
To improve its performance Chaos can use Redis.
You can deactivate Redis usage in default_settings.py by changing 'CACHE_TYPE' to 'simple'
For development purpose you can deactivate cache usage in default_settings.py by forcing 'CACHE_TYPE' to 'null'
You can use honcho for managing Procfile-based applications.
pip install honcho
Write this line inside
CHAOS_CONFIG_FILE=default_settings.py
honcho run ./manage.py db upgrade
RabbitMQ is optional and you can deactivate it if you don't want to send disruptions to a queue.
# chaos/default_settings.py
ENABLE_RABBITMQ = False
honcho start
git clone git@github.com:CanalTP/Chaos.git
cd Chaos
git submodule init
git submodule update
docker-compose up -d
To watch logs output:
docker-compose logs -f
Chaos will be accessible on http://chaos_ws_1.docker if you are using the docker-gen-hosts tool, it will also be accessible on http://chaos-ws.local.canaltp.fr The database will be accessible at 'chaos_database_1.docker' and default RabbitMQ interface at 'http://chaos_rabbitmq_1.docker:15672'.
If you want to add more security, you can add a file chaos/clients_tokens.json with the client code and navitia tokens like:
{
"client_code": [
"navitia_token1",
"navitia_token2"
]
}
client_code should be the same as the value of X-Customer-Id header in HTTP request and token should be the same as the value of Authorization header in HTTP request If the file doesn't exist, the security will be disabled.
You can add a 'master' key in the file. It will allow you to access all resources for all clients.
The following commands for tests are also working in Docker environment, you just have to run before:
docker-compose exec ws bash
cd tests
cd tests
honcho run nosetests
cd tests
honcho run lettuce
To stop directly on faulty test
cd tests
honcho run lettuce --failfast