Simple Python package to define a schema for build and test results to be stored in Elasticsearch.
Simple Python package to define a schema for build and test results to be stored in Elasticsearch
- Build: A single instance of a CI systems build/test execution. It should map to a single URL/URI/UID on a CI system.
- Build ID: The ID associated with a given build (eg. 1078929).
- Job: A collection of tasks that describe how a build should be run. Running a job should result in a build. In Jenkins this maps to a job/project, in Quickbuild this maps to a configuration (eg. cpp-tests, root/prod/main).
- Product: Name of product that a given build is associated with.
- Test Case: Individual tests (sometimes aggregrations of closely related tests in C++) with result information
- Test Set: An aggregated collection of test cases, i.e. a suite
Test and Suite Separation
Tests and suites have been separated into two arrays rather than having tests nested with suites in this schema in order to better support Grafana (which has limitations on accessing nested information in ElasticSearch).
Since the build results are stored in one document it is not possible to filter out for example failing test cases only. It is possible to filter build result documents with failing tests only but the response received will as well contain the successful test cases.
In order to reduce the amount of received data tests have been therefore separated into passed, failed and skipped arrays.
Due to the usage of nested types in the schema the Elasticsearch indexer needs to be informed about this. This is achieved by defining a so called index template.
To avoid modifiying the index template whenever the schema is modified we decided to use dynamic templates to map the types dynamically based on the following rules (applied in this order):
- Each field has to be prefixed with
- Fields that should be not available for full text search (keyword) are suffixed with
_keyand will be mapped to type keyword.
- Fields that are nested are suffixed with
_nestedand will be mapped to type nested.
- Fields that are counters are suffixed with
_countand will be mapped to type integer.
- Fields containing
durationin their name will be mapped to type float.
- Fields of type string get a raw field (except they are suffixed with
_key) that can be used for non-full-text-searches and are limited to 256 characters.
- First release on PyPI.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size ebr-connector-0.1.5.tar.gz (32.2 kB)||File type Source||Python version None||Upload date||Hashes View hashes|