Awesome
🚧⚠️ [WIP] ZombieNet SDK ⚠️🚧
The Vision
This issue will track the progress of the new ZombieNet SDK.
We want to create a new SDK for ZombieNet
that allow users to build more complex use cases and interact with the network in a more flexible and programatic way.
The SDK will provide a set of building blocks
that users can combine in order to spawn and interact (test/query/etc) with the network providing a fluent api to craft different topologies and assertions to the running network. The new SDK
will support the same range of providers
and configurations that can be created in the current version (v1).
We also want to continue supporting the CLI
interface but should be updated to use the SDK
under the hood.
The Plan
We plan to divide the work phases to. ensure we cover all the requirement and inside each phase in small tasks, covering one of the building blocks and the interaction between them.
Prototype building blocks
Prototype each building block with a clear interface and how to interact with it
- Building block Network #2
- Building block Node #3
- Building block NodeGroup #4
- Building block Parachain #5
- Building block Collator #6
- Building block CollatorGroup #7
- Building block Assertion #8
Integrate, test interactions and document
We want to integrate the interactions for all building blocks and document the way that they work together.
Refactor CLI
and ensure backwards compatibility
Refactor the CLI
module to use the new SDK
under the hood.
- Refactor CLI #12
- Ensure that spawning from toml works #13
- Ensure that test-runner from DSL works #14
ROADMAP
Infra
- Chaos testing, add examples and explore possibilities in
native
andpodman
provider - Add
docker
provider - Add
nomad
provider - Create helm chart to allow other use zombienet in k8s
- Auth system to not use k8s users
- Create GitHub Action and publish in NPM marketplace (Completed)
- Rename
@paritytech/zombienet
npm package tozombienet
. Keep all zombienet modules under@zombienet/*
org (Completed)
Internal teams
- Add more teams (wip)
Registry
- Create decorators registry and allow override by paras (wip)
- Explore how to get info from paras.
Functional tasks
- Add subxt integration, allow to compile/run on the fly
- Move parser to pest (wip)
- Detach phases and use JSON to communicate instead of
paths
- Add relative values assertions (for metrics/scripts)
- Allow to define nodes that are not started in the launching phase and can be started by the test-runner
- Allow to define
race
assertions - Rust integration -> Create multiples libs (crates)
- Explore backchannel use case
- Add support to run test agains a running network (wip)
- Add more CLI subcommands
- Add js/subxt snippets ready to use in assertions (e.g transfers)
- Add XCM support in built-in assertions
- Add
ink! smart contract
support - Add support to start from a live network (fork-off) [check subalfred]
- Create "default configuration" - (if
zombieconfig.json
exists in same dir with zombienet then the config applied in it will override the default configuration of zombienet. E.G if user wants to have as defaultnative
instead ofk8s
he can add to
UI
- Create UI to create
.zndls
andnetwork
files. - Improve VSCode extension (grammar/snippets/syntax highlighting/file validations) (repo)
- Create UI app (desktop) to run zombienet without the need of terminal.