daml/ledger-service/http-json-perf
Stephen Compall 4e712a01a0
add oracle option for json-api perf runner (#9492)
* add oracle option to http-json-perf-binary-ee

* add oracle path to perf Main's JDBC bracket

* adapt to availableJdbcDriverNames; missing deps

* add changelog

CHANGELOG_BEGIN
- [JSON-API Perf] ``--query-store-index=postgres`` must be passed
  to select PostgreSQL query store performance testing; ``true``
  and ``yes`` are no longer supported.
  See `issue #9492 <https://github.com/digital-asset/daml/pull/9492>`__.
CHANGELOG_END
2021-04-27 08:58:44 -04:00
..
release JSON API perf test main that starts sandbox and json-api services (#7283) 2020-08-31 22:55:01 +00:00
src/main add oracle option for json-api perf runner (#9492) 2021-04-27 08:58:44 -04:00
BUILD.bazel add oracle option for json-api perf runner (#9492) 2021-04-27 08:58:44 -04:00
README.md Daml case and logo (#8433) 2021-01-08 12:50:15 +00:00

1. Gatling Scenarios

1.1. Prerequisites

All current Gatling scenarios require quickstart-model.dar with IOU example. You can build one using:

bazel build //docs:quickstart-model
ls "${PWD}/bazel-bin/docs/quickstart-model.dar"

1.2. List of Scenarios

Gatling scenarios extend from io.gatling.core.scenario.Simulation:

  • com.daml.http.perf.scenario.CreateCommand
  • com.daml.http.perf.scenario.ExerciseCommand
  • com.daml.http.perf.scenario.CreateAndExerciseCommand
  • com.daml.http.perf.scenario.AsyncQueryConstantAcs
  • com.daml.http.perf.scenario.SyncQueryConstantAcs
  • com.daml.http.perf.scenario.SyncQueryNewAcs
  • com.daml.http.perf.scenario.SyncQueryVariableAcs

2. Running Gatling Scenarios from Bazel

2.2. Help

$ bazel run //ledger-service/http-json-perf:http-json-perf-binary -- --help

2.2. Example

$ bazel run //ledger-service/http-json-perf:http-json-perf-binary -- \
--scenario=com.daml.http.perf.scenario.CreateCommand \
--dars="${PWD}/bazel-bin/docs/quickstart-model.dar" \
--reports-dir=/home/leos/tmp/results/ \
--jwt="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2RhbWwuY29tL2xlZGdlci1hcGkiOnsibGVkZ2VySWQiOiJNeUxlZGdlciIsImFwcGxpY2F0aW9uSWQiOiJmb29iYXIiLCJhY3RBcyI6WyJBbGljZSJdfX0.VdDI96mw5hrfM5ZNxLyetSVwcD7XtLT4dIdHIOa9lcU"

3. Running Gatling Scenarios Manually

The following instructions tested on Linux but should also work on macOs.

3.1. Install Gatling (open-source load testing solution)

3.2. Create quickstart Daml project

$ daml new quickstart-java --template quickstart-java
$ cd quickstart-java/
$ daml build

3.3. Start Sandbox with quickstart DAR

Ledger ID MyLedger is important, it is currently hardcoded in the com.daml.http.perf.scenario.SimulationConfig. See aliceJwt.

$ daml sandbox --ledgerid MyLedger ./.daml/dist/quickstart-0.0.1.dar

3.4. Start JSON API

daml json-api  --ledger-host=localhost --ledger-port=6865 --http-port=7575 --package-reload-interval 5h --allow-insecure-tokens

3.5. Run Gatling scenario

$ <GATLING_HOME>/bin/gatling.sh --simulations-folder=<DAML_PROJECT_HOME>/ledger-service/http-json-perf/src/main/scala/com/daml/http/perf/scenario --simulation=com.daml.http.perf.scenario.CreateCommand

Where:

  • <GATLING_HOME> -- path to the Gatling directory
  • <DAML_PROJECT_HOME> -- path to the Daml Repository on the local disk
  • --simulation=com.daml.http.perf.scenario.CreateCommand -- full class name of the scenario from the --simulations-folder