{"id":18485268,"url":"https://github.com/softinstigate/restheart-perftest","last_synced_at":"2026-01-28T05:21:14.414Z","repository":{"id":87382243,"uuid":"191322698","full_name":"SoftInstigate/restheart-perftest","owner":"SoftInstigate","description":"Performance test for the RESTHeart Platform","archived":false,"fork":false,"pushed_at":"2019-06-11T12:50:52.000Z","size":55798,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-03T13:14:41.276Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Batchfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SoftInstigate.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-11T07:58:55.000Z","updated_at":"2019-06-11T12:50:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"54d9e36c-edcb-4e30-80f3-2aec37d17d58","html_url":"https://github.com/SoftInstigate/restheart-perftest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SoftInstigate/restheart-perftest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftInstigate%2Frestheart-perftest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftInstigate%2Frestheart-perftest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftInstigate%2Frestheart-perftest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftInstigate%2Frestheart-perftest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoftInstigate","download_url":"https://codeload.github.com/SoftInstigate/restheart-perftest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftInstigate%2Frestheart-perftest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28840088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T02:10:51.810Z","status":"ssl_error","status_checked_at":"2026-01-28T02:10:50.806Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T12:44:41.245Z","updated_at":"2026-01-28T05:21:14.399Z","avatar_url":"https://github.com/SoftInstigate.png","language":"Batchfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# RESTHeart Performance Tests\n\nThis repository contains all the stuff needed for perf-testing  ***RESTHeart PRO Change Streams*** feature by using *Gatling v2.3 Perf-Testing Tool*.\n\nRefer to [Gatling 2.3 official documentation](https://gatling.io/docs/2.3) for more informations. \n\n## ChangeStreamSimulation.scala\n\nProvided with Gatling v2.3 bundle, this test is divided into three main phases: \n\t\n **- First phase:** The given number of WebSocket clients (_1000 clients by default_) connects to the stream, listening for the first notification sent by RESTHeart. \n \n  **- Second phase:** After receiving the first notification, all clients starts listening for test notifications. (this phase is mandatory for setting a common start line for all testing session time results) \n  \n  **- Third phase:** Clients listens for all notifications pushed by RESTHeart while processing 3 notification-triggering POST requests per second (for a total of 180 requests by default). *Clients will fail this check if they won't receive all notifications.*\n\n## Running tests into basic local environment\n\n 1. Clone this repository.\n 2. Refer to this [this page](https://gatling.io/docs/2.3/general/operations/) to configure your testing machine properly.\n 3. Get your up-and-running RESTHeart PRO instance [here](https://restheart.org/get).\n 4. Startup _RESTHeart_ enabling HTTP listener and [define a stream](https://restheart.org/learn/change-streams/)  into the targetted collection _(`/coll` by default)_ as follows: \n\t ```json\n\t\t\"streams\":[\t\n\t\t\t{\n\t\t\t\t\"stages\":[{\"_$match\":{\"fullDocument.name\":{\"_$var\":\"n\"}}}],\n\t\t\t\t\"uri\":\"changeStream\"\n\t\t\t}\n\t]\n\t```\n 5. Execute `./bin/gatling.sh`script from this project to launch the test tool. ***Gatling 2.3 needs JDK8 to run propertly.***\n 6. After simulation completes, watch out the test results at the logged report location on your local filesystem.\n\n\n## How to read simulation results\n\nGatling prints out an _html report_ at the end of each simulation under the `./results` path. \n\nTo get rid of this bunch of data, we suggest to consider the most meaningful ***Mean Response Time*** (MRT) of *Listen notifications* test report's section as a ChangeStream performance index.  \n\n## Customize Test Parameters\n\nIt's possible to change the test's input params by editing the starting section of `./user-files/simulations/ChangeStreamSimulation.scala`\n\n```scala\nclass ChangeStreamSimulation extends Simulation {\n\n  // Test Parameters\n  // NOTE: numberOfDocumentsPosted / postPhaseDuration = POSTs RPS (3 RPS by default)\n\n  val baseUrl = \"localhost:8080\";\n  val numberOfClients = 1000;\n  val numberOfPostedDocuments = 180;\n  val postPhaseDuration = 60\n  \n  ...\n  \n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftinstigate%2Frestheart-perftest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftinstigate%2Frestheart-perftest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftinstigate%2Frestheart-perftest/lists"}