ebeb15460c
Asciidoc may fail to render link attributes for external links supposed to open in a new window correctly. This change adds :linkattrs: to the beginning of such files to force parsing link attributes correctly. Bug: Issue 12068 Change-Id: If18be60de646ff78f672239dd4fa435fd4fd92ab
94 lines
2.4 KiB
Plaintext
94 lines
2.4 KiB
Plaintext
:linkattrs:
|
|
= Gerrit Code Review - End to end load tests
|
|
|
|
This document provides a description of a Gerrit load test scenario implemented using the link:http://gatling.io[`Gatling`] framework.
|
|
|
|
Similar scenarios have been successfully used to compare performance of different Gerrit versions or study the Gerrit response
|
|
under different load profiles.
|
|
|
|
== What is Gatling?
|
|
|
|
Gatling is a load testing tool which provides out of the box support for the HTTP protocol. Documentation on how to write an
|
|
HTTP load test can be found link:https://gatling.io/docs/current/http/http_protocol/[`here`,role=external,window=_blank].
|
|
|
|
However, in the scenario we are proposing, we are leveraging the link:https://github.com/GerritForge/gatling-git[`Gatling Git extension`,role=external,window=_blank]
|
|
to run tests at Git protocol level.
|
|
|
|
Gatling is written in Scala, but the abstraction provided by the Gatling DSL makes the scenarios implementation easy even without any Scala knowledge.
|
|
|
|
Examples of scenarios can be found in the `e2e-tests` directory.
|
|
|
|
=== How to run the load tests
|
|
|
|
==== Prerequisites
|
|
|
|
* link:https://www.scala-lang.org/download/[`Scala 2.12`]
|
|
|
|
==== How to build
|
|
|
|
----
|
|
sbt compile
|
|
----
|
|
|
|
==== Setup
|
|
|
|
If you are running SSH commands the private keys of the users used for testing need to go in `/tmp/ssh-keys`.
|
|
The keys need to be generated this way (JSch won't validate them [otherwise,role=external,window=_blank](https://stackoverflow.com/questions/53134212/invalid-privatekey-when-using-jsch):
|
|
|
|
----
|
|
ssh-keygen -m PEM -t rsa -C "test@mail.com" -f /tmp/ssh-keys/id_rsa
|
|
----
|
|
|
|
*NOTE*: Don't forget to add the public keys for the testing user(s) to your git server
|
|
|
|
==== Input file
|
|
|
|
The ReplayRecordsScenario is fed by the data coming from the [src/test/resources/data/requests.json](/src/test/resources/data/requests.json) file.
|
|
Such file contains the commands and repo used during the load test.
|
|
Below an example:
|
|
|
|
----
|
|
[
|
|
{
|
|
"url": "ssh://admin@localhost:29418/loadtest-repo.git",
|
|
"cmd": "clone"
|
|
},
|
|
{
|
|
"url": "http://localhost:8080/loadtest-repo.git",
|
|
"cmd": "fetch"
|
|
}
|
|
]
|
|
----
|
|
|
|
Valid commands are:
|
|
* fetch
|
|
* pull
|
|
* push
|
|
* clone
|
|
|
|
==== How to use the framework
|
|
|
|
Run all tests:
|
|
----
|
|
sbt "gatling:test"
|
|
----
|
|
|
|
Run a single test:
|
|
----
|
|
sbt "gatling:testOnly com.google.gerrit.scenarios.ReplayRecordsFromFeederScenario"
|
|
----
|
|
|
|
Generate the last report:
|
|
----
|
|
sbt "gatling:lastReport"
|
|
----
|
|
|
|
GERRIT
|
|
------
|
|
Part of link:index.html[Gerrit Code Review]
|
|
|
|
SEARCHBOX
|
|
---------
|
|
|
|
[scala]:
|