{"id":18724354,"url":"https://github.com/mock-server/mockserver-performance-test","last_synced_at":"2025-04-12T15:31:51.565Z","repository":{"id":55133905,"uuid":"118235896","full_name":"mock-server/mockserver-performance-test","owner":"mock-server","description":"Performance Test Suite for MockServer http://mock-server.com","archived":false,"fork":false,"pushed_at":"2020-07-20T05:47:57.000Z","size":39,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-14T12:08:03.816Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mock-server.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-20T11:17:43.000Z","updated_at":"2023-03-10T11:59:49.000Z","dependencies_parsed_at":"2022-08-14T13:00:40.215Z","dependency_job_id":null,"html_url":"https://github.com/mock-server/mockserver-performance-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mock-server%2Fmockserver-performance-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mock-server%2Fmockserver-performance-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mock-server%2Fmockserver-performance-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mock-server%2Fmockserver-performance-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mock-server","download_url":"https://codeload.github.com/mock-server/mockserver-performance-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248589684,"owners_count":21129666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-07T14:06:11.722Z","updated_at":"2025-04-12T15:31:51.211Z","avatar_url":"https://github.com/mock-server.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mockserver-performance-test\nPerformance Test Suite for MockServer http://mock-server.com\n\nCurrent MockServer results are (all figures are in **milliseconds**):\n\n|   req/s  |   reqs | Avg | Min | Max | Median | 50% | 66% | 75% | 80% | 90% | 95% | 98% |99% | 100%\n:----------|:-------|:----|:----|:----|:-------|:----|:----|:----|:----|:----|:----|:----|:---|:----\n|   50     |   2476 |   2 |   1 |  12 |      2 |   2 |   3 |   3 |   3 |   3 |   4 |   5 |  5 |   12\n|   99     |   4891 |   4 |   0 |  18 |      3 |   3 |   4 |   5 |   5 |   6 |   7 |   8 |  9 |   18\n|  496     |  22271 |   7 |   0 |  65 |      6 |   6 |   7 |   9 |  10 |  12 |  15 |  19 | 22 |   65\t\n|  995     | 106830 |  20 |   0 | 236 |      6 |   6 |  13 |  19 |  25 |  57 |  97 | 140 |160 |  240\n| 1243     | 135671 | 113 |   0 | 434 |    110 | 110 | 140 | 160 | 170 | 210 | 250 | 290 |300 |  430\n\nThese were recorded with 4 expectations in MockServer where the request matched the 3rd expectation.\n\nIn summary, MockServer can easily handle **50 TPS with a p99 of 5ms** and can scale up to **1250 TPS with a p99 of 300ms**.\n\n# Notes:\n\nCan run from the command line as follows:\n\nlocust --loglevel=DEBUG --headless --only-summary -u 600 -r 15 -t 180 --host=http://127.0.0.1:1080\n\n# Apache Benchmark\n\n```bash\njava -Xmx500m -Dmockserver.logLevel=WARN \\\n-Dmockserver.disableSystemOut=true \\\n-jar ~/.m2/repository/org/mock-server/mockserver-netty/5.11.1-SNAPSHOT/mockserver-netty-5.11.1-SNAPSHOT-jar-with-dependencies.jar \\\n-serverPort 1080 \u0026\n```\n\nApache Benchmark doesn't open a separate connection for each user so produces much faster performances\n\n# create expectations\n\nab -u expectations.json -T application/json -k -n 100 -c 10 http://127.0.0.1:1080/mockserver/expectation\n\n### RELEASE 5.11.0\n\n```bash\nThis is ApacheBench, Version 2.3 \u003c$Revision: 1843412 $\u003e\nCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\nLicensed to The Apache Software Foundation, http://www.apache.org/\n\nBenchmarking 127.0.0.1 (be patient).....done\n\n\nServer Software:        \nServer Hostname:        127.0.0.1\nServer Port:            1080\n\nDocument Path:          /mockserver/expectation\nDocument Length:        1291 bytes\n\nConcurrency Level:      10\nTime taken for tests:   0.200 seconds\nComplete requests:      100\nFailed requests:        0\nKeep-Alive requests:    100\nTotal transferred:      142500 bytes\nTotal body sent:        109100\nHTML transferred:       129100 bytes\nRequests per second:    500.55 [#/sec] (mean)\nTime per request:       19.978 [ms] (mean)\nTime per request:       1.998 [ms] (mean, across all concurrent requests)\nTransfer rate:          696.56 [Kbytes/sec] received\n                        533.30 kb/s sent\n                        1229.86 kb/s total\n\nConnection Times (ms)\n              min  mean[+/-sd] median   max\nConnect:        0    0   0.1      0       1\nProcessing:    12   18   4.0     18      28\nWaiting:       12   18   4.0     18      28\nTotal:         12   18   4.1     18      28\n\nPercentage of the requests served within a certain time (ms)\n  50%     18\n  66%     19\n  75%     20\n  80%     23\n  90%     25\n  95%     27\n  98%     28\n  99%     28\n 100%     28 (longest request)\n```\n\n### SNAPSHOT 5.11.1\n\n```bash\nab -u expectations.json -T application/json -k -n 100 -c 10 http://127.0.0.1:1080/mockserver/expectation\nThis is ApacheBench, Version 2.3 \u003c$Revision: 1843412 $\u003e\nCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\nLicensed to The Apache Software Foundation, http://www.apache.org/\n\nBenchmarking 127.0.0.1 (be patient).....done\n\n\nServer Software:        \nServer Hostname:        127.0.0.1\nServer Port:            1080\n\nDocument Path:          /mockserver/expectation\nDocument Length:        1291 bytes\n\nConcurrency Level:      10\nTime taken for tests:   0.197 seconds\nComplete requests:      100\nFailed requests:        0\nKeep-Alive requests:    100\nTotal transferred:      143400 bytes\nTotal body sent:        109100\nHTML transferred:       129100 bytes\nRequests per second:    507.75 [#/sec] (mean)\nTime per request:       19.695 [ms] (mean)\nTime per request:       1.969 [ms] (mean, across all concurrent requests)\nTransfer rate:          711.05 [Kbytes/sec] received\n                        540.97 kb/s sent\n                        1252.02 kb/s total\n\nConnection Times (ms)\n              min  mean[+/-sd] median   max\nConnect:        0    0   0.1      0       0\nProcessing:    13   18   1.6     18      23\nWaiting:       12   18   1.7     18      23\nTotal:         13   18   1.7     18      23\n\nPercentage of the requests served within a certain time (ms)\n  50%     18\n  66%     19\n  75%     19\n  80%     19\n  90%     21\n  95%     21\n  98%     23\n  99%     23\n 100%     23 (longest request)\n```\n\n# request matcher\n\nab -k -n 100000 -c 10 http://127.0.0.1:1080/simple\n\n### RELEASE 5.11.0\n\n```bash\nab -k -n 100000 -c 10 http://127.0.0.1:1080/simple\nThis is ApacheBench, Version 2.3 \u003c$Revision: 1843412 $\u003e\nCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\nLicensed to The Apache Software Foundation, http://www.apache.org/\n\nBenchmarking 127.0.0.1 (be patient)\nCompleted 10000 requests\nCompleted 20000 requests\nCompleted 30000 requests\nCompleted 40000 requests\nCompleted 50000 requests\nCompleted 60000 requests\nCompleted 70000 requests\nCompleted 80000 requests\nCompleted 90000 requests\nCompleted 100000 requests\nFinished 100000 requests\n\n\nServer Software:        \nServer Hostname:        127.0.0.1\nServer Port:            1080\n\nDocument Path:          /simple\nDocument Length:        20 bytes\n\nConcurrency Level:      10\nTime taken for tests:   10.105 seconds\nComplete requests:      100000\nFailed requests:        0\nKeep-Alive requests:    100000\nTotal transferred:      8300000 bytes\nHTML transferred:       2000000 bytes\nRequests per second:    9895.85 [#/sec] (mean)\nTime per request:       1.011 [ms] (mean)\nTime per request:       0.101 [ms] (mean, across all concurrent requests)\nTransfer rate:          802.11 [Kbytes/sec] received\n\nConnection Times (ms)\n              min  mean[+/-sd] median   max\nConnect:        0    0   0.0      0       1\nProcessing:     0    1   1.1      1      23\nWaiting:        0    1   1.1      1      23\nTotal:          0    1   1.1      1      23\n\nPercentage of the requests served within a certain time (ms)\n  50%      1\n  66%      1\n  75%      1\n  80%      1\n  90%      1\n  95%      1\n  98%      1\n  99%      2\n 100%     23 (longest request)\n```\n\n### SNAPSHOT 5.11.1\n\n```bash\nab -k -n 100000 -c 10 http://127.0.0.1:1080/simple\nThis is ApacheBench, Version 2.3 \u003c$Revision: 1843412 $\u003e\nCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\nLicensed to The Apache Software Foundation, http://www.apache.org/\n\nBenchmarking 127.0.0.1 (be patient)\nCompleted 10000 requests\nCompleted 20000 requests\nCompleted 30000 requests\nCompleted 40000 requests\nCompleted 50000 requests\nCompleted 60000 requests\nCompleted 70000 requests\nCompleted 80000 requests\nCompleted 90000 requests\nCompleted 100000 requests\nFinished 100000 requests\n\n\nServer Software:        \nServer Hostname:        127.0.0.1\nServer Port:            1080\n\nDocument Path:          /simple\nDocument Length:        8 bytes\n\nConcurrency Level:      10\nTime taken for tests:   1.319 seconds\nComplete requests:      100000\nFailed requests:        0\nKeep-Alive requests:    100000\nTotal transferred:      11100000 bytes\nHTML transferred:       800000 bytes\nRequests per second:    75797.43 [#/sec] (mean)\nTime per request:       0.132 [ms] (mean)\nTime per request:       0.013 [ms] (mean, across all concurrent requests)\nTransfer rate:          8216.32 [Kbytes/sec] received\n\nConnection Times (ms)\n              min  mean[+/-sd] median   max\nConnect:        0    0   0.0      0       1\nProcessing:     0    0   0.1      0       4\nWaiting:        0    0   0.1      0       4\nTotal:          0    0   0.1      0       4\n\nPercentage of the requests served within a certain time (ms)\n  50%      0\n  66%      0\n  75%      0\n  80%      0\n  90%      0\n  95%      0\n  98%      0\n  99%      0\n 100%      4 (longest request)\n```\n\n```bash\nab -k -n 100000 -c 100 http://127.0.0.1:1080/simple\nThis is ApacheBench, Version 2.3 \u003c$Revision: 1843412 $\u003e\nCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\nLicensed to The Apache Software Foundation, http://www.apache.org/\n\nBenchmarking 127.0.0.1 (be patient)\nCompleted 10000 requests\nCompleted 20000 requests\nCompleted 30000 requests\nCompleted 40000 requests\nCompleted 50000 requests\nCompleted 60000 requests\nCompleted 70000 requests\nCompleted 80000 requests\nCompleted 90000 requests\nCompleted 100000 requests\nFinished 100000 requests\n\n\nServer Software:        \nServer Hostname:        127.0.0.1\nServer Port:            1080\n\nDocument Path:          /simple\nDocument Length:        8 bytes\n\nConcurrency Level:      100\nTime taken for tests:   1.077 seconds\nComplete requests:      100000\nFailed requests:        0\nKeep-Alive requests:    100000\nTotal transferred:      11100000 bytes\nHTML transferred:       800000 bytes\nRequests per second:    92864.82 [#/sec] (mean)\nTime per request:       1.077 [ms] (mean)\nTime per request:       0.011 [ms] (mean, across all concurrent requests)\nTransfer rate:          10066.40 [Kbytes/sec] received\n\nConnection Times (ms)\n              min  mean[+/-sd] median   max\nConnect:        0    0   0.1      0       6\nProcessing:     0    1   0.4      1       6\nWaiting:        0    1   0.4      1       6\nTotal:          0    1   0.4      1       8\n\nPercentage of the requests served within a certain time (ms)\n  50%      1\n  66%      1\n  75%      1\n  80%      1\n  90%      1\n  95%      2\n  98%      2\n  99%      2\n 100%      8 (longest request)\n```\n\n```bash\nab -k -n 100000 -c 250 http://127.0.0.1:1080/simple\nThis is ApacheBench, Version 2.3 \u003c$Revision: 1843412 $\u003e\nCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\nLicensed to The Apache Software Foundation, http://www.apache.org/\n\nBenchmarking 127.0.0.1 (be patient)\nCompleted 10000 requests\nCompleted 20000 requests\nCompleted 30000 requests\nCompleted 40000 requests\nCompleted 50000 requests\nCompleted 60000 requests\nCompleted 70000 requests\nCompleted 80000 requests\nCompleted 90000 requests\nCompleted 100000 requests\nFinished 100000 requests\n\n\nServer Software:        \nServer Hostname:        127.0.0.1\nServer Port:            1080\n\nDocument Path:          /simple\nDocument Length:        8 bytes\n\nConcurrency Level:      250\nTime taken for tests:   0.991 seconds\nComplete requests:      100000\nFailed requests:        0\nKeep-Alive requests:    100000\nTotal transferred:      11100000 bytes\nHTML transferred:       800000 bytes\nRequests per second:    100876.72 [#/sec] (mean)\nTime per request:       2.478 [ms] (mean)\nTime per request:       0.010 [ms] (mean, across all concurrent requests)\nTransfer rate:          10934.88 [Kbytes/sec] received\n\nConnection Times (ms)\n              min  mean[+/-sd] median   max\nConnect:        0    0   0.6      0      17\nProcessing:     0    2   0.8      2      17\nWaiting:        0    2   0.8      2       6\nTotal:          0    2   1.0      2      21\n\nPercentage of the requests served within a certain time (ms)\n  50%      2\n  66%      3\n  75%      3\n  80%      3\n  90%      4\n  95%      4\n  98%      4\n  99%      5\n 100%     21 (longest request)\n```\n\n```bash\nab -k -n 1000000 -c 500 http://127.0.0.1:1080/simple\nThis is ApacheBench, Version 2.3 \u003c$Revision: 1843412 $\u003e\nCopyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\nLicensed to The Apache Software Foundation, http://www.apache.org/\n\nBenchmarking 127.0.0.1 (be patient)\nCompleted 100000 requests\nCompleted 200000 requests\nCompleted 300000 requests\nCompleted 400000 requests\nCompleted 500000 requests\nCompleted 600000 requests\nCompleted 700000 requests\nCompleted 800000 requests\nCompleted 900000 requests\nCompleted 1000000 requests\nFinished 1000000 requests\n\n\nServer Software:        \nServer Hostname:        127.0.0.1\nServer Port:            1080\n\nDocument Path:          /simple\nDocument Length:        8 bytes\n\nConcurrency Level:      500\nTime taken for tests:   10.610 seconds\nComplete requests:      1000000\nFailed requests:        0\nKeep-Alive requests:    1000000\nTotal transferred:      111000000 bytes\nHTML transferred:       8000000 bytes\nRequests per second:    94250.15 [#/sec] (mean)\nTime per request:       5.305 [ms] (mean)\nTime per request:       0.011 [ms] (mean, across all concurrent requests)\nTransfer rate:          10216.57 [Kbytes/sec] received\n\nConnection Times (ms)\n              min  mean[+/-sd] median   max\nConnect:        0    0   0.9      0      62\nProcessing:     0    5   2.5      5      74\nWaiting:        0    5   2.5      5      74\nTotal:          0    5   2.6      5      74\n\nPercentage of the requests served within a certain time (ms)\n  50%      5\n  66%      5\n  75%      6\n  80%      6\n  90%      7\n  95%      7\n  98%      8\n  99%      9\n 100%     74 (longest request)\n```\n\n# AB Complex Expectation Test\n\njava -Xmx500m -Dmockserver.logLevel=WARN \\\n-Dmockserver.disableSystemOut=true \\\n-jar ~/.m2/repository/org/mock-server/mockserver-netty/5.11.1-SNAPSHOT/mockserver-netty-5.11.1-SNAPSHOT-jar-with-dependencies.jar \\\n-serverPort 1080 \u0026\n\ncurl -v -k -X PUT https://localhost:1080/mockserver/expectation -H \"Content-Type: application/json; charset=utf-8\" --data '{\n    \"httpRequest\": {\n        \"method\": \"GET\",\n        \"path\": \"/simple\",\n        \"headers\": {\n            \"one\": [\"one\"],\n            \"two\": [\"two\"],\n            \"three\": [\"three\"],\n            \"four\": [\"four\"],\n            \"five\": [\"five\"]\n        },\n        \"queryStringParameters\": {\n            \"one\": [\"one\"],\n            \"two\": [\"two\"],\n            \"three\": [\"three\"],\n            \"four\": [\"four\"],\n            \"five\": [\"five\"]\n        }\n    },\n    \"httpResponse\": {\n        \"body\": {\n            \"type\": \"STRING\",\n            \"string\": \"سلام\",\n            \"contentType\": \"text/plain; charset=utf-8\"\n         }\n    },\n    \"times\": {\n        \"unlimited\": true\n    }\n}'\n\nab -k -n 100 -c 10 -H \"one:one\" -H \"two:two\" -H \"three:three\" -H \"four:four\" -H \"five:five\" http://127.0.0.1:1080/simple?one=one\u0026two=two\u0026three=three\u0026four=four\u0026five=five\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmock-server%2Fmockserver-performance-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmock-server%2Fmockserver-performance-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmock-server%2Fmockserver-performance-test/lists"}