Testing & dd-agent
Your code should always be clean when doing
rake lint. It runs
flake8, ignoring these rules.
Organisation of the tests directory
tests ├── checks # tests of checks.d/* │ ├── integration # contains all real integration tests (run on Travis/Appveyor) │ ├── mock # contains mocked tests (run on Travis) │ └── fixtures # files needed by tests (conf files, mocks, ...) └── core # core agent tests (unit and integration tests, run on Travis) └── fixtures # files needed by tests
To run individual tests:
# Whole file nosetests tests/checks/mock/test_system_swap.py # Whole class nosetests tests/checks/mock/test_system_swap.py:SystemSwapTestCase # Single test case nosetests tests/checks/mock/test_system_swap.py:SystemSwapTestCase.test_system_swap
To run a specific ci flavor (our way of splitting tests, for more details see integration tests):
# Run the flavor my_flavor rake ci:run[my_flavor]
They are split in different flavors:
# Run the mock/unit core tests rake ci:run # Run mock/unit checks tests rake ci:run[checks_mock] # Agent core integration tests (can take more than 5min) rake ci:run[core_integration]
All integrations, except for the kubernates and docker ones, have been moved to the Integration SDK. Please look there to see the Integrations Tests.
Its configuration is stored in .travis.yml.
It's running the exact same command described above (
rake ci:run[flavor]), with the restriction of one flavor + version per build. (we use the build matrix to split flavors)
We use the newly released docker-based infrastructure.
Its configuration is stored in appveyor.yml.
It's using the same command as Travis,
rake ci:run[flavor], but runs only tests with the
@attr('windows', requires='flavor'). It tests only Windows-specific checks, with python 2.7 (32 and 64 bits).
Third parties softwares are not build from source, instead it uses pre-installed programs.
Appveyor is caching gems & pywin32 exe (needed for WMI), there is no custom caching.