celestiaorg / test-infra Goto Github PK
View Code? Open in Web Editor NEWTesting infrastructure for the Celestia Network
License: Apache License 2.0
Testing infrastructure for the Celestia Network
License: Apache License 2.0
This is an issue that requires definition of how we treat bugs:
Main criterias to focus for the doc are:
Be network topology design, the light client should not connect to another light client
We can try to break this using mutual peers or trusted peer of the active light client to sync the new one
As @Wondertan has correctly mentioned, having redundant code for Celestia App network creation is not a sustainable approach. Thus this issue should address to solving this
Test-steps like InitChain
, CreateKey
, AddGenAccounts
, GenTx
, CollectGenTxs
should be refactored to components in the appkit to make the overall process of bootstrapping an app's network better
For instance, rn the RunApp
func is mostly containing the same code base that InitValidator
has for Application specific instances
PR that caused this issue creation: #23
When we want instances to get into a specific state and later continue test logic, we are using state mechanism in sync client.
However, after 1+ usage of state
and barrier
we see that sometimes instances are freezing due to waiting for an event to happen across each other.
Need to create a simple test-case that abuses barrier
multiple times to see if this is reliable reproducible
When to execute tests and at what stages are still an open questions to be answered
Pre-Reqs:
In Terminal 1:
# 16000 are an equivalent for 16 kilobytes
msg=$(openssl rand -hex 16000)
pay for message testing
Steps to do:
celestia-appd tx payment payForMessage 0102030405060708 $msg --from <acc_addr> --keyring-backend test --chain-id devnet-2
Now, we have chain-id and monikers as variables defined in the *.go
files, which is not ideal.
Relocating definition of those 2 into the manifest.toml
and composition.toml
files respectively are preferable.
Description to be added @Bidon15
Going through the docs and executing the tests using testground to have a clear decision on pros/cons of using this for our e2e tests
As we are using celestia-app as the first point to test against, we should push celestia-app docker image to docker's org first
We need to revisit what is needed in the repo, to define what
After finishing #60, we need to adapt the code-base to reflect
Ref:
Ref: https://github.com/celestiaorg/test-infra/pull/27/files#r915810034
We need to get rid of Config init just for the listenAddress
Firstly, we need to add an option in Celestia Node repo
We already have all the presets done in node_sync.go
The only left to do is:
Ref:
In order to finish celestia-app basic chapter, we need the list below to be done in order to have not-only pre-gen keys/configs as the only solution:
We already have all the presets done in init_val.go
The only left to do is:
Ref:
Now we are on the finishing line of the #25, we need to show the data charts that the cluster is generating
https://docs.testground.ai/v/master/runner-library/cluster-k8s/monitoring#cluster-wide-resources-utilisation
This is important as we need to analyse whether hw resources are a bottleneck in the future big network tests or not
Ref: #32
This test-case should test celestia-core on the following scenario:
Pre-reqs:
Steps:
Motivation: we need to smoke this out to get hands dirty in order to complete burning gas fee test-case(ref to #39)
After we finish some details for #25 we need to execute a dry-run with a basic test scenario to see what actually Influx DB data is populated for further analysis
Out test-plans are based on v.0.35 tendermint for both app/sdk that are a dependency for node
We need to also downgrade to be streamlined
Ref: celestiaorg/celestia-node#951
Same as #35, there are moments when the test designer wants to use different paths for home directory, when testing celestia-app
We need to move it from the code-base to the test params section of the .toml file
Creating successful test-case requires each of criterias to be met:
We need to gather the data from the app-nodes to further analyze the test-run
Tendermint has the built in metrics collection module that require us to do 3 steps
We need documentation that will explain to the user how to run our test-plans and where to find documentation to learn more about testground as well as how to setup infrastructure
Original Message:
We should do network tests for cases like if a block producer withholds some of the block:
(1) will full nodes reconstruct it in case the block is recoverable, and how long will it take?
(2) after the block is reconstructed - what happens to light clients that have hanging DAS queries?
(3) if the erasure code is valid, will a bad coding fraud proof be generated and how long?
This epic contains creating/implementation/reporting of the test-plan(or plans)
TBA
Steps to do:
celestia-app
and celestia-node
. Install docs: https://docs.celestia.org/nodes/overviewsudo du -sh <path>
measure the disk space of the following directories.celestia-app
.celestia-bridge
.celestia-full
.celestia-light
In both celestia-app and celestia-node, we can submit pfd. However, this is not a straightforward approach for both of them
In celestia-app, we can already use the wrapcli
approach to fulfil plain PFD
Still, we need to implement opening of the grpc rpc endpoint from app to other celestia-node
types such as light/full
In celestia-node, we are currently using the RPC approach
https://docs.celestia.org/developers/node-tutorial#connect-to-a-public-core-endpoint
We might need to wrap this RPC part as usually the user uses these APIs
https://docs.celestia.org/developers/node-tutorial#submit-a-pfd-transaction
According to our upcoming test-plan implementation #55, we need to prepare the cluster to accommodate:
The total for all this is 2600 cores / 4400 Gb
Taking into consideration sidecar/influx and the testground's daemon, we definitely need more power
The goal is to have a celestia organisation in docker hub, where we can store all docker images related across all org repos
We need to decide on which CI to execute tests as well as on which stages to execute them(tests)
This requires analysis of existing tools like circle/travis/ga/etc.
In order to start the chain, our validators should find each other.
Now, we are adding them as p2p.persistent-peers
in config.toml
using sync.Client
from testground.
Ideally, we need to configure any of the existing node to be a bootstrapper to others by editing the config.toml
file
What to do:
bootstrap-peer
to others by publishing it's peerid to the eventp2p.bootstrap-peers
for those nodes who wants to find othersAs writing first test-plan relying on ADR #002: Devnet Celestia Core <> Celestia Node Communication, it is going to be good/easy-to-read to have 2 test plans rather have 1 bigger test plan.
The main focus for this test-plan is to cover cases, where CFN with no CCN should communicate with CFN(embed/remote types) in order to receive data
After finishing #5 , we need to apply gained knowledge to our app/node products
We need to create a simple test-plan that abuses must*
commands in the sync client.
From time to time, we can not publish nor receive information from events properly
a seed node that connect the peers to each other, so the peers don't need to add one another as persistent peers as mandatory anymore
This can help us in the future minimize the amount of inbound/outbound peers per 1 validator for testing bandwidth vs big blocks
The initial docker image is not tied to an influx db
this should be edit as well as we should refactor some of the points
Modify the existing approach in tendermint to run a local testnet using docker-compose.
References:
Instructions:
It should be a low-hanging fruit to use this approach to spin up a celestia-node IMO. That way we create the genesis file once and put it directly into the docker containers before creating them (no need to scp stuff around etc).
This epic contains all necessary features that need to be refactor out as reusable components for future ease of test development
As spinning up Celestia Application instances is a pre-requisite to every test-run, we need to make this setup process less redundant as well as let the test designer configure those components as they wish to via .toml file
This test-case should test celestia-core on the following scenario:
Celestia Node
full/light need to have funds in order to start submitting PFDs.
Creating a sync topic for that specific case will solve the task
We already have a sync topic for sharing accounts between app's for funding genesis accounts (ref: #24).
Tbe, these parts:
To get this done we need:
WrapCLI
command for appceles
accounts accordinglyRef: #31
We need to create a smoke suite for celestia-app without hive due to issues with #3
What ideas for implementation could be used for this(sorted by ease and knowledge):
If we use only 1 sync.Client
for multiple topics for subscriptions, then some of the instances won't receive/publish proper information from one another.
We need to create a test-case that will abuse this behaviour and see what is the limit of subs/topics 1 sync client can handle properly across instances
In local:docker, even with error logs, we can see them
This is not the case for cluster:k8s env, so we need to find the root cause and fix it.
In order to run full-scale network tests, we need to set up the k8s cluster on a cloud provider.
Here are the steps that needs to be done:
Materials to read:
The goal of this issue is to have tests running for celestia-node based on test-plan #1
More info here: docs/test_plans/tp-001-devnet-full-node.md
Now we have bandwidth params hardcoded into go files which is not handy as we want to expand on experiments when the end user has 100/256/320/512/1k mbps bandwidth
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.