{"id":34201352,"url":"https://github.com/vennekilde/go-mades-bench","last_synced_at":"2026-02-17T13:01:09.310Z","repository":{"id":64300568,"uuid":"502714489","full_name":"vennekilde/go-mades-bench","owner":"vennekilde","description":"Benchmark tool for testing message throughput for applications implementing the Energy Communication Platform (ECP) variant of the MADES Communication Standard","archived":false,"fork":false,"pushed_at":"2025-09-30T21:48:11.000Z","size":328,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-12-18T21:18:05.272Z","etag":null,"topics":["ecp","ecp4","edx","mades"],"latest_commit_sha":null,"homepage":"","language":"Go","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/vennekilde.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-12T19:56:16.000Z","updated_at":"2024-10-07T12:24:02.000Z","dependencies_parsed_at":"2023-01-15T09:15:59.505Z","dependency_job_id":"f6514365-162a-4993-aed6-1944d206b524","html_url":"https://github.com/vennekilde/go-mades-bench","commit_stats":{"total_commits":62,"total_committers":3,"mean_commits":"20.666666666666668","dds":"0.25806451612903225","last_synced_commit":"a6ef3cdc45bf04e26b5a03874c3df406e39b46ad"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vennekilde/go-mades-bench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vennekilde%2Fgo-mades-bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vennekilde%2Fgo-mades-bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vennekilde%2Fgo-mades-bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vennekilde%2Fgo-mades-bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vennekilde","download_url":"https://codeload.github.com/vennekilde/go-mades-bench/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vennekilde%2Fgo-mades-bench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29545294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T13:00:00.370Z","status":"ssl_error","status_checked_at":"2026-02-17T12:57:14.072Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["ecp","ecp4","edx","mades"],"created_at":"2025-12-15T18:32:17.343Z","updated_at":"2026-02-17T13:01:09.301Z","avatar_url":"https://github.com/vennekilde.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Mades Bench\n\nThis is a benchmark tool for testing message throughput for applications implementing the [Energy Communication Platform (ECP)](https://www.entsoe.eu/ecco-sp/info/) variant of the [MADES Communication Standard](https://eepublicdownloads.entsoe.eu/clean-documents/EDI/Library/depreciated/503_mades-v1r1.pdf)\n\nThe tool uses the AMQP Business Application (BA) API in order to send \u0026 receive messages and measures the timestamps of each AMQP event (create, send, inbox, delivered, received)\n\n## Installation\n\nInstall using `go install` or download source code and build it on your machine by following the `Building` section\n\n```bash\ngo install github.com/vennekilde/go-mades-bench@latest\n```\n\n## Building\n\n``` bash\n# Native OS build\nmake build\n# Linux and Windows build\nmake build_all\n# Linux  build\nmake build_linux\n# Windows build\nmake build_windows\n```\n\n## Docker \n\nIf you need to run the CLI tool in a docker container, you can run the docker image using the following commands:\n\n```bash\n# Launch container and name it go-mades-bench\ndocker run -d --name go-mades-bench ghcr.io/vennekilde/go-mades-bench:v1.0.0\n# Create a shell within the newly launched container\ndocker exec -it go-mades-bench /bin/bash\n```\n\n## Usage\n\n```\n\u003e go-mades-bench -h\n\nUsage of go-mades-bench:\n  -durable\n        Should AMQP messages sent to the API broker be persisted (default true)\n  -goroutines uint\n        Number of go routines to use when sending (default \"number of CPU vCores\")\n  -inbox string\n        inbox queue (default \"ecp.endpoint.inbox\")\n  -inbox-addr string\n        Socket address to reach the internal broker (default \"amqp://localhost:5672\")\n  -inbox-pass string\n        Inbox broker username (default \"password\")\n  -inbox-user string\n        Inbox broker password (default \"endpoint\")\n  -max-in-transit uint\n        Max messages allowed in transit. max-in-transit \u003c= 0 means unlimited (default 1000)\n  -message-type string\n        Message type to send messages with (default \"TEST-MESSAGE\")\n  -mode string\n        mode (endpoint, toolbox, amqp, tracing) (default \"endpoint\")\n  -n uint\n        Number of messages to send (default 10000)\n  -outbox string\n        outbox queue (default \"ecp.endpoint.outbox\")\n  -outbox-addr string\n        Socket address to reach the internal broker (default \"amqp://localhost:5672\")\n  -outbox-pass string\n        Outbox broker password (default \"password\")\n  -outbox-reply string\n        outbox reply queue (default \"ecp.endpoint.outbox.reply\")\n  -outbox-send-event string\n        send event queue (default \"ecp.endpoint.send.event\")\n  -outbox-user string\n        Outbox broker username (default \"endpoint\")\n  -receiver string\n        Receiver Component Code (default \"ecp-endpoint\")\n  -size uint\n        Incompressible payload size to generate (default 1000000)\n  -v    Print all message events\n```\n\n## Example\n\nBenchmark example where 10000 messages are sent with a size of 3kb\n\n``` log\n\u003e go-mades-bench -n=10000 -size=3000 -receiver=ecp-endpoint\n\n...\n2022/11/22 11:42:26 Final Report\n2022/11/22 11:42:26 ==============================================================================\n2022/11/22 11:42:26 Started at       : 2022-11-22T11:16:58+01:00\n2022/11/22 11:42:26 Ended at         : 2022-11-22T11:42:25+01:00\n2022/11/22 11:42:26 Duration         : 25m27.035791317s\n2022/11/22 11:42:26 Msg size         : 3000 bytes\n2022/11/22 11:42:26 \n2022/11/22 11:42:26 === Statistics\n2022/11/22 11:42:26 Sent to outbox   : 10.817 msgs/s\t ~0.032 mb/s\t 10000/10000 msgs\t duration: 15m24.466s\t -- not applicable --\n2022/11/22 11:42:26 Sent to broker   : 10.815 msgs/s\t ~0.032 mb/s\t 10000/10000 msgs\t duration: 15m24.681s\t flight time: 57.590 (avg) 21.925 (median)\n2022/11/22 11:42:26 Received in inbox: 7.321 msgs/s\t ~0.022 mb/s\t 10000/10000 msgs\t duration: 22m45.945s\t flight time: 339.900 (avg) 380.086 (median)\n2022/11/22 11:42:26 Delivery Event   : 6.549 msgs/s\t ~0.001 mb/s\t 10000/10000 msgs\t duration: 25m26.948s\t flight time: 650.113s (avg) 693.767s (median)\n2022/11/22 11:42:26 Received Event   : 6.549 msgs/s\t ~0.001 mb/s\t 10000/10000 msgs\t duration: 25m27.036s\t flight time: 650.170s (avg) 692.669s (median)\n2022/11/22 11:42:26 ==============================================================================\n```\n\n## Example with 100 million messages\n\nExample of final report after sending 100 million messages with a size of 3kb and a maximum of 5000 messages allowed to be unacknowledged to prevent flooding the internal broker, as the benchmark can push messages way faster, than the endpoint can process them.\n\nNote: this test was done using a custom implementation of MADES/ECP, as sending 100 million messages using ECP, would take months and careful tuning to even succeed in running to completion.\n\n``` log\n\u003e go-mades-bench -n=100000000 -size=3000 -max-in-transit=5000 -receiver=ecp-endpoint\n\n...\n2022/11/22 09:59:40 Final Report\n2022/11/22 09:59:40 ==============================================================================\n2022/11/22 09:59:40 Started at       : 2022-11-21T16:13:25+01:00\n2022/11/22 09:59:40 Ended at         : 2022-11-22T09:59:39+01:00\n2022/11/22 09:59:40 Duration         : 17h46m13.539112429s\n2022/11/22 09:59:40 Msg size         : 3000 bytes\n2022/11/22 09:59:40 \n2022/11/22 09:59:40 === Statistics\n2022/11/22 09:59:40 Sent to outbox   : 1563.177 msgs/s\t ~4.690 mb/s\t 100000000/100000000 msgs\t duration: 17h46m12.269s\t -- not applicable --\n2022/11/22 09:59:40 Sent to broker   : 1563.177 msgs/s\t ~4.690 mb/s\t 100000000/100000000 msgs\t duration: 17h46m12.272s\t flight time: 0.020 (avg) 0.795 (median)\n2022/11/22 09:59:40 Received in inbox: 1563.152 msgs/s\t ~4.689 mb/s\t 100000000/100000000 msgs\t duration: 17h46m13.292s\t flight time: 1.611 (avg) 1.578 (median)\n2022/11/22 09:59:40 Delivery Event   : 1563.146 msgs/s\t ~0.156 mb/s\t 100000000/100000000 msgs\t duration: 17h46m13.539s\t flight time: 3.192s (avg) 3.136s (median)\n2022/11/22 09:59:40 Received Event   : 1563.146 msgs/s\t ~0.156 mb/s\t 100000000/100000000 msgs\t duration: 17h46m13.539s\t flight time: 3.208s (avg) 3.144s (median)\n2022/11/22 09:59:40 ==============================================================================\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvennekilde%2Fgo-mades-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvennekilde%2Fgo-mades-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvennekilde%2Fgo-mades-bench/lists"}