rollmint
rollmint copied to clipboard
[Feature Request]: MVP Test Suite for Node
We need to establish a comprehensive minimum viable test suite for the node package to ensure core functionality is properly tested and maintained.
Proposed Test Suite
1. Core Node Lifecycle Tests
- [x] Basic startup/shutdown
- [ ] Genesis initialization verification
- [ ] State recovery after restart
- [ ] Configuration validation
- [ ] Error handling for invalid configurations
2. Block Production & DA Integration
- [ ] Block creation and validation
- [ ] DA submission verification
- [ ] Block retrieval from DA
- [ ] Error handling for DA failures
- [ ] Block height tracking
3. State Management
- [ ] State transitions
- [ ] State persistence
- [ ] State recovery
- [ ] AppHash verification
- [ ] Last block tracking
4. Block Synchronization
- [ ] Block header retrieval from DA layer
- [ ] Block data retrieval from DA layer
- [ ] Handling out-of-order block headers/data
- [ ] Verifying block sync progress
5. Sequencer Integration
- [ ] Batch retrieval from sequencer
- [ ] Batch processing into blocks
- [ ] Error handling for sequencer failures
- [ ] Batch ordering verification
- [ ] Sequencer connection management
6. Execution API Integration
- [ ] Block execution via gRPC
- [ ] State updates after execution
- [ ] Error handling for execution failures
7. Node Modes
- [ ] Aggregator mode functionality
- [ ] Full node functionality
another test case https://github.com/rollkit/go-da/issues/17
List of Local DA related E2E tests
- DA uptime should be configurable based on block height, how much time we want to simulate downtime. Make it randomized. Simulate DA node restarts, network connection lost, or crashes for short and long periods of time (5 min to 1 hour).
- Mempool congestion
tx size is too big- depends on size of other mempool blobs
- Resolves with retries
- [ ] improvement - gradually scale back blob size
- Insufficient fees
- Retries with pending blocks
- Context deadline exceeded
- DA lag time
- delay response time of the DA layer to the client
- scenario → DA light node is still syncing
- check if DA returns a specific error or just lags
- DA lag time
- Randomize the order of GetIDs
- go-da interface returns ids of all blobs at given height
- we want to handle node returning a non-deterministic list of ids
- submitted list might be different from retrieve
- because maps are not determinstic in go
- might be because of celestia-da
- go-da interface returns ids of all blobs at given height
- Check if node has error codes and handle them
- Should mock namespace to allow testing code paths that depend on no blob for given namespace
we completed most these tests by now, closing this