Comments (3)
This issue, along with apache/opendal#1871, provides a great example of how open source works.
madsim
builds a deterministic simulator for distributed systemsopendal
will addmadsim
support so that all applications based onopendal
can benefit from the deterministic simulator for storage.- Existing application already uses
madsim
andopendal
can extend their simulator to all storage without mocking all SDKs
Win, win, win!
from madsim.
Hi! Thank you for your interest in this project. 😄
To build a simulator of your service on madsim, you don't need to copy all existing code. Instead, you will be going to create a mock of all public APIs on top of the madsim infra. Take OpenDAL as an example. I just had a quick look of the opendal docs. It says that it is an abstraction layer over all storage services. So you only need to build a simulator that matchs the semantic of the abstraction layer (Operator
and Object
), and don't have to build for each service implementations. The simulator will consist of a client side and a server side. The server should emulate your service in a single-thread manner (etcd example), and it should be exposed using madsim's network API (etcd example), so that we can access it later from the client side (etcd example). All of them could be put in your crate with the #[cfg(madsim)]
condition, so that when the cfg is not enabled, this crate still behaves the same as original.
For more details, you can refer to our simulation code of etcd-client, rdkafka, and aws-sdk-s3. You are also welcome to direct message me later. Looking forward to seeing madsim-opendal soon. 😜
from madsim.
This task has been started in apache/opendal#2006
from madsim.
Related Issues (20)
- How to deal with thread spawned outside of madsim simulation HOT 2
- include original crate's version HOT 11
- docs: more detailed explanation about how and why to patch deps
- feature: support timeout in tonic requests HOT 2
- feature request: support `btree_map` api for Builder
- Enhancing Determinism by Forking Processes
- Improving behaviour to failed socket address parsing
- wrong `tokio::runtime::Runtime::enter` implementation HOT 4
- panic if spawn when task drop HOT 2
- patch `tokio_stream` HOT 1
- Implement `tokio::task::AbortHandle::is_finished` HOT 2
- Tags are missing after release `v0.2.15` HOT 1
- `tokio::time::sleep(Duration::ZERO)` is not simulated properly HOT 1
- Creating multiple runtimes with the same seed yields different random values HOT 2
- Check the result of the function in `check_determinism` HOT 1
- unaligned pointer for rand HOT 1
- Allow toggling off the new-thread-spawned detector HOT 2
- support `tokio::runtime::Handle`
- How to retrieve madsim seed when the test case was canceled by cargo-nextest due to timeout HOT 1
- How to add support for a few more services like AWS DynamoDB and Google Cloud Spanner? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from madsim.