We use black as the code formatter, the best way to use it is to install the pre-commit hook, it will automatically format the code before each commit
Install pre-commit before commit
pip install pre-commit
pre-commit install
Pre-commit will automatically format the code before each commit, It can also be executed manually on all files
pre-commit run --all-files
Comment style is Google Python Style Guide.
pip install -e .[test]
We use pytest to write unit tests, and use pytest-cov to generate coverage reports
pytest -v tests/base/ # Run unit-test
pytest --cov=duetector # Generate coverage reports
Run unit-test before PR, ensure that new features are covered by unit tests
In order not to be affected by the global variables of unit tests, integration tests need to be performed separately.
Requirement: docker
pytest -vv tests/integration/jaeger
Use script to generate config after add tracer/filter...
python duetector/tools/config_generator.py
Install docs dependencies
pip install -e .[docs]
Build docs
make html
Use start-docs-host.sh to deploy a local http server to view the docs
cd ./dev-tools && ./start-docs-host.sh
Access http://localhost:8080
for docs.
- Create a new file in
duetector/tracer
,duetector/filter
,duetector/collector
orduetector/analyzer
directory, with the name{name}.py
- Implement the new tracer/filter/collector/analyzer
- Add the new tracer/filter/collector to
registers
list induetector/tracer/register.py
,duetector/filter/register.py
,duetector/collector/register.py
orduetector/analyzer/register.py
- Test the new tracer/filter/collector/analyzer
- Generate new static config file with
python duetector/tools/config_generator.py
Another way to add a new tracer/filter/collector/analyzer is to use our extension mechanism, see Extension. This is not required a change to the duetector codebase and you will mantain the extension by yourself.