Add integration tests for Python and Node.js bindings #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |