Core Concepts
Teams
A Team is a required top-level organizational and authorization construct.
Folders
A Folder is an optional organizational structure to hold Tests
Schema
A Schema is required by Horreum to define the meta-data associated with a Run
It allows Horreum to process the JSON content to provide validation, charting, and change detection
A Schema defines the following;
- An optional expected structure of a Dataset via a
JSON Validation Schema - Required
Labelsthat define how to use the data in the JSON document - Optional
Transformers, to transform uploaded JSON documents into one or more datasets.
A Schema can apply to an entire Run JSON document, or parts of a Run JSON document
Label
A Label is required to define how metrics are extracted from the JSON document and processed by Horreum.
Labels are defined by one or more required Extractors and an optional Combination Function
There are 2 types of Labels:
Metrics Label: Describes a metric to be used for analysis, e.g. “Max Throughput”, “process RSS”, “startup time” etcFiltering Label: Describes a value that can be used for filteringDatasetsand ensuring that datasets are comparable, e.g. “Cluster Node Count”, “Product version” etc
A Label can be defined as either a Metrics label, a Filtering label, or both.
Filtering Labels are combined into Fingerprints that uniquely identify comparable Datasets within uploaded Runs.
Extractor
An Extractor is a required JSONPath expression that refers to a section of an uploaded JSON document. An Extractor can return one of:
- A scalar value
- An array of values
- A subsection of the uploaded JSON document
Note
In the majority of cases, an Extractor will simply point to a single, scalar valueCombination Function:
A Combination Function is an optional JavaScript function that takes all Extractor values as input and produces a Label value. See Function
Note
In the majority of cases, the Combination Function is simply an Identity function with a single input and does not need to be definedTest
A Test is a required repository for particular similar runs and datasets
You can think of a test as a repo for the results of a particular benchmark, i.e. a benchmark performs a certain set of actions against a system under test
Test Runs can have different configurations, making them not always directly comparable, but the Run results stored under one Test can be filtered by their Fingerprint to ensure that all Datasets used for analysis are comparable
Run
A Run is a particular single upload instance of a Test
A Run is associated with one or more Schemas in order to define what data to expect, and how to process the JSON document
Transformers
A Transformer is optionally defined on a Schema that applies required Extractors and a required Combination Function to transform a Run into one or more Datasets
Transformers are typically used to;
- Restructure the JSON document. This is useful where users are processing JSON documents that they do not have control of the structure, and the structure is not well defined
- Split a
RunJSON output into multiple, non-comparableDatasets. This is useful where a benchmark iterates over a configuration and produces a JSON output that contains multiple results for different configurations
A Schema can have 0, 1 or multiple Transformers defined
Note
In the majority of cases, theRun data does not need to be transformed and there is a one-to-one direct mapping between Run and Dataset. In this instance, an Identity Transformer is used and does not need to be defined by the userDataset
A Dataset is either the entire Run JSON document, or a subset that has been produced by an optional Transformer
It is possible for a Run to include multiple Datasets, and the Transformer(s) defined on a Schema associated with the Run has the job of parsing out the multiple Datasets
Note
In most cases, there is a 1:1 relationship between aRun and a Dataset, when the Dataset is expected to have one unified set of results to be analyzed togetherFingerprint
A Fingerprint is combination of Filtering labels that unique identifies comparable datasets within a test
Function
A Function is a JavaScript function that is executed on the server side. Functions can be used for validating expected data formats, substitution and rendering. Also used in Combination Functions to create derived metrics. See Define Functions for more detailed information.
Datasource
A Datasource is a required top-level organizational construct that defines the source of the data to be stored or retrieved by Horreum. Currently, Horreum supports 3 types of Datasource: Postgres, Elasticsearch, and Collector
Baseline
The initial sample for an Experiment comparison. Configured in an Experiment Profile.
Change Detection Variable
Change detection tracks Schema Labels that have been configured as a Change Detection Variable.
Experiment
This enables running a comparison between Runs for a particular Test. There can be multiple Profiles configured for an Experiment to check for a variety of desired conditions. The outcome status for each Profile condition will be one of the following:
- SAME
- WORSE
- BETTER
Experiment Profile
A Profile consists of:
ExperimentselectorBaseline- 0, 1 or many Comparison conditions
JSON validation schema
An optional schema added to a Test to validate uploaded Run JSON data.
Report Configuration
In Horreum a Report Configuration is used for compiling a summary of information to be displayed using tables.
Report
A Report is an instance of a Report Configuration. Creation date and time is used for differentiating each Report.
Actions
An Action is the ability by Horreum to send an Event notification to an external system. These are added to a Test.
Global Action
Actions that occur globally in Horreum
Test Action
Actions only for a particular Test
Action allow list
Horreum will only allow generic HTTP requests to domains that have been pre-configured in Horreum by an Administrator.
API Filter Query
Horreum API provides query parameters that are JSONPath paths that filter operation results.
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.