Skip to content

Commit

Permalink
update README
Browse files Browse the repository at this point in the history
  • Loading branch information
pk910 committed Jan 30, 2024
1 parent 99714b6 commit a22a24c
Showing 1 changed file with 55 additions and 100 deletions.
155 changes: 55 additions & 100 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit a22a24c

Please sign in to comment.