MCPcopy Index your code
hub / github.com/ethpandaops/assertoor

github.com/ethpandaops/assertoor @v0.1.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.2 ↗ · + Follow
2,250 symbols 6,032 edges 305 files 382 documented · 17%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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 simple integration with other systems and facilitates automated monitoring and analysis workflows.\ eg. for running scheduled tests with github workflows

Getting Started

  1. Clone the repository & build the tool: git clone https://github.com/ethpandaops/assertoor.git cd assertoor make build
  2. Configure Your Tests:\ Prepare tests in a YAML file. See example configurations here. \ Provide RPC URLs for at least one Client Pair (consensus & execution).
  3. Run Assertoor:\ Launch the tool to execute defined tests. ./bin/assertoor --config=./example/config/check_proposals.yaml
  4. 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 for installation, configuration, and usage guidelines. \ Example tests are available here.

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 - see the LICENSE file for details.

Extension points exported contracts — how you extend this code

Task (Interface)
(no doc) [45 implementers]
pkg/types/task.go
LogReader (Interface)
(no doc) [4 implementers]
pkg/logger/logreader.go
LocalTestProvider (Interface)
LocalTestProvider is the minimal interface the Service needs to compare remote playbooks against locally registered test [1 …
pkg/playbooklibrary/library.go
Bus (Interface)
Bus is the interface for the event bus. [1 implementers]
pkg/events/bus.go
IRawMessage (Interface)
(no doc) [2 implementers]
pkg/helper/rawmessage.go
Test (Interface)
(no doc) [2 implementers]
web-ui/src/types/api.ts
StreamEvent (Interface)
(no doc)
pkg/clients/consensus/rpc/eventstream/eventstream.go
TaskScheduler (Interface)
(no doc) [2 implementers]
pkg/types/scheduler.go

Core symbols most depended-on inside this repo

String
called by 154
pkg/clients/consensus/clienttype.go
SetVar
called by 131
pkg/types/vars.go
GetServices
called by 106
pkg/types/scheduler.go
Unmarshal
called by 91
pkg/helper/rawmessage.go
ClientPool
called by 83
pkg/types/scheduler.go
GetBlockCache
called by 82
pkg/clients/consensus/pool.go
GetConsensusPool
called by 78
pkg/clients/clients.go
Err
called by 71
pkg/types/test.go

Shape

Method 1,098
Function 642
Struct 323
Interface 168
TypeAlias 15
Class 2
FuncType 2

Languages

Go75%
TypeScript25%

Modules by API surface

pkg/tasks/generate_deposits/deposit_contract/deposit_contract.go41 symbols
pkg/clients/consensus/rpc/beaconapi.go34 symbols
pkg/test/dbtest.go33 symbols
pkg/clients/consensus/blockcache.go33 symbols
web-ui/src/types/api.ts31 symbols
pkg/tasks/generate_batch_deposits/batch_contract/batch_deposit_contract.go28 symbols
pkg/web/api/ai_handler.go27 symbols
pkg/events/sse.go27 symbols
pkg/ai/session.go27 symbols
pkg/types/test.go26 symbols
pkg/tasks/check_consensus_block_proposals/task.go26 symbols
pkg/types/task.go25 symbols

For agents

$ claude mcp add assertoor \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact