-
Notifications
You must be signed in to change notification settings - Fork 624
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🔷 [ProjectTracking] Forknet improvements #10542
Comments
2024-01-31 Meeting notes We are again focusing our attention on the forknet.
We have developed two toolboxes for mocknet: Marcelo's mirror tools, and Vlad's forknet tools. We need to combine them into a working solution that hides away most of the complexity from the users, while providing enough flexibility. To achieve this we will:
For a feature developer the flow of using forknet will look like this:
CI testing using forknet will use the same flow automatically. New traffic slice image will be created monthly. New forknet instance will be created/destroyed weekly. Flow of the test will simply start every node with the latest master binary. Our first goal is a stable setup for forknet CI with one of existing traffic slices. |
2024-02-07 Meeting notes |
2024-02-14 Meeting notes Important previews:ConclusionsAs we limit the scope for the continuation of a forknet project, we hope to have a mocknet test that is:
We are actively trying to learn from our mistakes and avoid overengineering. We do not want to improve non-crucial tools, or tools that are not causing significant problems. Our core values for this project can be summarised in two statements:
TLDR tableRoadmap tableFuture plans@posvyatokum will focus on switching to forknet approach in mirror test setup |
2024-02-21 Meeting notes
|
2024-02-28 UpdateCC: @marcelo-gonzalez @gmilescu @posvyatokum Past weekFor the past week we were focusing on testing the 1.37.0 release.
@marcelo-gonzalez discovered problems with resharding, using the restarting tool. Next week@marcelo-gonzalez will focus on testing the bug fixes for the resharding issue.
Our first priority is to thoroughly test resharding before mainnet release. We will gear towards incorporating forknet tools whenever possible, if it fits our timeline. We will keep documentation of all steps taken for easy test reproduction, and future automatisation. Progress overviewThese tasks contribute to all Stage 1 goals:
At the end of the week we aim to complete 1.37.0 testing, and have an updated set of instructions for 1.38 testing. |
2024-03-04 UpdateCC: @gmilescu @marcelo-gonzalez @posvyatokum Past weekFor the past week we were focusing on testing the 1.37.0 release. Next week@marcelo-gonzalez will focus on helping @VanBarbascu to test 1.38.0-rc.1 and create a comprehensive documentation for the process Progress overviewWe achieved the goal of increasing confidence in the 1.37.0 release. RoadMap adjustment@khorolets raised a point of developing easy test result evaluation methods. Right now we have all of the work regarding automatic test evaluation planned for Stage 3. Looking back, this seems like a very narrow timeline for an important feature. |
2024-03-11 UpdateCC: @marcelo-gonzalez @gmilescu @posvyatokum Past week@marcelo-gonzalez tested resharding of shard 2 in 1.38 release Next week@marcelo-gonzalez will continue to test and support 1.38 resharding release Progress overview
|
2023-03-18 UpdateCC: @marcelo-gonzalez @gmilescu @posvyatokum Due to the high density of complicated releases, we don't have significant progress for this project. |
2024-04-01 Stage 1 UpdateCC: @marcelo-gonzalez @gmilescu @posvyatokum ContextAt the start of the project, we broke it down into three stages of increasing length. That allowed us to have concrete long term goals, while not over-focusing on implementing the final product right away. As a result, we prioritized immediate needs, and right now we feel like it is the right approach to this project. Thus, we will again restructure our roadmap in a way that creates some milestones and carves out some vision of the final product, but only gives full definition to the tasks for the next month. Expectations for Stage 1 (March)Goals
TasksNot done:
Ad-hoc implementation:
ConclusionWe focused on building tools that we needed in the moment, and didn't prioritize polishing them and making them a part of an established flow. This was mainly due to an extreme workload of the pre-release testing process, that required us to move fast and not break things. Expectation for AprilWe see that we were able to successfully manually incorporate different new tools into the established mocknet flow. Now we need to make them a permanent part of the process. TLDRIn March we did a lot of ad-hoc things to support releases, in April we will create a mocknet CI for stateless validation. |
#11034 implements the speedup of network startup. after this PR, we can make things faster by changing the way we setup the images so that in |
We continue the work on improving the Forknet by dividing it in 3 pillars: We will start by tackling the primary issue of correctness, with a focus on building reliable mainnet images, as this is currently preventing Forknet from reaching high TPS and supporting a wide range of transaction types. While running the traffic mirroring, we observed two issues:
The first issue can be addressed by reducing the gas price for the forked network in |
Sept 9-13
|
Sept 15-27 The use of Forknet V2 images is currently blocked on 2 items listed in the Roadmap section:
Addressing these 2 is the key to start using forknet for performance testing. After we are done with these 2 blockers, the next items in the roadmap improve the usability of the forknet bringing it closer to a one click setup. |
Goals
The toolbox of infrastructures we have for creating and managing test mock networks is large and versatile, with Forknet and mirror tool standing out as being the most powerful. The goal of this project is to continue the development of Forknet by unifying it with the mirror test infrastructure. The two have a lot in common, but some parts (e.g. control plane) are done differently due to the different design philosophies. By merging them together we will simplify toolbox and will better utilise it.
Background
We had several tests (regular betanet, and on-demand spoon test) that were creating mocknet with simple predefined traffic. We wanted to have a way to make traffic more meaningful, so we developed a mirror toolset – a way to test binary (or binary release) via mocknet with a real traffic slice from mainnet. This tool was utilized only during releases, and only by the Node team. And it was not very easy to do.
Independently, we also developed a toolbox to speed up creation of mainnet forks for testing (Forknet). Now, we want to combine fast test setup with working traffic mirroring, to create a better testing system. In order for it to be as useful as it can be, we are also focusing on user-friendliness.
Context
The project is split into three pillars: Correctness, Performance and Infrastructure.
Why should NEAR One work on this
Short term value:
Medium term value:
Long term value:
What needs to be accomplished
Correctness goal:
How we will do that:
Performance goals:
How we will do that:
Infrastructure goals:
How we will do that:
Links to external documentations and discussions
Assumptions
N/A
Pre-requisites
N/A
Out of scope
Custom test flow development is out of scope. If some feature need specific network orchestration to be properly tested, we expect the feature engineer to write the orchestration script using provided tools and examples.
Task list:
Roadmap
Correctness
Performance
Infrastructure
Real life progress
Tasks
Bugs
Backlog
The text was updated successfully, but these errors were encountered: