{"id":20206593,"url":"https://github.com/shresth72/distributed_systems_jepsen","last_synced_at":"2025-03-03T09:43:53.298Z","repository":{"id":233285687,"uuid":"786451171","full_name":"Shresth72/distributed_systems_jepsen","owner":"Shresth72","description":"Distributed System Testing based on Jepsen ","archived":false,"fork":false,"pushed_at":"2024-05-18T09:09:01.000Z","size":6459,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-18T10:22:40.088Z","etag":null,"topics":["distributed-systems","nodes","payload-generation","rust","state-machine","stdio-stream","testing"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Shresth72.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}},"created_at":"2024-04-14T14:03:09.000Z","updated_at":"2024-05-18T10:22:42.112Z","dependencies_parsed_at":"2024-04-23T11:42:52.282Z","dependency_job_id":"2c83c5eb-35ca-4f72-81bf-ffc0891f5f84","html_url":"https://github.com/Shresth72/distributed_systems_jepsen","commit_stats":null,"previous_names":["shresth72/jepsen_disttributed_systems_node","shresth72/distributed_systems_jepsen"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shresth72%2Fdistributed_systems_jepsen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shresth72%2Fdistributed_systems_jepsen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shresth72%2Fdistributed_systems_jepsen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shresth72%2Fdistributed_systems_jepsen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shresth72","download_url":"https://codeload.github.com/Shresth72/distributed_systems_jepsen/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241644542,"owners_count":19996177,"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":["distributed-systems","nodes","payload-generation","rust","state-machine","stdio-stream","testing"],"created_at":"2024-11-14T05:25:03.311Z","updated_at":"2025-03-03T09:43:53.276Z","avatar_url":"https://github.com/Shresth72.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"\"\u003eJepsen Based Distributed Systems Implementation\u003c/h1\u003e\n\u003c!--\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\" rel=\"noopener\"\u003e\n \u003cimg width=200px height=200px src=\"https://i.imgur.com/6wj0hh6.jpg\" alt=\"Project logo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![Status](https://img.shields.io/badge/status-active-success.svg)]()\n[![GitHub Issues](https://img.shields.io/github/issues/Shresth72/distributed_systems_jepsen)](https://github.com/Shresth72/distributed_systems_jepsen)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/Shresth72/distributed_systems_jepsen)](https://github.com/kylelobo/The-Documentation-Compendium/pulls)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE)\n\n\u003c/div\u003e\n--\u003e\n\n\u003cp align=\"\"\u003e\nThis is a Node implementation for a Distributed System based on \u003ca href=\"https://jepsen.io/\"\u003eJepsen\u003c/a\u003e, along with testing for each part.\n    \u003cbr\u003e \n\u003c/p\u003e\n\n\u003c!--\n## 📝 Table of Contents\n\n- [About](#about)\n- [Getting Started](#getting_started)\n- [Deployment](#deployment)\n- [Usage](#usage)\n- [Built Using](#built_using)\n- [TODO](../TODO.md)\n- [Contributing](../CONTRIBUTING.md)\n- [Authors](#authors)\n- [Acknowledgments](#acknowledgement)\n\n--\u003e\n\n### About \u003ca name = \"about\"\u003e\u003c/a\u003e\n\nAn implementation of challenges on the [fly.io](https://fly.io/dist-sys/1/), which is built on Jepsen. Nodes for Distributed Systems are built in Rust binaries, that accepts failures and verification requests from the Maelstrom tester.\n\n\u003c!-- ### 🏁 Getting Started \u003ca name = \"getting_started\"\u003e\u003c/a\u003e --\u003e\n\u003c!----\u003e\n\u003c!-- These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See [deployment](#deployment) for notes on how to deploy the project on a live system. --\u003e\n\n### Prerequisites\n\nCurrently, the testing is entirely handeled by the Maelstrom platform written in Clojure, so install the prerequisites required for using it. (Working on building the testing platform for the same)\n\n##### Install OpenJDK\n\n#### Ubuntu: 20.04, 22.04\n\n```bash\nsudo apt-get install openjdk-17-jdk\n```\n\n#### Arch\n\n```bash\nsudo pacman -sS java | grep jre\n```\n\n---\n\n##### Or Install with Brew along with Graphviz and Gnuplot\n\n```bash\nbrew install openjdk graphviz gnuplot\n```\n\n##### Download and unpack the Maelstrom tarball file\n\n```bash\nwget https://github.com/jepsen-io/maelstrom/releases/download/v0.2.3/maelstrom.tar.bz2\n\ntar -xvjf maelstrom.tar.bz2\n```\n\n## 🔧 Running the tests \u003ca name = \"tests\"\u003e\u003c/a\u003e\n\nThere are 6 challenges that can be tested with the Maelstrom tester.\n\n### Echo Test\n\n```\n~/maelstrom/maelstrom test -w echo --bin target/debug/echo --node-count 1 --time-limit 10\n```\n\n### Unique ID Generation Test\n\n```\n~/maelstrom/maelstrom test -w unique-ids --bin target/debug/unique-ids --time-limit 30 --rate 1000 --node-count 3 --availability total --nemesis partition\n```\n\n### Node Broadcast Test\n\nIncrease the node count for Multi Node Broadcast testing.\n\n```\n~/maelstrom/maelstrom test -w broadcast --bin target/debug/broadcast --node-count 1 --time-limit 20 --rate 10\n```\n\n### Grow Only Counter Test\n\nThe Grow Counter is available globally using either the Maelstrom Api or the Udp Server implemented in a binary file. Maelstrom Api one is available in Go, so use the implementation.\n\n```\ncargo run --bin gcounter_server\n\n~/maelstrom/maelstrom test -w g-counter --bin target/debug/grow_counter --node-count 3 --rate 100 --time-limit 20 --nemesis partition\n```\n\n### Node Logs Test\n\nThe Logger is also available with the Maelstrom Api in Go. Increase the Node count for Multi Node Log Testing.\n\n```\ncargo run --bin log_server\n\n~/maelstrom/maelstrom test -w kafka --bin target/debug/logs_global --node-count 1 --concurrency 2n --time-limit 20 --rate 1000\n```\n\n\u003c!-- ## 🎈 Importance\u003ca name=\"usage\"\u003e\u003c/a\u003e --\u003e\n\u003c!----\u003e\n\u003c!-- adding.. --\u003e\n\n## ⛏️ Built Using \u003ca name = \"built_using\"\u003e\u003c/a\u003e\n\n- [Rust](https://www.rust-lang.org/)\n- [Tokio](https://tokio.rs/) for the UDP Key Value Store Server\n- [Maelstrom](https://github.com/jepsen-io/maelstrom) for Testing\n\n## Acknowledgements \u003ca name = \"acknowledgement\"\u003e\u003c/a\u003e\n\nGo follow him now, the best rust guy\n\n- # John Gjenset - [Johnhoo](https://www.youtube.com/@jonhoo)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshresth72%2Fdistributed_systems_jepsen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshresth72%2Fdistributed_systems_jepsen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshresth72%2Fdistributed_systems_jepsen/lists"}