A comprehensive benchmarking and testing tool for OpenEO backends and services.
openEObench provides comprehensive functionality for testing and benchmarking OpenEO backends:
- Service Checking: Test endpoint availability and response times
- Scenario Execution: Run OpenEO workflows on backends
- Run Summaries: Analyze timing statistics from workflow executions
- Result Summaries: Generate comprehensive statistics from workflow outputs
- Service Summaries: Generate performance reports from endpoint checks
- Process Analysis: Check OpenEO process availability and compliance across backends
- Process Summaries: Generate compliance reports for process implementations
- Visualization: Create visual matrices and reports of GeoTIFF results
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and setup
git clone <repository-url>
cd openeobench
# Install all dependencies (includes GDAL, OpenEO, etc.)
uv sync
# Run commands
uv run python openeobench --help
git clone <repository-url>
cd openeobench
# Install from pyproject.toml (includes all dependencies)
pip install -e .
# Or install specific requirements
pip install -r requirements.txt
python openeobench --help
Note: When installing GDAL, make sure that the system GDAL library version and the Python GDAL package version are compatible. Mismatched versions can cause import errors or runtime issues. It is recommended to install the system GDAL libraries first, then install the matching Python GDAL version (e.g., using
pip install gdal==<version>
where<version>
matches your system GDAL).
Test OpenEO endpoint availability and response times:
# Check endpoints from CSV file (creates new timestamped file)
openeobench service -i endpoints.csv -o results/
# Check endpoints and append to daily file
openeobench service -i endpoints.csv -o results/ --append
# Check a single URL (creates new timestamped file)
openeobench service -u https://openeo.dataspace.copernicus.eu/.well-known/openeo -o results/
# Check a single URL and append to daily file
openeobench service -u https://openeo.dataspace.copernicus.eu/.well-known/openeo -o results/ --append
Generate performance reports from endpoint check results:
# Generate statistics summary from folder (CSV output)
openeobench service-summary -i results/ -o summary.csv
# Generate statistics summary from folder (Markdown output)
openeobench service-summary -i results/ -o summary.md
# Generate statistics from single CSV file
openeobench service-summary -i results/2025-06-26.csv -o summary.md
Output:
- CSV columns:
url
,availability
,avg_response_time
,stddev_response_time
,latency
,latency_stddev
- Markdown document with formatted statistics
Run OpenEO workflows on backends:
# Run OpenEO scenario on a backend
openeobench run --api-url https://openeo.dataspace.copernicus.eu -i scenario.json -o results/
Output: Folder containing process graph (JSON), job metadata (JSON), and output files (GeoTIFF, etc.)
Generate timing statistics from workflow executions:
# Generate timing summary from run results
openeobench run-summary -i output/folder1 output/folder2 -o timing_summary.csv
Output columns: filename
, time_submit
, time_submit_stddev
, time_job_execution
, time_job_execution_stddev
, time_download
, time_download_stddev
, time_processing
, time_processing_stddev
, time_queue
, time_queue_stddev
, time_total
, time_total_stddev
Generate comprehensive statistics from workflow outputs:
# Generate file statistics summary from run results (CSV)
openeobench result-summary output/folder1 output/folder2 --output file_stats.csv
# Generate file statistics summary from run results (Markdown)
openeobench result-summary output/folder1 output/folder2 --output file_stats.md --format md
Output: Comprehensive statistics about generated files, data types, sizes, and processing results
Check OpenEO process availability and compliance:
# Check process compliance for single backend
openeobench process --url https://openeo.vito.be/openeo/1.1 -o process_results.csv
# Check process compliance for multiple backends
openeobench process -i backends.csv -o process_compliance.csv
Output:
- CSV file (
.csv
) with columns:process
,level
,status
,compatibility
,reason
- JSON file (
.json
) containing the raw/processes
endpoint response - Process compliance analysis against OpenEO profiles (L1-L4)
Generate compliance reports for process implementations:
# Generate process compliance summary (CSV)
openeobench process-summary process_results/ --output process_summary.csv --format csv
# Generate process compliance summary (Markdown)
openeobench process-summary process_results/ --output process_summary.md --format md
Output:
- CSV columns:
backend
,l1_available
,l1_compliance_rate
,l2_available
,l2_compliance_rate
, etc. - Markdown document with compliance analysis across backends
Create visual matrices and reports of GeoTIFF results:
# Create visual matrix of GeoTIFF results with format options
openeobench visualize output/folder1 output/folder2 --output visualization.md --format both
# Create only PNG matrix
openeobench visualize output/folder1 output/folder2 --output visualization.png --format png
# Create only markdown report
openeobench visualize output/folder1 output/folder2 --output visualization.md --format md
# Visualize individual TIFF files
openeobench visualize path/to/file1.tif path/to/file2.tif --output comparison.md --format both
# Mix folders and individual files
openeobench visualize output/folder1 path/to/specific_file.tif --output mixed_visualization.md
Output:
- Markdown reports with embedded image matrices and statistics
- PNG matrix visualizations showing all results in a single image
- Individual PNG files for each GeoTIFF
- Support for folders, individual files, or mixed inputs
- Note: CSV statistics output has been removed as of recent updates
Command | Description | Key Options | Dependencies |
---|---|---|---|
service |
Check endpoint availability | -i (CSV file), -u (single URL), -o (output dir), --append |
|
service-summary |
Performance reports | -i (results folder/CSV), -o (CSV/MD output) |
|
run |
Execute OpenEO scenarios | --api-url (backend), -i (scenario JSON), -o (output dir) |
|
run-summary |
Timing statistics from runs | -i (result folders/files), -o (CSV output) |
|
result-summary |
Comprehensive file statistics | Input folders/files, --output (CSV/MD), --format |
|
process |
Check process availability/compliance | --url (single backend) or -i (CSV), -o (output file) |
requests |
process-summary |
Generate compliance reports | -i (results folder/file), --output (CSV/MD), --format |
- |
visualize |
Create visual matrices of GeoTIFF results | Input folders/files, --output (MD/PNG), --format (md/png/both) |
GDAL, matplotlib |
# Check endpoints from CSV file (creates new timestamped file)
openeobench service -i endpoints.csv -o results/
# Check endpoints and append to daily file
openeobench service -i endpoints.csv -o results/ --append
# Check a single URL (creates new timestamped file)
openeobench service -u https://openeo.example.com/.well-known/openeo -o results/
# Check a single URL and append to daily file
openeobench service -u https://openeo.example.com/.well-known/openeo -o results/ --append
# Run OpenEO scenario on a backend
openeobench run --api-url https://openeo.example.com -i scenario.json -o results/
# Generate timing summary from run results
openeobench run-summary -i output/folder1 output/folder2 -o timing_summary.csv
# Generate file statistics summary from run results (CSV)
openeobench result-summary output/folder1 output/folder2 --output file_stats.csv
# Generate file statistics summary from run results (Markdown)
openeobench result-summary output/folder1 output/folder2 --output file_stats.md --format md
# Generate statistics summary from folder (CSV output)
openeobench service-summary -i results/ -o summary.csv
# Generate statistics summary from folder (Markdown output)
openeobench service-summary -i results/ -o summary.md
# Generate statistics from single CSV file
openeobench service-summary -i results/2025-06-26.csv -o summary.md
# Check process compliance for single backend
openeobench process --url https://openeo.vito.be/openeo/1.1 -o process_results.csv
# Check process compliance for multiple backends
openeobench process -i backends.csv -o process_compliance.csv
# Generate process compliance summary (CSV)
openeobench process-summary process_results/ --output process_summary.csv --format csv
# Generate process compliance summary (Markdown)
openeobench process-summary process_results/ --output process_summary.md --format md
# Create visual matrix of GeoTIFF results with format options
openeobench visualize output/folder1 output/folder2 --output visualization.md --format both
# Create only PNG matrix
openeobench visualize output/folder1 output/folder2 --output visualization.png --format png
# Create only markdown report
openeobench visualize output/folder1 output/folder2 --output visualization.md --format md
# Visualize individual TIFF files
openeobench visualize path/to/file1.tif path/to/file2.tif --output comparison.md --format both
# Mix folders and individual files
openeobench visualize output/folder1 path/to/specific_file.tif --output mixed_visualization.md
The process compliance checking is based on the official OpenEO API specification process profiles:
- L1 (Basic): Essential processes for basic data access and output
load_collection
,save_result
,filter_bbox
,filter_temporal
,reduce_dimension
,apply
,linear_scale_range
- L2 (EO Data Manipulation): Earth observation specific data processing
ndvi
,evi
,aggregate_temporal
,resample_spatial
,merge_cubes
,apply_dimension
,array_element
,clip
,mask
,filter_bands
- L3 (Mathematical Operations): Mathematical and statistical functions
add
,subtract
,multiply
,divide
,absolute
,sqrt
,power
,exp
,ln
,log
,sin
,cos
,tan
,arcsin
,arccos
,arctan
,min
,max
,mean
,median
,sum
,product
,count
,sd
,variance
- L4 (Advanced Analysis): Advanced algorithms and machine learning
fit_curve
,predict_curve
,ml_fit
,ml_predict
,sar_backscatter
,atmospheric_correction
,cloud_detection
,create_data_cube
- Location:
outputs/YYYY-MM-DD.csv
oroutputs/YYYY-MM-DD_single.csv
- Columns: url, timestamp, response_time, status_code, error_msg, content_size
- Location: Organized in timestamped folders with
results.json
- Contains: Timing data, job status, process graphs, downloaded results
- CSV: Machine-readable statistics and timing data
- Markdown: Human-readable formatted reports with tables
openeobench/
├── openeobench # Main CLI script
├── openeo_checker.py # Core functionality
├── openeotest.py # Scenario execution engine
├── scenarios/ # Test scenario definitions
├── outputs/ # Service check results
└── README.md
- Python 3.13+ (as specified in pyproject.toml)
- GDAL system libraries (for geospatial functionality)
Core dependencies (from pyproject.toml):
requests>=2.32.4
- HTTP client for API callsopeneo>=0.42.1
- OpenEO Python clientgdal[numpy]==3.8.4
- Geospatial data processingnumpy>=2.3.0
- Numerical computingmatplotlib>=3.10.3
- Plotting and visualizationrioxarray>=0.19.0
- Raster data handling
- GDAL requirement: May require system-level GDAL installation on some platforms
- All commands require the full dependency set for proper functionality
MIT License