Skip to content
This repository was archived by the owner on Mar 8, 2022. It is now read-only.

Feature Architecture

bialesdaniel edited this page Dec 13, 2020 · 10 revisions

This section focuses on the design of the different NoisePage testing features and tools. The different features are:

Runtime Overview

This depicts the different runtime components and how they interact.

Jenkins

There are two different pipelines in Jenkins, the nightly pipeline and the Terrier(CI) pipeline.

Nightly Pipeline

The nightly pipeline is responsible for gathering metrics on the production-ready system. It executes several stages and sends the results for each stage to the performance storage service.

CI Pipeline

The CI pipeline has several stages that test whether the code is safe to merge into the master branch. It runs unit tests, E2E tests, and performance tests. The performance test results are sent to the performance storage service to allow comparisons between PR branch performance and master branch performance.

Performance Storage Service

The performance storage service validates and parses the data. It then stores the data in TimescaleDB.

Performance Storage Service Module View

This is the complete module dependency diagram for the performance storage service. For easier to read diagrams see the module views in each feature's architecture page.

Timescale Database

This is the main datastore for test results and metrics.

Grafana

Grafana queries the database and displays visualization dashboards of the results.

Github

The performance storage service interacts with Github through the Github API and through an events hook via a Github bot.

Github API

The performance storage service creates pull request check runs (statuses) via the Github REST API.

Github Bot

The Github bot also called a Github app is a configuration stored on Github. It dictates where events are sent and which events to subscribe to. These events include when a PR is opened, closed, or when the CI posts a status for a PR.

Clone this wiki locally