Skip to content

Add integration tests for Python and Node.js bindings #5

Add integration tests for Python and Node.js bindings

Add integration tests for Python and Node.js bindings #5

Workflow file for this run

name: Benchmarks
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
benchmark:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry & build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-bench-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-bench-
- name: Run e2e benchmarks
run: cargo bench -p kyu-api --bench e2e_bench
- name: Run storage micro-benchmarks
run: cargo bench -p kyu-executor --bench storage_bench
- name: Prepare Pages artifact
run: |
mkdir -p _site
cp -r target/criterion/* _site/
# Generate a simple index page linking to all benchmark reports
cat > _site/index.html <<'HTMLEOF'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>KyuGraph Benchmarks</title>
<style>
body { font-family: -apple-system, system-ui, sans-serif; max-width: 800px; margin: 2rem auto; padding: 0 1rem; }
h1 { border-bottom: 2px solid #333; padding-bottom: 0.5rem; }
ul { list-style: none; padding: 0; }
li { margin: 0.5rem 0; }
a { color: #0366d6; text-decoration: none; font-size: 1.1rem; }
a:hover { text-decoration: underline; }
.section { margin-top: 2rem; }
.section h2 { color: #555; font-size: 1.2rem; }
</style>
</head>
<body>
<h1>KyuGraph Benchmark Results</h1>
<p>Generated by Criterion.rs on each push to <code>main</code>.</p>
<div class="section">
<h2>Overview</h2>
<ul><li><a href="report/index.html">Full Criterion Report</a></li></ul>
</div>
<div class="section">
<h2>End-to-End (e2e)</h2>
<ul>
<li><a href="fixed_size_seq_scan/report/index.html">Fixed-Size Sequential Scan</a></li>
<li><a href="var_size_seq_scan/report/index.html">Variable-Size Sequential Scan</a></li>
<li><a href="scan_after_filter/report/index.html">Scan After Filter</a></li>
<li><a href="filter_selectivity/report/index.html">Filter Selectivity</a></li>
<li><a href="fixed_size_expr_evaluator/report/index.html">Expression Evaluator</a></li>
<li><a href="aggregation/report/index.html">Aggregation</a></li>
<li><a href="order_by/report/index.html">ORDER BY</a></li>
<li><a href="multi_operator_pipeline/report/index.html">Multi-Operator Pipeline</a></li>
<li><a href="dml/report/index.html">DML (Insert / Bulk Load)</a></li>
<li><a href="recursive_join/report/index.html">Recursive Join (Variable-Length Paths)</a></li>
<li><a href="scalar_functions/report/index.html">Scalar Functions</a></li>
<li><a href="graph_algorithms/report/index.html">Graph Algorithms</a></li>
</ul>
</div>
<div class="section">
<h2>Storage Micro-Benchmarks</h2>
<ul>
<li><a href="value_vector_get/report/index.html">ValueVector Get</a></li>
<li><a href="data_chunk_iteration/report/index.html">DataChunk Iteration</a></li>
<li><a href="selection_vector_filter/report/index.html">SelectionVector Filter</a></li>
</ul>
</div>
</body>
</html>
HTMLEOF
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: _site
deploy:
needs: benchmark
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4