Skip to content
This repository has been archived by the owner on Jan 23, 2024. It is now read-only.

Thesis: Translation of rqa-definitions to k6 loadtest configurations with the help of domain-architecture-mappings

Notifications You must be signed in to change notification settings

dqualizer/loadtest-translator-prototype

Repository files navigation

Deprecated

Contents of this repository have been moved to the dqualizer components. This project is not maintained any longer.

Loadtest Translator Prototype (Bachelor Thesis)


Summary

This prototype demonstrates how it´s possible to translate a subject modeling with the help of an architecture mapping to a load test configuration. Additionally, the test configuration will be turned into k6 scripts, which will be executed. The test results will be exported to an InfluxDB and can be viewed in Grafana.

The prototype consists of the following modules:

  • ddd-autohaus: A DDD-environment to create an architecture mapping for and to run load tests on (forked from domain-driven-design-werkstatt by Matthias Eschold).

  • leasingninja: A foreign DDD-environment to create an architecture mapping for and to run load tests on, which is not fully implemented yet (forked from leasingjinja-java-boundedcontexts-domainmodel by Henning Schwentner).

  • openapi-adapter: A demonstrative component to adapt an OpenAPI-schema to a dqlang-API-Schema.

  • modeler-mock: A mocked component of dqanalyzer that is used to produce a modeling.

  • loadtest-translator: One part of dqtranslator that is responsible for combining the modeling with the mapping and produce a dqlang-loadtest-configuration from it.

  • k6-adapter: A component used to adapt a dqlang-loadtest-configuration into a configuration better suited for the load testing tool k6.

  • k6-configuration-runner: A component that transforms adapted loadtest configuration into k6 scripts. These scripts will be executed. The test results will be exported to InfluxDB(v2) and can be viewed in Grafana.


Following external tools have been used:

  • RabbitMQ: A message-broker used for communicating between different modules.

  • InfluxDB: A time series database used to store result metrics of load tests.

  • Grafana: A visualization tool used to visualize the load test results.


How to run

Start the whole application with ddd-autohaus as DDD-environment with: docker-compose up --build

Start the whole application with leasingninja as DDD-environment with: docker-compose -f .\docker-compose-evaluation.yml up --build

Inside docker-compose-evaluation.yml you can change the modeling-file for the modeler-mock.

To use the openapi-adapter, start ddd-autohaus-tactical-design-werkstattauftrag first and then openapi-adapter, both with mvn spring-boot:run


Output

In the console you can see log messages, which will show you information about the current state of the prototype.

Additionally, inside the docker-output folder all created k6-scripts as well as the console output of k6 are saved. The k6-scripts are saved as js-files. The k6-console output is saved in txt-files. For every time a new loadtest starts or a loadtest is repeated, a new logging file will be used.


Component Overview

Overview of all components


dqlang schemas

You can find the schemas for dqlang descriptions in the folder dqlang-schemas.

It contains the schema for the modeling, the mapping, the loadtest configuration as well as the api-schema.


Further information

InfluxDB (v2)

URL: localhost:8086 Default login: username > k6, password > telegraf

You can change the login in the .env file. The organization, bucket and token are configured here, too.


Grafana

URL: localhost:3030 Default login: username > admin, password > admin

You can view the test results in the dashboard: Load_Test_Results

About

Thesis: Translation of rqa-definitions to k6 loadtest configurations with the help of domain-architecture-mappings

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published