diff --git a/README.md b/README.md index a6c8c46..94a5716 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,56 @@ -# Assertoor Testnet Testing tool - -This project serves as a controller for Ethereum Tests. Users can define tests in yaml, and have the controller ensure the test is conducted while reporting on the status via logs and Prometheus metrics. - - -### Configuration - -## Example Config -``` -endpoints: - - name: "local" - executionUrl: http://localhost:8545 - consensusUrl: http://localhost:5052 - -test: - name: "basic" - - tasks: - - name: run_command - config: - command: - - "echo" - - "hello!" - - name: check_clients_are_healthy - title: "Check if clients are ready" - timeout: 30s - - - name: run_tasks_concurrent - title: "Check if EL & CL clients are synced" - timeout: 48h - config: - tasks: - - name: check_consensus_sync_status - title: "Check if CL clients are synced" - - name: check_execution_sync_status - title: "Check if EL clients are synced" - - - name: run_command - config: - command: - - "echo" - - "done!" - -``` - -## Available tasks - -``` -check_clients_are_healthy: - description: Checks if clients are healthy. - config: - clientNamePatterns: - - .* - pollInterval: 5s - skipConsensusCheck: false - skipExecutionCheck: false - expectUnhealthy: false -check_consensus_sync_status: - description: Checks consensus clients for their sync status. - config: - clientNamePatterns: - - .* - pollInterval: 5s - expectSyncing: false - expectOptimistic: false - expectMinPercent: 100 - expectMaxPercent: 100 - minSlotHeight: 10 - waitForChainProgression: false -check_execution_sync_status: - description: Checks execution clients for their sync status. - config: - clientNamePatterns: - - .* - pollInterval: 5s - expectSyncing: false - expectMinPercent: 100 - expectMaxPercent: 100 - minBlockHeight: 10 - waitForChainProgression: false -run_command: - description: Runs a shell command. - config: - allowed_to_fail: false - command: [] -run_tasks: - description: Run tasks sequentially. - config: - tasks: [] -run_tasks_concurrent: - description: Runs multiple tasks in parallel. - config: - succeedTaskCount: 0 - failTaskCount: 1 - tasks: [] -sleep: - description: Sleeps for a specified duration. - config: - duration: 0s -``` +# Assertoor: Ethereum Testnet Testing Tool +## Overview +Assertoor is a robust and versatile tool designed for comprehensive testing of the Ethereum network. It orchestrates a series of tests from a YAML file, with each test comprising a sequence of tasks executed in a defined order to assess various aspects of the Ethereum network. + +## Key Features + +- **Connection to Ethereum Clients**:\ + Assertoor connects to multiple Consensus and Execution Clients via their HTTP RPC API, ensuring compatibility with all clients and providing a resilient view of the network status. + +- **YAML-Based Test & Task Definition**:\ + Tests, defined and executed through YAML, can include tasks specified in the test configuration or sideloaded from external URLs, offering flexible and organized test management. + +- **Task Orchestrator**:\ + Enables execution of tasks in a predefined order, supporting both parallelization and sequential steps with dependencies. + +- **Versatile Task Capabilities**:\ + Includes tasks ranging from simple shell scripts to complex built-in logic, such as: + - **Generating Transactions**: Simulating transaction types to test network response and throughput. + - **Generating Deposits & Exits**: Evaluating network handling of deposit and exit transactions. + - **Generating BLS Changes**: Testing network capability to process BLS signature changes. + - **Checking Network Stability**: Assessing network resilience under various conditions. + - **Checking Forks & Reorgs**: Analyzing network behavior during forks and reorganizations. + - **Checking Block Properties**: Testing for specific block properties. + - ... and more + +- **Web Interface for Monitoring**:\ + A user-friendly web interface displays real-time test and task status, logs, and results for easy monitoring and analysis. + +- **Web API**: + An API interface provides real-time test and task status, logs, and results for easy programmatic access. \ + This feature enables seamless integration with other systems and facilitates automated monitoring and analysis workflows.\ + eg. for running [scheduled tests with github workflows](https://github.com/ethpandaops/assertoor-test) + +## Getting Started + +1. **Configure Your Tests**:\ + Prepare tests in a YAML file. See example configurations [here](https://github.com/ethpandaops/assertoor/tree/master/example/config). \ + Provide RPC URLs for at least one Client Pair (consensus & execution). +2. **Run Assertoor**:\ + Launch the tool to execute defined tests. +3. **Monitor and Analyze**:\ + Use the web interface to track progress, view logs, and analyze results in real-time. + +## Documentation and Examples + +Refer to our [documentation](https://github.com/ethpandaops/assertoor/wiki) for installation, configuration, and usage guidelines. \ +Example tests are available [here](https://github.com/ethpandaops/assertoor/tree/master/example/tests). + +## Contributing + +Contributions to Assertoor are welcome. Please fork the repository, create a feature branch, and submit a pull request for review. + +## License + +[![License: GPL-3.0](https://img.shields.io/badge/license-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) - see the LICENSE file for details.