chore(cleanup): remove legacy artifacts and add tooling configs
- Remove .github/ directory (migrated to .forgejo/) - Remove .local-artifacts/ benchmark results - Add AGENTS.md for coding assistants - Add .windsurf/rules/ for development guidelines - Update .gitignore
This commit is contained in:
parent
1dcc1e11d5
commit
2854d3df95
52 changed files with 468 additions and 2948 deletions
49
.github/ISSUE_TEMPLATE/bug_report.md
vendored
49
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
|
@ -1,49 +0,0 @@
|
|||
---
|
||||
name: Bug Report
|
||||
about: Create a report to help us improve
|
||||
title: "[BUG] "
|
||||
labels: bug
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## Describe the Bug
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
## To Reproduce
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
## Expected Behavior
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
## Actual Behavior
|
||||
A clear and concise description of what actually happened.
|
||||
|
||||
## Environment
|
||||
- OS: [e.g. macOS 13.0, Ubuntu 22.04]
|
||||
- Go version: [e.g. 1.21.0]
|
||||
- Fetch ML version: [e.g. v1.0.0]
|
||||
- Configuration: [e.g. file-based auth, database auth]
|
||||
|
||||
## Configuration
|
||||
```yaml
|
||||
# Paste relevant configuration here
|
||||
auth:
|
||||
enabled: true
|
||||
# ...
|
||||
```
|
||||
|
||||
## Logs
|
||||
```
|
||||
# Paste relevant logs here
|
||||
2024-01-01 12:00:00 ERROR: ...
|
||||
```
|
||||
|
||||
## Additional Context
|
||||
Add any other context about the problem here.
|
||||
|
||||
## Possible Solution
|
||||
If you have ideas on how to fix this, please describe them here.
|
||||
34
.github/ISSUE_TEMPLATE/feature_request.md
vendored
34
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
name: Feature Request
|
||||
about: Suggest an idea for this project
|
||||
title: "[FEATURE] "
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
A clear and concise description of what the feature is.
|
||||
|
||||
## Problem Statement
|
||||
What problem does this feature solve? What pain point does it address?
|
||||
|
||||
## Proposed Solution
|
||||
Describe the solution you'd like to see implemented.
|
||||
|
||||
## Alternative Solutions
|
||||
Describe any alternative solutions or features you've considered.
|
||||
|
||||
## Use Cases
|
||||
Describe specific use cases where this feature would be valuable.
|
||||
|
||||
## Implementation Details
|
||||
If you have technical ideas on how this should be implemented, describe them here.
|
||||
|
||||
## Mockups/UI (if applicable)
|
||||
If this involves UI changes, include mockups or screenshots.
|
||||
|
||||
## Additional Context
|
||||
Add any other context, screenshots, or examples about the feature request here.
|
||||
|
||||
## Questions
|
||||
Do you have any questions about how this feature might work?
|
||||
35
.github/PULL_REQUEST_TEMPLATE.md
vendored
35
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
|
@ -1,35 +0,0 @@
|
|||
## Description
|
||||
Brief description of what this PR changes.
|
||||
|
||||
## Type of Change
|
||||
- [ ] Bug fix (non-breaking change that fixes an issue)
|
||||
- [ ] New feature (non-breaking change that adds functionality)
|
||||
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
|
||||
- [ ] Documentation update
|
||||
|
||||
## Testing
|
||||
- [ ] Unit tests pass
|
||||
- [ ] Integration tests pass (if applicable)
|
||||
- [ ] Manual testing completed
|
||||
- [ ] Security audit passed
|
||||
|
||||
## Checklist
|
||||
- [ ] Code follows the project's style guidelines
|
||||
- [ ] Self-review of the code completed
|
||||
- [ ] Documentation updated if necessary
|
||||
- [ ] Tests added for new functionality
|
||||
- [ ] No hardcoded secrets or credentials
|
||||
- [ ] Error handling implemented appropriately
|
||||
|
||||
## Security Considerations
|
||||
- [ ] No sensitive data in logs
|
||||
- [ ] Proper input validation
|
||||
- [ ] Authentication/authorization properly implemented
|
||||
- [ ] No SQL injection vulnerabilities
|
||||
- [ ] No XSS vulnerabilities (if applicable)
|
||||
|
||||
## Screenshots (if applicable)
|
||||
Add screenshots to help explain your changes.
|
||||
|
||||
## Additional Context
|
||||
Add any other context about the pull request here.
|
||||
82
.github/labeler.yml
vendored
82
.github/labeler.yml
vendored
|
|
@ -1,82 +0,0 @@
|
|||
# Labeler configuration for automatic PR labeling
|
||||
|
||||
# Bug reports
|
||||
bug:
|
||||
- "[BUG]"
|
||||
- "bug:"
|
||||
- "fixes #"
|
||||
- "closes #"
|
||||
|
||||
# Feature requests
|
||||
enhancement:
|
||||
- "[FEATURE]"
|
||||
- "feat:"
|
||||
- "feature:"
|
||||
- "add "
|
||||
|
||||
# Documentation
|
||||
documentation:
|
||||
- "[DOCS]"
|
||||
- "docs:"
|
||||
- "README"
|
||||
- "documentation"
|
||||
|
||||
# Security
|
||||
security:
|
||||
- "[SECURITY]"
|
||||
- "security:"
|
||||
- "auth"
|
||||
- "authentication"
|
||||
- "RBAC"
|
||||
- "permissions"
|
||||
|
||||
# Testing
|
||||
testing:
|
||||
- "[TEST]"
|
||||
- "test:"
|
||||
- "tests"
|
||||
- "unit test"
|
||||
- "integration test"
|
||||
|
||||
# CI/CD
|
||||
ci:
|
||||
- "[CI]"
|
||||
- "workflow"
|
||||
- "github actions"
|
||||
- "build"
|
||||
- "deploy"
|
||||
|
||||
# Configuration
|
||||
configuration:
|
||||
- "[CONFIG]"
|
||||
- "config"
|
||||
- "yaml"
|
||||
- "settings"
|
||||
|
||||
# Dependencies
|
||||
dependencies:
|
||||
- "[DEPS]"
|
||||
- "go.mod"
|
||||
- "dependency"
|
||||
- "update"
|
||||
|
||||
# Performance
|
||||
performance:
|
||||
- "[PERF]"
|
||||
- "performance"
|
||||
- "optimize"
|
||||
- "speed"
|
||||
|
||||
# Breaking changes
|
||||
breaking-change:
|
||||
- "[BREAKING]"
|
||||
- "breaking"
|
||||
- "deprecated"
|
||||
- "remove"
|
||||
|
||||
# TUI
|
||||
tui:
|
||||
- "[TUI]"
|
||||
- "cmd/tui"
|
||||
- "terminal ui"
|
||||
- "interface"
|
||||
21
.github/rsync_manifest.json
vendored
21
.github/rsync_manifest.json
vendored
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"version": "v3.2.7",
|
||||
"base_url": "https://github.com/JMarvi3/rsync-static/releases/download",
|
||||
"platforms": {
|
||||
"linux-x86_64": {
|
||||
"target": "x86_64-linux-musl",
|
||||
"asset": "rsync-linux-x86_64",
|
||||
"sha256": "0019dfc4b32d63c1392aa264aed2253c1e0c2fb09216f8e2cc269bbfb8bb49b5"
|
||||
},
|
||||
"macos-x86_64": {
|
||||
"target": "x86_64-macos",
|
||||
"asset": "rsync-macos-x86_64",
|
||||
"sha256": "0019dfc4b32d63c1392aa264aed2253c1e0c2fb09216f8e2cc269bbfb8bb49b5"
|
||||
},
|
||||
"macos-arm64": {
|
||||
"target": "aarch64-macos",
|
||||
"asset": "rsync-macos-arm64",
|
||||
"sha256": "0019dfc4b32d63c1392aa264aed2253c1e0c2fb09216f8e2cc269bbfb8bb49b5"
|
||||
}
|
||||
}
|
||||
}
|
||||
87
.github/workflows/benchmark-metrics.yml
vendored
87
.github/workflows/benchmark-metrics.yml
vendored
|
|
@ -1,87 +0,0 @@
|
|||
name: Benchmark Metrics
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
benchmark:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: '1.21'
|
||||
|
||||
- name: Cache Go modules
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/go/pkg/mod
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
||||
|
||||
- name: Run benchmarks
|
||||
run: |
|
||||
echo "Running performance benchmarks..."
|
||||
go test -bench=. -benchmem ./tests/benchmarks/... > benchmark_results.txt 2>&1
|
||||
|
||||
# Extract benchmark results
|
||||
grep "Benchmark.*-[0-9].*" benchmark_results.txt > clean_benchmarks.txt || true
|
||||
|
||||
- name: Convert to Prometheus metrics
|
||||
run: |
|
||||
# Create Prometheus metrics file
|
||||
echo "# HELP benchmark_time_per_op Time per operation in nanoseconds" > prometheus_metrics.txt
|
||||
echo "# TYPE benchmark_time_per_op gauge" >> prometheus_metrics.txt
|
||||
echo "# HELP benchmark_memory_per_op Memory per operation in bytes" >> prometheus_metrics.txt
|
||||
echo "# TYPE benchmark_memory_per_op gauge" >> prometheus_metrics.txt
|
||||
echo "# HELP benchmark_allocs_per_op Allocations per operation" >> prometheus_metrics.txt
|
||||
echo "# TYPE benchmark_allocs_per_op gauge" >> prometheus_metrics.txt
|
||||
|
||||
# Parse benchmark results and convert to Prometheus format
|
||||
while IFS= read -r line; do
|
||||
if [[ -n "$line" ]]; then
|
||||
BENCHMARK_NAME=$(echo "$line" | awk '{print $1}' | sed 's/-[0-9]*$//')
|
||||
ITERATIONS=$(echo "$line" | awk '{print $2}')
|
||||
TIME_PER_OP=$(echo "$line" | awk '{print $3}')
|
||||
MEMORY_PER_OP=$(echo "$line" | awk '{print $4}')
|
||||
ALLOCS_PER_OP=$(echo "$line" | awk '{print $5}')
|
||||
|
||||
# Clean benchmark name for Prometheus
|
||||
CLEAN_NAME=$(echo "$BENCHMARK_NAME" | sed 's/[^a-zA-Z0-9_]/_/g')
|
||||
|
||||
echo "benchmark_time_per_op{benchmark=\"$CLEAN_NAME\"} ${TIME_PER_OP/ns/}" >> prometheus_metrics.txt
|
||||
echo "benchmark_memory_per_op{benchmark=\"$CLEAN_NAME\"} ${MEMORY_PER_OP/B\/op/}" >> prometheus_metrics.txt
|
||||
echo "benchmark_allocs_per_op{benchmark=\"$CLEAN_NAME\"} ${ALLOCS_PER_OP/allocs\/op/}" >> prometheus_metrics.txt
|
||||
fi
|
||||
done < clean_benchmarks.txt
|
||||
|
||||
- name: Push to Prometheus Pushgateway
|
||||
env:
|
||||
PROMETHEUS_PUSHGATEWAY_URL: ${{ secrets['PROMETHEUS_PUSHGATEWAY_URL'] }}
|
||||
run: |
|
||||
# Push metrics to Prometheus Pushgateway (if configured)
|
||||
if [ -n "$PROMETHEUS_PUSHGATEWAY_URL" ]; then
|
||||
echo "Pushing metrics to Prometheus..."
|
||||
curl --data-binary @prometheus_metrics.txt \
|
||||
"$PROMETHEUS_PUSHGATEWAY_URL/metrics/job/benchmark/instance/${{ github.run_id }}"
|
||||
else
|
||||
echo "PROMETHEUS_PUSHGATEWAY_URL not configured, skipping push"
|
||||
fi
|
||||
|
||||
- name: Upload benchmark results
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: benchmark-results-${{ github.run_id }}
|
||||
path: |
|
||||
benchmark_results.txt
|
||||
clean_benchmarks.txt
|
||||
prometheus_metrics.txt
|
||||
retention-days: 30
|
||||
|
||||
- name: Display results summary
|
||||
run: |
|
||||
echo "=== Benchmark Results Summary ==="
|
||||
cat prometheus_metrics.txt | grep "benchmark_time_per_op" | head -10
|
||||
276
.github/workflows/ci.yml
vendored
276
.github/workflows/ci.yml
vendored
|
|
@ -1,276 +0,0 @@
|
|||
name: CI/CD Pipeline
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
# Concurrency control to prevent multiple runs of the same workflow
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
# Workflow permissions
|
||||
permissions:
|
||||
contents: read
|
||||
security-events: write
|
||||
actions: read
|
||||
packages: write
|
||||
|
||||
env:
|
||||
GO_VERSION: '1.25.0'
|
||||
ZIG_VERSION: '0.15.2'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis:7
|
||||
ports:
|
||||
- 6379:6379
|
||||
options: >-
|
||||
--health-cmd "redis-cli ping"
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
|
||||
- name: Cache Go modules
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cache/go-build
|
||||
~/go/pkg/mod
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum', '**/go.mod') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-
|
||||
|
||||
- name: Set up Zig
|
||||
uses: goto-bus-stop/setup-zig@v2
|
||||
with:
|
||||
version: ${{ env.ZIG_VERSION }}
|
||||
|
||||
- name: Cache Zig build
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cache/zig
|
||||
cli/zig-cache
|
||||
cli/zig-out
|
||||
key: ${{ runner.os }}-zig-${{ hashFiles('cli/**') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-zig-
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
go mod download
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y podman redis-tools
|
||||
|
||||
- name: Verify dependencies
|
||||
run: go mod verify
|
||||
|
||||
- name: Run tests
|
||||
run: make test
|
||||
|
||||
- name: Test internal/queue package
|
||||
run: go test -v -race -coverprofile=queue-coverage.out ./internal/queue/...
|
||||
|
||||
- name: Run comprehensive tests
|
||||
run: make test-all
|
||||
|
||||
- name: Run linters
|
||||
run: make lint
|
||||
|
||||
- name: Generate coverage report
|
||||
run: make coverage
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
uses: codecov/codecov-action@v4
|
||||
with:
|
||||
file: ./coverage.out
|
||||
flags: unittests
|
||||
name: codecov-umbrella
|
||||
|
||||
dev-smoke:
|
||||
name: Dev Compose Smoke Test
|
||||
runs-on: ubuntu-latest
|
||||
needs: test
|
||||
timeout-minutes: 20
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Run dev smoke test
|
||||
run: make dev-smoke
|
||||
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
needs: test
|
||||
timeout-minutes: 15
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
|
||||
- name: Set up Zig
|
||||
uses: goto-bus-stop/setup-zig@v2
|
||||
with:
|
||||
version: ${{ env.ZIG_VERSION }}
|
||||
|
||||
- name: Cache Go modules
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cache/go-build
|
||||
~/go/pkg/mod
|
||||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum', '**/go.mod') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-go-
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y podman
|
||||
|
||||
- name: Build binaries
|
||||
run: |
|
||||
make build
|
||||
make cli-build
|
||||
# Build Zig CLI (dev and prod)
|
||||
cd cli && zig build dev && zig build prod && cd ..
|
||||
# Note: prod builds use rsync_placeholder wrapper
|
||||
# For true embedded rsync, add static binary to cli/src/assets/rsync_release.bin
|
||||
|
||||
- name: Test binaries
|
||||
run: |
|
||||
./bin/user_manager --help
|
||||
./bin/worker --help
|
||||
./bin/tui --help
|
||||
./bin/data_manager --help
|
||||
# Test Zig CLI
|
||||
./cli/zig-out/prod/ml --help
|
||||
# Verify binary size (should be small with placeholder rsync)
|
||||
ls -lh ./cli/zig-out/prod/ml
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: fetch_ml_binaries
|
||||
path: |
|
||||
bin/
|
||||
cli/zig-out/
|
||||
dist/
|
||||
retention-days: 30
|
||||
|
||||
test-scripts:
|
||||
name: Test Scripts
|
||||
runs-on: ubuntu-latest
|
||||
needs: test
|
||||
timeout-minutes: 15
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y podman redis-tools bats
|
||||
|
||||
- name: Test scripts
|
||||
run: |
|
||||
# Test script functionality
|
||||
chmod +x scripts/*.sh
|
||||
|
||||
# Test quick start script (dry run)
|
||||
./scripts/quick_start.sh --help || true
|
||||
|
||||
# Test security monitor
|
||||
./scripts/security-monitor.sh help
|
||||
|
||||
# Test auto setup
|
||||
./scripts/auto_setup.sh help
|
||||
|
||||
# Test deployment scripts
|
||||
./scripts/deploy-secure.sh --help || true
|
||||
./scripts/deploy-prod.sh --help || true
|
||||
|
||||
security-scan:
|
||||
name: Security Scan
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 20
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Run Trivy vulnerability scanner
|
||||
uses: aquasecurity/trivy-action@master
|
||||
with:
|
||||
scan-type: 'fs'
|
||||
scan-ref: '.'
|
||||
format: 'sarif'
|
||||
output: 'trivy-results.sarif'
|
||||
|
||||
- name: Upload Trivy scan results to GitHub Security tab
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
if: always()
|
||||
with:
|
||||
sarif_file: 'trivy-results.sarif'
|
||||
|
||||
- name: Gosec Security Scanner
|
||||
run: |
|
||||
go install github.com/securecodewarrior/gosec/v2/cmd/gosec@latest
|
||||
gosec ./...
|
||||
|
||||
docker-build:
|
||||
name: Docker Build
|
||||
runs-on: ubuntu-latest
|
||||
needs: [test, build, test-scripts]
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||
timeout-minutes: 30
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: .
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: |
|
||||
ghcr.io/${{ github.repository }}:latest
|
||||
ghcr.io/${{ github.repository }}:${{ github.sha }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
||||
58
.github/workflows/docs.yml
vendored
58
.github/workflows/docs.yml
vendored
|
|
@ -1,58 +0,0 @@
|
|||
name: Documentation
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v3
|
||||
|
||||
- name: Set up Go (for Hugo Modules)
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.21'
|
||||
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v3
|
||||
with:
|
||||
hugo-version: '0.125.7'
|
||||
extended: true
|
||||
|
||||
- name: Build with Hugo
|
||||
run: hugo --source docs --minify --baseURL "${{ steps.pages.outputs.base_url }}/"
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
with:
|
||||
path: docs/_site
|
||||
|
||||
deploy:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v2
|
||||
21
.github/workflows/label.yml
vendored
21
.github/workflows/label.yml
vendored
|
|
@ -1,21 +0,0 @@
|
|||
name: Label Pull Request
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
label:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Label PR
|
||||
uses: actions/labeler@v4
|
||||
with:
|
||||
configuration-path: .github/labeler.yml
|
||||
sync-labels: true
|
||||
45
.github/workflows/license-check.yml
vendored
45
.github/workflows/license-check.yml
vendored
|
|
@ -1,45 +0,0 @@
|
|||
name: License Check
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
license-check:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Check license headers
|
||||
run: |
|
||||
# Check if LICENSE file exists
|
||||
if [ ! -f "LICENSE" ]; then
|
||||
echo "LICENSE file is missing"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "License file OK"
|
||||
|
||||
- name: Check Go files for license headers
|
||||
run: |
|
||||
# Check for license headers in Go files (optional but good practice)
|
||||
missing_headers=0
|
||||
|
||||
for file in $(find . -name "*.go" -not -path "./vendor/*" -not -path "./.git/*"); do
|
||||
if ! head -10 "$file" | grep -q "Copyright"; then
|
||||
echo "Missing license header in: $file"
|
||||
missing_headers=$((missing_headers + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $missing_headers -gt 0 ]; then
|
||||
echo "Found $missing_headers Go files without license headers"
|
||||
echo "Consider adding license headers to Go files"
|
||||
# Don't fail the build, just warn
|
||||
else
|
||||
echo "All Go files have license headers"
|
||||
fi
|
||||
208
.github/workflows/release.yml
vendored
208
.github/workflows/release.yml
vendored
|
|
@ -1,208 +0,0 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
packages: write
|
||||
id-token: write
|
||||
|
||||
env:
|
||||
GO_VERSION: '1.25.0'
|
||||
ZIG_VERSION: '0.15.2'
|
||||
|
||||
jobs:
|
||||
prepare_rsync:
|
||||
name: Prepare rsync metadata
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
matrix: ${{ steps.manifest.outputs.matrix }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Load rsync manifest
|
||||
id: manifest
|
||||
run: |
|
||||
MANIFEST=.github/rsync_manifest.json
|
||||
MATRIX=$(jq -c '
|
||||
. as $cfg
|
||||
| $cfg.platforms
|
||||
| to_entries
|
||||
| map({
|
||||
platform: .key,
|
||||
target: .value.target,
|
||||
"rsync-url": ($cfg.base_url + "/" + $cfg.version + "/" + .value.asset),
|
||||
"rsync-sha256": .value.sha256
|
||||
})
|
||||
' "$MANIFEST")
|
||||
printf 'matrix={"include":%s}\n' "$MATRIX" >> "$GITHUB_OUTPUT"
|
||||
|
||||
build-cli:
|
||||
name: Build CLI - ${{ matrix.platform }}
|
||||
needs: prepare_rsync
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.prepare_rsync.outputs.matrix) }}
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Zig
|
||||
uses: goto-bus-stop/setup-zig@v2
|
||||
with:
|
||||
version: ${{ env.ZIG_VERSION }}
|
||||
|
||||
- name: Download static rsync
|
||||
run: |
|
||||
mkdir -p cli/src/assets
|
||||
wget -O cli/src/assets/rsync_release.bin ${{ matrix.rsync-url }} || \
|
||||
curl -L -o cli/src/assets/rsync_release.bin ${{ matrix.rsync-url }}
|
||||
echo "${{ matrix.rsync-sha256 }} cli/src/assets/rsync_release.bin" | sha256sum -c
|
||||
chmod +x cli/src/assets/rsync_release.bin
|
||||
ls -lh cli/src/assets/rsync_release.bin
|
||||
|
||||
- name: Build CLI
|
||||
working-directory: cli
|
||||
run: |
|
||||
zig build-exe -OReleaseSmall -fstrip -target ${{ matrix.target }} \
|
||||
-femit-bin=zig-out/bin/ml src/main.zig
|
||||
ls -lh zig-out/bin/ml
|
||||
|
||||
- name: Strip binary (Linux only)
|
||||
if: matrix.platform == 'linux-x86_64'
|
||||
working-directory: cli
|
||||
run: strip zig-out/bin/ml
|
||||
|
||||
- name: Package binary
|
||||
run: |
|
||||
mkdir -p dist
|
||||
cp cli/zig-out/bin/ml dist/ml-${{ matrix.platform }}
|
||||
cd dist
|
||||
tar -czf ml-${{ matrix.platform }}.tar.gz ml-${{ matrix.platform }}
|
||||
sha256sum ml-${{ matrix.platform }}.tar.gz > ml-${{ matrix.platform }}.tar.gz.sha256
|
||||
|
||||
- name: Upload build artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ml-${{ matrix.platform }}
|
||||
path: |
|
||||
dist/ml-${{ matrix.platform }}.tar.gz
|
||||
dist/ml-${{ matrix.platform }}.tar.gz.sha256
|
||||
|
||||
build-go-backends:
|
||||
name: Build Go Backends
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: ${{ env.GO_VERSION }}
|
||||
|
||||
- name: Build binaries
|
||||
run: |
|
||||
make cross-platform
|
||||
ls -lh dist/
|
||||
|
||||
- name: Package binaries
|
||||
run: |
|
||||
cd dist
|
||||
for binary in fetch_ml_*; do
|
||||
if [[ -f "${binary}" ]]; then
|
||||
tar -czf "${binary}.tar.gz" "${binary}"
|
||||
sha256sum "${binary}.tar.gz" > "${binary}.tar.gz.sha256"
|
||||
fi
|
||||
done
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: go-backends
|
||||
path: |
|
||||
dist/*.tar.gz
|
||||
dist/*.sha256
|
||||
|
||||
create-release:
|
||||
name: Create GitHub Release
|
||||
needs: [build-cli, build-go-backends]
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Download all artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: artifacts
|
||||
|
||||
- name: Prepare release assets
|
||||
run: |
|
||||
mkdir -p release
|
||||
# Copy CLI binaries
|
||||
cp artifacts/ml-*/ml-*.tar.gz* release/
|
||||
# Copy Go binaries
|
||||
cp artifacts/go-backends/*.tar.gz* release/
|
||||
|
||||
# Generate combined checksums
|
||||
cd release
|
||||
sha256sum *.tar.gz > checksums.txt
|
||||
ls -lh
|
||||
|
||||
- name: Install cosign
|
||||
uses: sigstore/cosign-installer@v3
|
||||
|
||||
- name: Sign checksums.txt (keyless)
|
||||
working-directory: release
|
||||
env:
|
||||
COSIGN_YES: "true"
|
||||
run: |
|
||||
cosign sign-blob \
|
||||
--output-signature checksums.txt.sig \
|
||||
--output-certificate checksums.txt.cert \
|
||||
checksums.txt
|
||||
ls -lh checksums.txt checksums.txt.sig checksums.txt.cert
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
files: release/*
|
||||
body: |
|
||||
## 🚀 Release ${{ github.ref_name }}
|
||||
|
||||
### CLI Binaries (Zero Dependencies)
|
||||
All CLI binaries include embedded static rsync for complete independence.
|
||||
|
||||
- **`ml-linux-x86_64.tar.gz`** - Linux x86_64 (fully static, musl)
|
||||
- **`ml-macos-x86_64.tar.gz`** - macOS Intel
|
||||
- **`ml-macos-arm64.tar.gz`** - macOS Apple Silicon
|
||||
|
||||
### Go Backend Binaries
|
||||
Included as per-platform tarballs named:
|
||||
- `fetch_ml_<component>_<os>_<arch>[.exe].tar.gz`
|
||||
|
||||
### Installation
|
||||
```bash
|
||||
# Download and extract (example: CLI)
|
||||
tar -xzf ml-<platform>.tar.gz
|
||||
|
||||
# Make executable and move to PATH
|
||||
chmod +x ml-<platform>
|
||||
sudo mv ml-<platform> /usr/local/bin/ml
|
||||
|
||||
# Verify installation
|
||||
ml --help
|
||||
```
|
||||
|
||||
### Checksums
|
||||
SHA256 checksums are provided in `checksums.txt` and individual `.sha256` files.
|
||||
generate_release_notes: true
|
||||
draft: false
|
||||
prerelease: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
33
.github/workflows/stale.yml
vendored
33
.github/workflows/stale.yml
vendored
|
|
@ -1,33 +0,0 @@
|
|||
name: Mark Stale Issues and PRs
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * 1" # Every Monday at midnight
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Mark stale issues and PRs
|
||||
uses: actions/stale@v8
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
days-before-stale: 30
|
||||
days-before-close: 14
|
||||
stale-issue-label: "stale"
|
||||
stale-pr-label: "stale"
|
||||
stale-issue-message: |
|
||||
This issue has been automatically marked as stale because it has not had recent activity.
|
||||
It will be closed if no further activity occurs within 14 days.
|
||||
Thank you for your contributions!
|
||||
stale-pr-message: |
|
||||
This pull request has been automatically marked as stale because it has not had recent activity.
|
||||
It will be closed if no further activity occurs within 14 days.
|
||||
Thank you for your contributions!
|
||||
exempt-issue-labels: "pinned,security,help wanted,good first issue"
|
||||
exempt-pr-labels: "pinned,security,help wanted,good first issue"
|
||||
12
.gitignore
vendored
12
.gitignore
vendored
|
|
@ -24,6 +24,10 @@ go.work
|
|||
*.swo
|
||||
*~
|
||||
|
||||
# Allow committing VS Code settings
|
||||
!.vscode/settings.json
|
||||
!cli/.vscode/settings.json
|
||||
|
||||
# OS generated files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
|
|
@ -80,7 +84,7 @@ share/python-wheels/
|
|||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
# MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
*.manifest
|
||||
|
|
@ -212,6 +216,8 @@ coverage.html
|
|||
queue-coverage.out
|
||||
coverage/
|
||||
|
||||
test_results/
|
||||
|
||||
# documents
|
||||
docs/_site/**
|
||||
|
||||
|
|
@ -232,6 +238,7 @@ db/*.db
|
|||
*.pem
|
||||
secrets/
|
||||
cli/src/assets/rsync_release.bin
|
||||
cli/src/assets/rsync_release_*.bin
|
||||
|
||||
# Local artifacts (e.g. test run outputs)
|
||||
.local-artifacts/
|
||||
|
|
@ -265,6 +272,3 @@ db/*.db
|
|||
ssl/
|
||||
*.pem
|
||||
*.key
|
||||
|
||||
# Windsurf AI
|
||||
.windsurf/
|
||||
|
|
|
|||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 25867 44784 ns/op 13520 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 58569440 19.87 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 104650 ns/op 26708 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 8703 553714 ns/op 18123 B/op 131 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 918 1357144 ns/op 6088 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 908 1351232 ns/op 6466 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 909 1338756 ns/op 6719 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 42 26589647 ns/op 657022 B/op 12350 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 94 12482363 ns/op 794538 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 358 3631202 ns/op 1129266 B/op 1376 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 34 35603358 ns/op 1111297 B/op 12625 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 55 27881781 ns/op 615782 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12116 98516 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23803464 49.69 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18534 65030 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 28.082s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 25867 44784 ns/op 13520 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 58569440 19.87 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 104650 ns/op 26708 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 8703 553714 ns/op 18123 B/op 131 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 918 1357144 ns/op 6088 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 908 1351232 ns/op 6466 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 909 1338756 ns/op 6719 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 42 26589647 ns/op 657022 B/op 12350 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 94 12482363 ns/op 794538 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 358 3631202 ns/op 1129266 B/op 1376 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 34 35603358 ns/op 1111297 B/op 12625 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 55 27881781 ns/op 615782 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12116 98516 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23803464 49.69 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18534 65030 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 44784
|
||||
benchmark_memory_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13520
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.87
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMetricsCollection"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 104650
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26708
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 553714
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 18123
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1357144
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6088
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1351232
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6466
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1338756
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6719
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26589647
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 657022
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12482363
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794538
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3631202
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1129266
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 35603358
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1111297
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 27881781
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615782
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 98516
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2933
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 49.69
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 65030
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Benchmark Report - 20251204_230712</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.metric { font-family: monospace; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Benchmark Report</h1>
|
||||
<p><strong>Run ID:</strong> 20251204_230712</p>
|
||||
<p><strong>Date:</strong> Thu Dec 4 18:07:41 EST 2025</p>
|
||||
|
||||
<h2>Results</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Benchmark</th>
|
||||
<th>Time (ns/op)</th>
|
||||
<th>Memory (B/op)</th>
|
||||
<th>Allocs (allocs/op)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkAPIServerCreateJobSimple-24</td>
|
||||
<td>44784</td>
|
||||
<td>ns/op</td>
|
||||
<td>13520</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMetricsCollection-24</td>
|
||||
<td>19.87</td>
|
||||
<td>ns/op</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-1-24</td>
|
||||
<td>104650</td>
|
||||
<td>ns/op</td>
|
||||
<td>26708</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-5-24</td>
|
||||
<td>553714</td>
|
||||
<td>ns/op</td>
|
||||
<td>18123</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-10-24</td>
|
||||
<td>1357144</td>
|
||||
<td>ns/op</td>
|
||||
<td>6088</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-25-24</td>
|
||||
<td>1351232</td>
|
||||
<td>ns/op</td>
|
||||
<td>6466</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-50-24</td>
|
||||
<td>1338756</td>
|
||||
<td>ns/op</td>
|
||||
<td>6719</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/SmallExperiment-24</td>
|
||||
<td>26589647</td>
|
||||
<td>ns/op</td>
|
||||
<td>657022</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/MediumExperiment-24</td>
|
||||
<td>12482363</td>
|
||||
<td>ns/op</td>
|
||||
<td>794538</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/LargeExperiment-24</td>
|
||||
<td>3631202</td>
|
||||
<td>ns/op</td>
|
||||
<td>1129266</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ConcurrentExperiments-24</td>
|
||||
<td>35603358</td>
|
||||
<td>ns/op</td>
|
||||
<td>1111297</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ExperimentMetrics-24</td>
|
||||
<td>27881781</td>
|
||||
<td>ns/op</td>
|
||||
<td>615782</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetCreation-24</td>
|
||||
<td>98516</td>
|
||||
<td>ns/op</td>
|
||||
<td>2933</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetRetrieval-24</td>
|
||||
<td>49.69</td>
|
||||
<td>ns/op</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetUpdate-24</td>
|
||||
<td>65030</td>
|
||||
<td>ns/op</td>
|
||||
<td>1285</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Raw Output</h2>
|
||||
<pre>goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 25867 44784 ns/op 13520 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 58569440 19.87 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 104650 ns/op 26708 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 8703 553714 ns/op 18123 B/op 131 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 918 1357144 ns/op 6088 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 908 1351232 ns/op 6466 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 909 1338756 ns/op 6719 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 42 26589647 ns/op 657022 B/op 12350 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 94 12482363 ns/op 794538 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 358 3631202 ns/op 1129266 B/op 1376 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 34 35603358 ns/op 1111297 B/op 12625 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 55 27881781 ns/op 615782 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12116 98516 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23803464 49.69 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18534 65030 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 28.082s</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 28656 43062 ns/op 13518 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59213934 19.29 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 108510 ns/op 26825 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9895 657334 ns/op 16807 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 914 1346314 ns/op 6032 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 885 1350853 ns/op 6289 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 853 1346826 ns/op 6431 B/op 75 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 43 26357159 ns/op 657854 B/op 12354 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 92 12494936 ns/op 794812 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 348 3659886 ns/op 1129733 B/op 1376 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 40 32637755 ns/op 1114183 B/op 12636 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 56 27153394 ns/op 615897 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 10000 102638 ns/op 2921 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 20641564 50.73 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 20919 65724 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 26.755s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 28656 43062 ns/op 13518 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59213934 19.29 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 108510 ns/op 26825 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9895 657334 ns/op 16807 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 914 1346314 ns/op 6032 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 885 1350853 ns/op 6289 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 853 1346826 ns/op 6431 B/op 75 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 43 26357159 ns/op 657854 B/op 12354 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 92 12494936 ns/op 794812 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 348 3659886 ns/op 1129733 B/op 1376 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 40 32637755 ns/op 1114183 B/op 12636 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 56 27153394 ns/op 615897 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 10000 102638 ns/op 2921 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 20641564 50.73 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 20919 65724 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 43062
|
||||
benchmark_memory_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13518
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.29
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMetricsCollection"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 108510
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26825
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 657334
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 16807
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1346314
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6032
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1350853
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6289
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1346826
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6431
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26357159
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 657854
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12494936
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794812
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3659886
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1129733
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 32637755
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1114183
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 27153394
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615897
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 102638
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2921
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 50.73
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 65724
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Benchmark Report - 20251204_231218</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.metric { font-family: monospace; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Benchmark Report</h1>
|
||||
<p><strong>Run ID:</strong> 20251204_231218</p>
|
||||
<p><strong>Date:</strong> Thu Dec 4 18:12:46 EST 2025</p>
|
||||
|
||||
<h2>Results</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Benchmark</th>
|
||||
<th>Time (ns/op)</th>
|
||||
<th>Memory (B/op)</th>
|
||||
<th>Allocs (allocs/op)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkAPIServerCreateJobSimple-24</td>
|
||||
<td>43062</td>
|
||||
<td>ns/op</td>
|
||||
<td>13518</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMetricsCollection-24</td>
|
||||
<td>19.29</td>
|
||||
<td>ns/op</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-1-24</td>
|
||||
<td>108510</td>
|
||||
<td>ns/op</td>
|
||||
<td>26825</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-5-24</td>
|
||||
<td>657334</td>
|
||||
<td>ns/op</td>
|
||||
<td>16807</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-10-24</td>
|
||||
<td>1346314</td>
|
||||
<td>ns/op</td>
|
||||
<td>6032</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-25-24</td>
|
||||
<td>1350853</td>
|
||||
<td>ns/op</td>
|
||||
<td>6289</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-50-24</td>
|
||||
<td>1346826</td>
|
||||
<td>ns/op</td>
|
||||
<td>6431</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/SmallExperiment-24</td>
|
||||
<td>26357159</td>
|
||||
<td>ns/op</td>
|
||||
<td>657854</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/MediumExperiment-24</td>
|
||||
<td>12494936</td>
|
||||
<td>ns/op</td>
|
||||
<td>794812</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/LargeExperiment-24</td>
|
||||
<td>3659886</td>
|
||||
<td>ns/op</td>
|
||||
<td>1129733</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ConcurrentExperiments-24</td>
|
||||
<td>32637755</td>
|
||||
<td>ns/op</td>
|
||||
<td>1114183</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ExperimentMetrics-24</td>
|
||||
<td>27153394</td>
|
||||
<td>ns/op</td>
|
||||
<td>615897</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetCreation-24</td>
|
||||
<td>102638</td>
|
||||
<td>ns/op</td>
|
||||
<td>2921</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetRetrieval-24</td>
|
||||
<td>50.73</td>
|
||||
<td>ns/op</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetUpdate-24</td>
|
||||
<td>65724</td>
|
||||
<td>ns/op</td>
|
||||
<td>1285</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Raw Output</h2>
|
||||
<pre>goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 28656 43062 ns/op 13518 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59213934 19.29 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 108510 ns/op 26825 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9895 657334 ns/op 16807 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 914 1346314 ns/op 6032 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 885 1350853 ns/op 6289 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 853 1346826 ns/op 6431 B/op 75 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 43 26357159 ns/op 657854 B/op 12354 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 92 12494936 ns/op 794812 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 348 3659886 ns/op 1129733 B/op 1376 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 40 32637755 ns/op 1114183 B/op 12636 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 56 27153394 ns/op 615897 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 10000 102638 ns/op 2921 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 20641564 50.73 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 20919 65724 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 26.755s</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 28408 45304 ns/op 13517 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 60437035 19.88 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 106089 ns/op 26846 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9220 579691 ns/op 17615 B/op 128 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 925 1348616 ns/op 6050 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 927 1340898 ns/op 6529 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 916 1333626 ns/op 6694 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 43 26542657 ns/op 656983 B/op 12350 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 100 12121203 ns/op 794420 B/op 6253 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 358 3704013 ns/op 1128981 B/op 1374 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 34 32337061 ns/op 1113039 B/op 12630 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26482224 ns/op 615734 B/op 17883 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12356 101514 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24143787 49.80 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18423 65515 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 28.641s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 28408 45304 ns/op 13517 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 60437035 19.88 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 106089 ns/op 26846 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9220 579691 ns/op 17615 B/op 128 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 925 1348616 ns/op 6050 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 927 1340898 ns/op 6529 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 916 1333626 ns/op 6694 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 43 26542657 ns/op 656983 B/op 12350 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 100 12121203 ns/op 794420 B/op 6253 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 358 3704013 ns/op 1128981 B/op 1374 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 34 32337061 ns/op 1113039 B/op 12630 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26482224 ns/op 615734 B/op 17883 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12356 101514 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24143787 49.80 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18423 65515 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 45304
|
||||
benchmark_memory_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13517
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.88
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMetricsCollection"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 106089
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26846
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 579691
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 17615
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1348616
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6050
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1340898
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6529
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1333626
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6694
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26542657
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 656983
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12121203
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794420
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3704013
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1128981
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 32337061
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1113039
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 26482224
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615734
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 101514
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2934
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 49.80
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 65515
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Benchmark Report - 20251204_231255</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.metric { font-family: monospace; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Benchmark Report</h1>
|
||||
<p><strong>Run ID:</strong> 20251204_231255</p>
|
||||
<p><strong>Date:</strong> Thu Dec 4 18:13:24 EST 2025</p>
|
||||
|
||||
<h2>Results</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Benchmark</th>
|
||||
<th>Time (ns/op)</th>
|
||||
<th>Memory (B/op)</th>
|
||||
<th>Allocs (allocs/op)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkAPIServerCreateJobSimple-24</td>
|
||||
<td>45304</td>
|
||||
<td>ns/op</td>
|
||||
<td>13517</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMetricsCollection-24</td>
|
||||
<td>19.88</td>
|
||||
<td>ns/op</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-1-24</td>
|
||||
<td>106089</td>
|
||||
<td>ns/op</td>
|
||||
<td>26846</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-5-24</td>
|
||||
<td>579691</td>
|
||||
<td>ns/op</td>
|
||||
<td>17615</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-10-24</td>
|
||||
<td>1348616</td>
|
||||
<td>ns/op</td>
|
||||
<td>6050</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-25-24</td>
|
||||
<td>1340898</td>
|
||||
<td>ns/op</td>
|
||||
<td>6529</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-50-24</td>
|
||||
<td>1333626</td>
|
||||
<td>ns/op</td>
|
||||
<td>6694</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/SmallExperiment-24</td>
|
||||
<td>26542657</td>
|
||||
<td>ns/op</td>
|
||||
<td>656983</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/MediumExperiment-24</td>
|
||||
<td>12121203</td>
|
||||
<td>ns/op</td>
|
||||
<td>794420</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/LargeExperiment-24</td>
|
||||
<td>3704013</td>
|
||||
<td>ns/op</td>
|
||||
<td>1128981</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ConcurrentExperiments-24</td>
|
||||
<td>32337061</td>
|
||||
<td>ns/op</td>
|
||||
<td>1113039</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ExperimentMetrics-24</td>
|
||||
<td>26482224</td>
|
||||
<td>ns/op</td>
|
||||
<td>615734</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetCreation-24</td>
|
||||
<td>101514</td>
|
||||
<td>ns/op</td>
|
||||
<td>2934</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetRetrieval-24</td>
|
||||
<td>49.80</td>
|
||||
<td>ns/op</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetUpdate-24</td>
|
||||
<td>65515</td>
|
||||
<td>ns/op</td>
|
||||
<td>1285</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Raw Output</h2>
|
||||
<pre>goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 28408 45304 ns/op 13517 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 60437035 19.88 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 106089 ns/op 26846 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9220 579691 ns/op 17615 B/op 128 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 925 1348616 ns/op 6050 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 927 1340898 ns/op 6529 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 916 1333626 ns/op 6694 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 43 26542657 ns/op 656983 B/op 12350 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 100 12121203 ns/op 794420 B/op 6253 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 358 3704013 ns/op 1128981 B/op 1374 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 34 32337061 ns/op 1113039 B/op 12630 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26482224 ns/op 615734 B/op 17883 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12356 101514 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24143787 49.80 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18423 65515 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 28.641s</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 28129 45677 ns/op 13532 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59903404 19.48 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 105817 ns/op 26610 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 8654 545199 ns/op 18285 B/op 132 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 904 1350040 ns/op 6043 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 924 1332526 ns/op 6228 B/op 72 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 952 1339113 ns/op 6724 B/op 75 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 45 26355390 ns/op 657327 B/op 12351 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 92 12034762 ns/op 794688 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 351 3763459 ns/op 1129490 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 37 30668937 ns/op 1112708 B/op 12626 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 56 26930825 ns/op 615839 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12364 102242 ns/op 2935 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23809105 50.50 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18494 65564 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 27.143s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 28129 45677 ns/op 13532 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59903404 19.48 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 105817 ns/op 26610 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 8654 545199 ns/op 18285 B/op 132 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 904 1350040 ns/op 6043 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 924 1332526 ns/op 6228 B/op 72 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 952 1339113 ns/op 6724 B/op 75 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 45 26355390 ns/op 657327 B/op 12351 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 92 12034762 ns/op 794688 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 351 3763459 ns/op 1129490 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 37 30668937 ns/op 1112708 B/op 12626 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 56 26930825 ns/op 615839 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12364 102242 ns/op 2935 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23809105 50.50 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18494 65564 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 45677
|
||||
benchmark_memory_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13532
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.48
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMetricsCollection"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 105817
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26610
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 545199
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 18285
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1350040
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6043
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1332526
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6228
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1339113
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6724
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26355390
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 657327
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12034762
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794688
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3763459
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1129490
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 30668937
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1112708
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 26930825
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615839
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 102242
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2935
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 50.50
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 65564
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Benchmark Report - 20251204_231459</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.metric { font-family: monospace; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Benchmark Report</h1>
|
||||
<p><strong>Run ID:</strong> 20251204_231459</p>
|
||||
<p><strong>Date:</strong> Thu Dec 4 18:15:28 EST 2025</p>
|
||||
|
||||
<h2>Results</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Benchmark</th>
|
||||
<th>Time (ns/op)</th>
|
||||
<th>Memory (B/op)</th>
|
||||
<th>Allocs (allocs/op)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkAPIServerCreateJobSimple-24</td>
|
||||
<td>45677</td>
|
||||
<td>ns/op</td>
|
||||
<td>13532</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMetricsCollection-24</td>
|
||||
<td>19.48</td>
|
||||
<td>ns/op</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-1-24</td>
|
||||
<td>105817</td>
|
||||
<td>ns/op</td>
|
||||
<td>26610</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-5-24</td>
|
||||
<td>545199</td>
|
||||
<td>ns/op</td>
|
||||
<td>18285</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-10-24</td>
|
||||
<td>1350040</td>
|
||||
<td>ns/op</td>
|
||||
<td>6043</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-25-24</td>
|
||||
<td>1332526</td>
|
||||
<td>ns/op</td>
|
||||
<td>6228</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-50-24</td>
|
||||
<td>1339113</td>
|
||||
<td>ns/op</td>
|
||||
<td>6724</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/SmallExperiment-24</td>
|
||||
<td>26355390</td>
|
||||
<td>ns/op</td>
|
||||
<td>657327</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/MediumExperiment-24</td>
|
||||
<td>12034762</td>
|
||||
<td>ns/op</td>
|
||||
<td>794688</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/LargeExperiment-24</td>
|
||||
<td>3763459</td>
|
||||
<td>ns/op</td>
|
||||
<td>1129490</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ConcurrentExperiments-24</td>
|
||||
<td>30668937</td>
|
||||
<td>ns/op</td>
|
||||
<td>1112708</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ExperimentMetrics-24</td>
|
||||
<td>26930825</td>
|
||||
<td>ns/op</td>
|
||||
<td>615839</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetCreation-24</td>
|
||||
<td>102242</td>
|
||||
<td>ns/op</td>
|
||||
<td>2935</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetRetrieval-24</td>
|
||||
<td>50.50</td>
|
||||
<td>ns/op</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetUpdate-24</td>
|
||||
<td>65564</td>
|
||||
<td>ns/op</td>
|
||||
<td>1285</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Raw Output</h2>
|
||||
<pre>goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 28129 45677 ns/op 13532 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59903404 19.48 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 105817 ns/op 26610 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 8654 545199 ns/op 18285 B/op 132 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 904 1350040 ns/op 6043 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 924 1332526 ns/op 6228 B/op 72 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 952 1339113 ns/op 6724 B/op 75 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 45 26355390 ns/op 657327 B/op 12351 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 92 12034762 ns/op 794688 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 351 3763459 ns/op 1129490 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 37 30668937 ns/op 1112708 B/op 12626 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 56 26930825 ns/op 615839 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12364 102242 ns/op 2935 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23809105 50.50 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18494 65564 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 27.143s</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 26200 44608 ns/op 13514 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 58956229 19.88 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 108040 ns/op 26965 B/op 163 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 10000 657977 ns/op 16658 B/op 123 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 843 1342869 ns/op 6078 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 902 1356405 ns/op 6555 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 907 1341416 ns/op 6429 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 39 26197300 ns/op 657330 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 100 12172133 ns/op 794610 B/op 6253 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 348 3686597 ns/op 1129573 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 33 33467878 ns/op 1111544 B/op 12626 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 57 27330560 ns/op 615815 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12249 97669 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24545986 50.01 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18687 65891 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 28.732s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 26200 44608 ns/op 13514 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 58956229 19.88 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 108040 ns/op 26965 B/op 163 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 10000 657977 ns/op 16658 B/op 123 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 843 1342869 ns/op 6078 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 902 1356405 ns/op 6555 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 907 1341416 ns/op 6429 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 39 26197300 ns/op 657330 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 100 12172133 ns/op 794610 B/op 6253 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 348 3686597 ns/op 1129573 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 33 33467878 ns/op 1111544 B/op 12626 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 57 27330560 ns/op 615815 B/op 17885 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12249 97669 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24545986 50.01 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18687 65891 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 44608
|
||||
benchmark_memory_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13514
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.88
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMetricsCollection"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 108040
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26965
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 657977
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 16658
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1342869
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6078
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1356405
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6555
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1341416
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6429
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26197300
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 657330
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12172133
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794610
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3686597
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1129573
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 33467878
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1111544
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 27330560
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615815
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 97669
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2934
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 50.01
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 65891
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 27906 45877 ns/op 13520 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59125434 19.91 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 106563 ns/op 26651 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9916 580762 ns/op 16774 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 902 1361628 ns/op 6050 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 913 1341660 ns/op 6645 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 902 1339436 ns/op 6130 B/op 73 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 42 26144707 ns/op 657412 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 99 12045172 ns/op 794945 B/op 6255 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 350 3655986 ns/op 1129633 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 30 37392029 ns/op 1111096 B/op 12623 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26943573 ns/op 615802 B/op 17883 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12285 101658 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24175867 50.53 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18481 65640 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 29.026s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 27906 45877 ns/op 13520 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59125434 19.91 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 106563 ns/op 26651 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9916 580762 ns/op 16774 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 902 1361628 ns/op 6050 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 913 1341660 ns/op 6645 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 902 1339436 ns/op 6130 B/op 73 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 42 26144707 ns/op 657412 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 99 12045172 ns/op 794945 B/op 6255 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 350 3655986 ns/op 1129633 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 30 37392029 ns/op 1111096 B/op 12623 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26943573 ns/op 615802 B/op 17883 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12285 101658 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24175867 50.53 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18481 65640 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 45877
|
||||
benchmark_memory_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13520
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.91
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMetricsCollection"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 106563
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26651
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 580762
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 16774
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1361628
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6050
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1341660
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6645
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1339436
|
||||
benchmark_memory_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6130
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26144707
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 657412
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12045172
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794945
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3655986
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1129633
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 37392029
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1111096
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 26943573
|
||||
benchmark_memory_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615802
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 101658
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2934
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 50.53
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 65640
|
||||
benchmark_memory_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} ns/op
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Benchmark Report - 20251204_231712</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.metric { font-family: monospace; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Benchmark Report</h1>
|
||||
<p><strong>Run ID:</strong> 20251204_231712</p>
|
||||
<p><strong>Date:</strong> Thu Dec 4 18:17:42 EST 2025</p>
|
||||
|
||||
<h2>Results</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Benchmark</th>
|
||||
<th>Time (ns/op)</th>
|
||||
<th>Memory (B/op)</th>
|
||||
<th>Allocs (allocs/op)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkAPIServerCreateJobSimple-24</td>
|
||||
<td>45877</td>
|
||||
<td>ns/op</td>
|
||||
<td>13520</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMetricsCollection-24</td>
|
||||
<td>19.91</td>
|
||||
<td>ns/op</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-1-24</td>
|
||||
<td>106563</td>
|
||||
<td>ns/op</td>
|
||||
<td>26651</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-5-24</td>
|
||||
<td>580762</td>
|
||||
<td>ns/op</td>
|
||||
<td>16774</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-10-24</td>
|
||||
<td>1361628</td>
|
||||
<td>ns/op</td>
|
||||
<td>6050</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-25-24</td>
|
||||
<td>1341660</td>
|
||||
<td>ns/op</td>
|
||||
<td>6645</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-50-24</td>
|
||||
<td>1339436</td>
|
||||
<td>ns/op</td>
|
||||
<td>6130</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/SmallExperiment-24</td>
|
||||
<td>26144707</td>
|
||||
<td>ns/op</td>
|
||||
<td>657412</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/MediumExperiment-24</td>
|
||||
<td>12045172</td>
|
||||
<td>ns/op</td>
|
||||
<td>794945</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/LargeExperiment-24</td>
|
||||
<td>3655986</td>
|
||||
<td>ns/op</td>
|
||||
<td>1129633</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ConcurrentExperiments-24</td>
|
||||
<td>37392029</td>
|
||||
<td>ns/op</td>
|
||||
<td>1111096</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ExperimentMetrics-24</td>
|
||||
<td>26943573</td>
|
||||
<td>ns/op</td>
|
||||
<td>615802</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetCreation-24</td>
|
||||
<td>101658</td>
|
||||
<td>ns/op</td>
|
||||
<td>2934</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetRetrieval-24</td>
|
||||
<td>50.53</td>
|
||||
<td>ns/op</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetUpdate-24</td>
|
||||
<td>65640</td>
|
||||
<td>ns/op</td>
|
||||
<td>1285</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Raw Output</h2>
|
||||
<pre>goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 27906 45877 ns/op 13520 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 59125434 19.91 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 106563 ns/op 26651 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9916 580762 ns/op 16774 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 902 1361628 ns/op 6050 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 913 1341660 ns/op 6645 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 902 1339436 ns/op 6130 B/op 73 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 42 26144707 ns/op 657412 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 99 12045172 ns/op 794945 B/op 6255 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 350 3655986 ns/op 1129633 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 30 37392029 ns/op 1111096 B/op 12623 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26943573 ns/op 615802 B/op 17883 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12285 101658 ns/op 2934 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 24175867 50.53 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18481 65640 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 29.026s</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 27950 44615 ns/op 13510 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 61569640 19.81 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 104975 ns/op 26775 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9744 616978 ns/op 16959 B/op 125 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 921 1342897 ns/op 6123 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 916 1355236 ns/op 6286 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 930 1326230 ns/op 6997 B/op 76 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 44 26734717 ns/op 657047 B/op 12351 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 93 12165317 ns/op 794462 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 364 3637957 ns/op 1128897 B/op 1374 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 33 31061085 ns/op 1114816 B/op 12631 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 54 26862161 ns/op 615718 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12193 102081 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 19180039 52.64 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18472 65401 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 27.261s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 27950 44615 ns/op 13510 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 61569640 19.81 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 104975 ns/op 26775 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9744 616978 ns/op 16959 B/op 125 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 921 1342897 ns/op 6123 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 916 1355236 ns/op 6286 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 930 1326230 ns/op 6997 B/op 76 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 44 26734717 ns/op 657047 B/op 12351 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 93 12165317 ns/op 794462 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 364 3637957 ns/op 1128897 B/op 1374 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 33 31061085 ns/op 1114816 B/op 12631 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 54 26862161 ns/op 615718 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12193 102081 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 19180039 52.64 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18472 65401 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 44615
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13510
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.81
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 104975
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26775
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 616978
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 16959
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1342897
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6123
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1355236
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6286
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1326230
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6997
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26734717
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 657047
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12165317
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794462
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3637957
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1128897
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 31061085
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1114816
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 26862161
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615718
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 102081
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2933
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 52.64
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 65401
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Benchmark Report - 20251204_231833</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.metric { font-family: monospace; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Benchmark Report</h1>
|
||||
<p><strong>Run ID:</strong> 20251204_231833</p>
|
||||
<p><strong>Date:</strong> Thu Dec 4 18:19:01 EST 2025</p>
|
||||
|
||||
<h2>Results</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Benchmark</th>
|
||||
<th>Time (ns/op)</th>
|
||||
<th>Memory (B/op)</th>
|
||||
<th>Allocs (allocs/op)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkAPIServerCreateJobSimple-24</td>
|
||||
<td>44615</td>
|
||||
<td>ns/op</td>
|
||||
<td>13510</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMetricsCollection-24</td>
|
||||
<td>19.81</td>
|
||||
<td>ns/op</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-1-24</td>
|
||||
<td>104975</td>
|
||||
<td>ns/op</td>
|
||||
<td>26775</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-5-24</td>
|
||||
<td>616978</td>
|
||||
<td>ns/op</td>
|
||||
<td>16959</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-10-24</td>
|
||||
<td>1342897</td>
|
||||
<td>ns/op</td>
|
||||
<td>6123</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-25-24</td>
|
||||
<td>1355236</td>
|
||||
<td>ns/op</td>
|
||||
<td>6286</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-50-24</td>
|
||||
<td>1326230</td>
|
||||
<td>ns/op</td>
|
||||
<td>6997</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/SmallExperiment-24</td>
|
||||
<td>26734717</td>
|
||||
<td>ns/op</td>
|
||||
<td>657047</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/MediumExperiment-24</td>
|
||||
<td>12165317</td>
|
||||
<td>ns/op</td>
|
||||
<td>794462</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/LargeExperiment-24</td>
|
||||
<td>3637957</td>
|
||||
<td>ns/op</td>
|
||||
<td>1128897</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ConcurrentExperiments-24</td>
|
||||
<td>31061085</td>
|
||||
<td>ns/op</td>
|
||||
<td>1114816</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ExperimentMetrics-24</td>
|
||||
<td>26862161</td>
|
||||
<td>ns/op</td>
|
||||
<td>615718</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetCreation-24</td>
|
||||
<td>102081</td>
|
||||
<td>ns/op</td>
|
||||
<td>2933</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetRetrieval-24</td>
|
||||
<td>52.64</td>
|
||||
<td>ns/op</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetUpdate-24</td>
|
||||
<td>65401</td>
|
||||
<td>ns/op</td>
|
||||
<td>1285</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Raw Output</h2>
|
||||
<pre>goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 27950 44615 ns/op 13510 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 61569640 19.81 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 104975 ns/op 26775 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 9744 616978 ns/op 16959 B/op 125 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 921 1342897 ns/op 6123 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 916 1355236 ns/op 6286 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 930 1326230 ns/op 6997 B/op 76 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 44 26734717 ns/op 657047 B/op 12351 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 93 12165317 ns/op 794462 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 364 3637957 ns/op 1128897 B/op 1374 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 33 31061085 ns/op 1114816 B/op 12631 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 54 26862161 ns/op 615718 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12193 102081 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 19180039 52.64 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18472 65401 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 27.261s</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 27296 43913 ns/op 13526 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 61271120 19.34 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 105096 ns/op 26660 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 10000 646391 ns/op 16738 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 872 1369525 ns/op 6036 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 904 1394439 ns/op 6546 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 889 1373567 ns/op 6347 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 40 26726470 ns/op 657367 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 97 12430890 ns/op 794823 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 346 3863256 ns/op 1129599 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 36 32534372 ns/op 1115220 B/op 12637 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26962389 ns/op 615818 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12075 100813 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23898721 50.28 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18692 63463 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 28.692s
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
BenchmarkAPIServerCreateJobSimple-24 27296 43913 ns/op 13526 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 61271120 19.34 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 105096 ns/op 26660 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 10000 646391 ns/op 16738 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 872 1369525 ns/op 6036 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 904 1394439 ns/op 6546 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 889 1373567 ns/op 6347 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 40 26726470 ns/op 657367 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 97 12430890 ns/op 794823 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 346 3863256 ns/op 1129599 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 36 32534372 ns/op 1115220 B/op 12637 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26962389 ns/op 615818 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12075 100813 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23898721 50.28 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18692 63463 ns/op 1285 B/op 36 allocs/op
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# HELP benchmark_time_per_op Time per operation in nanoseconds
|
||||
# TYPE benchmark_time_per_op gauge
|
||||
# HELP benchmark_memory_per_op Memory per operation in bytes
|
||||
# TYPE benchmark_memory_per_op gauge
|
||||
# HELP benchmark_allocs_per_op Allocations per operation
|
||||
# TYPE benchmark_allocs_per_op gauge
|
||||
benchmark_time_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 43913
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkAPIServerCreateJobSimple"} 13526
|
||||
benchmark_time_per_op{benchmark="BenchmarkMetricsCollection"} 19.34
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMetricsCollection"} 0
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 105096
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_1"} 26660
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 646391
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_5"} 16738
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 1369525
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_10"} 6036
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 1394439
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_25"} 6546
|
||||
benchmark_time_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 1373567
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkConcurrentRequests_Concurrency_50"} 6347
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 26726470
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_SmallExperiment"} 657367
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 12430890
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_MediumExperiment"} 794823
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 3863256
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_LargeExperiment"} 1129599
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 32534372
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ConcurrentExperiments"} 1115220
|
||||
benchmark_time_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 26962389
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkMLExperimentExecution_ExperimentMetrics"} 615818
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 100813
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetCreation"} 2933
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 50.28
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetRetrieval"} 16
|
||||
benchmark_time_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 63463
|
||||
benchmark_allocs_per_op{benchmark="BenchmarkDatasetOperations_DatasetUpdate"} 1285
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Benchmark Report - 20251204_232656</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; margin: 20px; }
|
||||
table { border-collapse: collapse; width: 100%; }
|
||||
th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
|
||||
th { background-color: #f2f2f2; }
|
||||
.metric { font-family: monospace; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Benchmark Report</h1>
|
||||
<p><strong>Run ID:</strong> 20251204_232656</p>
|
||||
<p><strong>Date:</strong> Thu Dec 4 18:27:25 EST 2025</p>
|
||||
|
||||
<h2>Results</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Benchmark</th>
|
||||
<th>Time (ns/op)</th>
|
||||
<th>Memory (B/op)</th>
|
||||
<th>Allocs (allocs/op)</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkAPIServerCreateJobSimple-24</td>
|
||||
<td>43913</td>
|
||||
<td>ns/op</td>
|
||||
<td>13526</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMetricsCollection-24</td>
|
||||
<td>19.34</td>
|
||||
<td>ns/op</td>
|
||||
<td>0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-1-24</td>
|
||||
<td>105096</td>
|
||||
<td>ns/op</td>
|
||||
<td>26660</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-5-24</td>
|
||||
<td>646391</td>
|
||||
<td>ns/op</td>
|
||||
<td>16738</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-10-24</td>
|
||||
<td>1369525</td>
|
||||
<td>ns/op</td>
|
||||
<td>6036</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-25-24</td>
|
||||
<td>1394439</td>
|
||||
<td>ns/op</td>
|
||||
<td>6546</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkConcurrentRequests/Concurrency-50-24</td>
|
||||
<td>1373567</td>
|
||||
<td>ns/op</td>
|
||||
<td>6347</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/SmallExperiment-24</td>
|
||||
<td>26726470</td>
|
||||
<td>ns/op</td>
|
||||
<td>657367</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/MediumExperiment-24</td>
|
||||
<td>12430890</td>
|
||||
<td>ns/op</td>
|
||||
<td>794823</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/LargeExperiment-24</td>
|
||||
<td>3863256</td>
|
||||
<td>ns/op</td>
|
||||
<td>1129599</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ConcurrentExperiments-24</td>
|
||||
<td>32534372</td>
|
||||
<td>ns/op</td>
|
||||
<td>1115220</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkMLExperimentExecution/ExperimentMetrics-24</td>
|
||||
<td>26962389</td>
|
||||
<td>ns/op</td>
|
||||
<td>615818</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetCreation-24</td>
|
||||
<td>100813</td>
|
||||
<td>ns/op</td>
|
||||
<td>2933</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetRetrieval-24</td>
|
||||
<td>50.28</td>
|
||||
<td>ns/op</td>
|
||||
<td>16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="metric">BenchmarkDatasetOperations/DatasetUpdate-24</td>
|
||||
<td>63463</td>
|
||||
<td>ns/op</td>
|
||||
<td>1285</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2>Raw Output</h2>
|
||||
<pre>goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/jfraeys/fetch_ml/tests/benchmarks
|
||||
cpu: Apple M2 Ultra
|
||||
BenchmarkAPIServerCreateJobSimple-24 27296 43913 ns/op 13526 B/op 98 allocs/op
|
||||
BenchmarkMetricsCollection-24 61271120 19.34 ns/op 0 B/op 0 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-1-24 10000 105096 ns/op 26660 B/op 162 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-5-24 10000 646391 ns/op 16738 B/op 124 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-10-24 872 1369525 ns/op 6036 B/op 71 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-25-24 904 1394439 ns/op 6546 B/op 73 allocs/op
|
||||
BenchmarkConcurrentRequests/Concurrency-50-24 889 1373567 ns/op 6347 B/op 74 allocs/op
|
||||
BenchmarkMLExperimentExecution/SmallExperiment-24 40 26726470 ns/op 657367 B/op 12352 allocs/op
|
||||
BenchmarkMLExperimentExecution/MediumExperiment-24 97 12430890 ns/op 794823 B/op 6254 allocs/op
|
||||
BenchmarkMLExperimentExecution/LargeExperiment-24 346 3863256 ns/op 1129599 B/op 1375 allocs/op
|
||||
BenchmarkMLExperimentExecution/ConcurrentExperiments-24 36 32534372 ns/op 1115220 B/op 12637 allocs/op
|
||||
BenchmarkMLExperimentExecution/ExperimentMetrics-24 52 26962389 ns/op 615818 B/op 17884 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetCreation-24 12075 100813 ns/op 2933 B/op 75 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetRetrieval-24 23898721 50.28 ns/op 16 B/op 1 allocs/op
|
||||
BenchmarkDatasetOperations/DatasetUpdate-24 18692 63463 ns/op 1285 B/op 36 allocs/op
|
||||
PASS
|
||||
ok github.com/jfraeys/fetch_ml/tests/benchmarks 28.692s</pre>
|
||||
</body>
|
||||
</html>
|
||||
307
.pylintrc
307
.pylintrc
|
|
@ -1,307 +0,0 @@
|
|||
[MASTER]
|
||||
# Google Python Style Guide Configuration
|
||||
# Based on https://google.github.io/styleguide/pyguide.html
|
||||
|
||||
# Files or directories to be skipped over when performing analysis.
|
||||
ignore=
|
||||
.git,
|
||||
__pycache__,
|
||||
*.pyc,
|
||||
.pytest_cache,
|
||||
.mypy_cache,
|
||||
.venv,
|
||||
venv,
|
||||
# ML experiment code - exclude from style checks
|
||||
podman/workspace,
|
||||
workspace,
|
||||
tests/fixtures/examples,
|
||||
tests/fixtures/podman,
|
||||
results,
|
||||
data,
|
||||
logs,
|
||||
secrets,
|
||||
.agent
|
||||
|
||||
# Regular expression matching files that should be skipped entirely.
|
||||
ignore-patterns=
|
||||
^\.#,
|
||||
^setup\.py$,
|
||||
^conftest\.py$
|
||||
|
||||
# Add files or directories matching the regex patterns to the ignore list.
|
||||
ignore-paths=
|
||||
|
||||
# Files or directories to be added to the list of ignored regular expressions.
|
||||
ignore-paths=
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
|
||||
# Use multiple processes to speed up Pylint.
|
||||
jobs=1
|
||||
|
||||
# List of plugins (as comma separated values of python module names) to load,
|
||||
# usually to register additional checkers.
|
||||
load-plugins=
|
||||
|
||||
# Load all enabled extensions.
|
||||
load-all-plugins=no
|
||||
|
||||
# Control the amount of potential astroid warnings (0, 1 or 2).
|
||||
unsafe-load-any-extension=no
|
||||
|
||||
# A comma-separated list of package or module names from where C extensions may
|
||||
# be loaded. Extensions are loading into the active Python interpreter and may
|
||||
# run arbitrary code.
|
||||
extension-pkg-whitelist=
|
||||
|
||||
[MESSAGES CONTROL]
|
||||
# Only show warnings with the listed confidence levels.
|
||||
confidence=
|
||||
|
||||
# Disable the message, report, category or checker with the given id(s).
|
||||
disable=
|
||||
# Google Style Guide allows some of these
|
||||
missing-module-docstring,
|
||||
missing-function-docstring,
|
||||
too-many-locals,
|
||||
too-many-arguments,
|
||||
too-many-instance-attributes,
|
||||
too-many-public-methods,
|
||||
too-few-public-methods,
|
||||
too-many-lines,
|
||||
too-many-statements,
|
||||
too-many-branches,
|
||||
too-many-nested-blocks,
|
||||
# Not relevant for ML projects
|
||||
invalid-name,
|
||||
C0114, # missing-module-docstring
|
||||
C0115, # missing-class-docstring
|
||||
C0116, # missing-function-docstring
|
||||
R0903, # too-few-public-methods
|
||||
R0902, # too-many-instance-attributes
|
||||
R0913, # too-many-arguments
|
||||
R0914, # too-many-locals
|
||||
R0915, # too-many-statements
|
||||
R0912, # too-many-branches
|
||||
R0911, # too-many-return-statements
|
||||
W0613, # unused-argument (common in callbacks)
|
||||
|
||||
# Enable the message, report, category or checker with the given id(s).
|
||||
enable=
|
||||
|
||||
[REPORTS]
|
||||
# Set the output format.
|
||||
output-format=text
|
||||
|
||||
# Tells whether to display a full report or only the messages.
|
||||
reports=no
|
||||
|
||||
# Python expression which determines if a message should not be displayed.
|
||||
evaluation=
|
||||
|
||||
# Template used to display messages.
|
||||
msg-template=
|
||||
|
||||
[BASIC]
|
||||
# Good variable names which should always be accepted, separated by a comma.
|
||||
good-names=
|
||||
i,j,k,ex,Run,_
|
||||
|
||||
# Bad variable names which should always be refused.
|
||||
bad-names=
|
||||
foo,bar,baz,toto,tutu,tata
|
||||
|
||||
# List of builtins function names that should not be used.
|
||||
bad-functions=
|
||||
|
||||
# Regular expression for correct variable names.
|
||||
variable-rgx=^[a-z_][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression for correct constant names.
|
||||
const-rgx=^(_?[A-Z][A-Z0-9_]{2,30}|__.*__)$
|
||||
|
||||
# Regular expression for correct function names.
|
||||
function-rgx=^(?:(?P<camel_case>_?[A-Z][a-zA-Z0-9]{2,30})|(?P<snake_case>_?[a-z][a-z0-9_]{2,30}))$
|
||||
|
||||
# Regular expression for correct class names.
|
||||
class-rgx=^_?[A-Z][a-zA-Z0-9]{2,30}$
|
||||
|
||||
# Regular expression for correct attribute names.
|
||||
attr-rgx=^_{0,2}[a-z][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression for correct argument names.
|
||||
argument-rgx=^[a-z][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression for correct method resolution order names.
|
||||
method-rgx=^_{0,2}[a-z][a-z0-9_]{2,30}$
|
||||
|
||||
# Regular expression which should only match function or class names that do
|
||||
# not require a docstring.
|
||||
no-docstring-rgx=^_
|
||||
|
||||
# Minimum line length for functions/classes that require docstrings.
|
||||
docstring-min-length=-1
|
||||
|
||||
[TYPECHECK]
|
||||
# List of decorators that produce context managers.
|
||||
contextmanager-decorators=contextlib.contextmanager
|
||||
|
||||
# List of member names which should be excluded from the access member check.
|
||||
exclude-members=
|
||||
|
||||
# List of qualified names (objects) which require a disable protection.
|
||||
generated-members=
|
||||
|
||||
[MISCELLANEOUS]
|
||||
# List of note tags to take in consideration.
|
||||
notes=
|
||||
|
||||
[VARIABLES]
|
||||
# Tells whether we should check for unused imports.
|
||||
init-import=no
|
||||
|
||||
# A regular expression matching the name of dummy variables.
|
||||
dummy-variable-rgx=^_|dummy
|
||||
|
||||
# List of variable names that should not be used.
|
||||
additional-builtins=
|
||||
|
||||
# List of variables which are ignored for the undefined-variable check.
|
||||
ignored-classes=
|
||||
|
||||
# List of members which are skipped from the member access check.
|
||||
ignored-modules=
|
||||
|
||||
# List of deprecated symbols which should not be used.
|
||||
deprecated-modules=
|
||||
|
||||
# List of symbols that can be safely accessed.
|
||||
allowed-redefined-builtins=
|
||||
|
||||
[FORMAT]
|
||||
# Maximum number of characters on a single line.
|
||||
max-line-length=80
|
||||
|
||||
# Regexp for a line that is allowed to be longer than the limit.
|
||||
long-line-regexp=^[\t ]*(# )?<?https?://\S+>?$
|
||||
|
||||
# Allow the body of an if to be on the same line as the test.
|
||||
single-line-if-stmt=no
|
||||
|
||||
# List of optional parameters for which we don't want to call a linting
|
||||
# function.
|
||||
single-line-class-stmt=no
|
||||
|
||||
# Maximum number of characters on a single line, when there are no multiline
|
||||
# strings.
|
||||
max-line-length-sigil-fallback=80
|
||||
|
||||
[SIMILARITIES]
|
||||
# Minimum lines number of a similarity.
|
||||
min-similarity-lines=4
|
||||
|
||||
# Ignore comments when computing similarities.
|
||||
ignore-comments=yes
|
||||
|
||||
# Ignore docstrings when computing similarities.
|
||||
ignore-docstrings=yes
|
||||
|
||||
# Ignore imports when computing similarities.
|
||||
ignore-imports=no
|
||||
|
||||
[LOGGING]
|
||||
# Logging modules to check that the string formatting arguments are in
|
||||
# logging function parameter format.
|
||||
logging-modules=logging
|
||||
|
||||
[DESIGN]
|
||||
# Maximum number of arguments for function / method.
|
||||
max-args=5
|
||||
|
||||
# Argument names that match this regular expression are ignored.
|
||||
ignored-argument-names=
|
||||
|
||||
# Maximum number of locals for function / method body.
|
||||
max-locals=15
|
||||
|
||||
# Maximum number of return statements for function / method body.
|
||||
max-returns=6
|
||||
|
||||
# Maximum number of branch for function / method body.
|
||||
max-branches=12
|
||||
|
||||
# Maximum number of statements in function / method body.
|
||||
max-statements=50
|
||||
|
||||
# Maximum number of parents for a class.
|
||||
max-parents=7
|
||||
|
||||
# Maximum number of attributes for a class.
|
||||
max-attributes=7
|
||||
|
||||
# Minimum number of public methods for a class.
|
||||
min-public-methods=2
|
||||
|
||||
# Maximum number of public methods for a class.
|
||||
max-public-methods=20
|
||||
|
||||
# Maximum number of boolean expressions in a if statement.
|
||||
max-bool-expr=5
|
||||
|
||||
[CLASSES]
|
||||
# List of method names used to declare (i.e. assign) instance attributes.
|
||||
defining-attr-methods=__init__,__new__,setUp
|
||||
|
||||
# List of valid names for the first argument in a class method.
|
||||
valid-classmethod-first-arg=cls
|
||||
|
||||
# List of valid names for the first argument in a metaclass class method.
|
||||
valid-metaclass-classmethod-first-arg=mcls
|
||||
|
||||
# List of member names which should be excluded from the access member check.
|
||||
exclude-protected=_asdict,_fields,_replace,_source,_make
|
||||
|
||||
[IMPORTS]
|
||||
# Deprecated modules which should not be used.
|
||||
deprecated-modules=
|
||||
|
||||
# Create a graph of every module's dependencies.
|
||||
import-graph=
|
||||
|
||||
# Create a graph of every (i.e. internal and external) dependencies in the
|
||||
# current file.
|
||||
ext-import-graph=
|
||||
|
||||
# Create a graph of external dependencies in the current file.
|
||||
int-import-graph=
|
||||
|
||||
# Force import order to match a specific order.
|
||||
import-order-style=google
|
||||
|
||||
# Add files or directories to the blacklist.
|
||||
ignore-on-import-order=no
|
||||
|
||||
# List of modules that can be imported at any level from the specified
|
||||
# application modules.
|
||||
known-third-party=
|
||||
|
||||
# Analyse import fallback blocks.
|
||||
analyse-fallback-blocks=no
|
||||
|
||||
[EXCEPTIONS]
|
||||
# Exceptions that will emit a warning when being caught.
|
||||
overgeneral-exceptions=Exception,BaseException
|
||||
|
||||
# Exceptions that will emit a warning when being returned.
|
||||
return-exceptions=no
|
||||
|
||||
# Exceptions that will emit a warning when being instantiated.
|
||||
nonstandard-exceptions=no
|
||||
|
||||
[REFACTORING]
|
||||
# Maximum number of nested blocks.
|
||||
max-nested-blocks=5
|
||||
|
||||
# Complete name of the function that returns the YAPF version.
|
||||
yapf-version=
|
||||
90
.windsurf/rules/test-new-features.md
Normal file
90
.windsurf/rules/test-new-features.md
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
---
|
||||
trigger: model_decision
|
||||
description: When a new feature is added, this prompt needs to be run
|
||||
---
|
||||
|
||||
# Development Guidelines
|
||||
|
||||
## Code Quality Standards
|
||||
|
||||
### Testing Requirements
|
||||
- MANDATORY: Every new feature MUST include corresponding tests
|
||||
- Write tests BEFORE implementing complex features (TDD approach)
|
||||
- Test coverage for new code should be >80%
|
||||
- Include both unit tests and integration tests where applicable
|
||||
- Test edge cases, error paths, and boundary conditions
|
||||
|
||||
### Documentation Standards
|
||||
- Update relevant documentation IN THE SAME COMMIT as code changes
|
||||
- Documentation locations:
|
||||
- README.md: User-facing features, installation, quick start
|
||||
- CHANGELOG.md: All changes, following Keep a Changelog format
|
||||
- Code comments: Complex logic, non-obvious decisions, API contracts
|
||||
- Function/struct docs: Public APIs must have doc comments
|
||||
- Use concrete examples in documentation
|
||||
- Keep docs concise but complete
|
||||
|
||||
### Code Organization
|
||||
- CRITICAL: Clean up as you go - no orphaned files or dead code
|
||||
- Remove commented-out code blocks (use git history instead)
|
||||
- Delete unused imports, functions, and variables immediately
|
||||
- Consolidate duplicate code into reusable functions
|
||||
- Move TODO items from loose files into:
|
||||
- Code comments with `// TODO(context):` for implementation tasks
|
||||
- GitHub Issues for larger features
|
||||
- NEVER create standalone .md files for tracking
|
||||
|
||||
### When Making Changes
|
||||
For EVERY significant change, complete ALL of these:
|
||||
|
||||
1. Write/update tests
|
||||
2. Update documentation (README, CHANGELOG, code comments)
|
||||
3. Update build scripts if dependencies/build process changed
|
||||
4. Remove any temporary/debug code added during development
|
||||
5. Delete unused files created during exploration
|
||||
6. Verify no dead code remains (unused functions, imports, variables)
|
||||
|
||||
### Cleanup Checklist (Run BEFORE committing)
|
||||
- [ ] Removed all debug print statements
|
||||
- [ ] Deleted temporary test files
|
||||
- [ ] Removed commented-out code
|
||||
- [ ] Cleaned up unused imports
|
||||
- [ ] Deleted exploratory/spike code
|
||||
- [ ] Consolidated duplicate logic
|
||||
- [ ] Removed obsolete scripts/configs
|
||||
|
||||
### Communication Style
|
||||
- Report what you've done: "Added feature X with tests in test/x_test.go"
|
||||
- Highlight what needs attention: "WARNING: Manual testing needed for edge case Y"
|
||||
- Ask questions directly: "Should we support Z? Trade-offs are..."
|
||||
- NEVER say "I'll track this in a markdown file" - use code comments or tell me directly
|
||||
|
||||
### Script/Build System Updates
|
||||
- Update Makefile/build.zig when adding new targets or commands
|
||||
- Modify CI/CD configs (.github/workflows) if build/test process changes
|
||||
- Update package.json/Cargo.toml/go.mod when dependencies change
|
||||
- Document new scripts in README under "Development" section
|
||||
|
||||
## Anti-Patterns to AVOID
|
||||
- Creating notes.md, todo.md, tasks.md, ideas.md files
|
||||
- Leaving commented-out code "for reference"
|
||||
- Keeping old implementation files with .old or .backup suffixes
|
||||
- Adding features without tests
|
||||
- Updating code without updating docs
|
||||
- Leaving TODO comments without context or assignee
|
||||
|
||||
## Preferred Patterns
|
||||
- Inline TODO comments: `// TODO(user): Add caching layer for better performance`
|
||||
- Self-documenting code with clear names
|
||||
- Tests that serve as usage examples
|
||||
- Incremental, complete commits (code + tests + docs)
|
||||
- Direct communication about tasks and priorities
|
||||
|
||||
## Definition of Done
|
||||
A task is complete ONLY when:
|
||||
1. Code is written and working
|
||||
2. Tests are written and passing
|
||||
3. Documentation is updated
|
||||
4. All temporary/dead code is removed
|
||||
5. Build scripts are updated if needed
|
||||
6. Changes are committed with clear message
|
||||
238
AGENTS.md
Normal file
238
AGENTS.md
Normal file
|
|
@ -0,0 +1,238 @@
|
|||
# AGENTS.md - Coding Agent Guidelines
|
||||
|
||||
This document provides essential information for agentic coding assistants working with the FetchML codebase.
|
||||
|
||||
## Build Commands
|
||||
|
||||
### Go Components
|
||||
```bash
|
||||
# Build all Go components
|
||||
make build
|
||||
|
||||
# Build for development (faster compilation)
|
||||
make dev
|
||||
|
||||
# Build for production (optimized)
|
||||
make prod
|
||||
|
||||
# Cross-platform build for Linux/macOS/Windows
|
||||
make cross-platform
|
||||
```
|
||||
|
||||
### Zig CLI
|
||||
```bash
|
||||
# Build CLI with release-small optimization
|
||||
cd cli && make all
|
||||
|
||||
# Build for development
|
||||
cd cli && make dev
|
||||
|
||||
# Build for production
|
||||
cd cli && make prod
|
||||
|
||||
# Alternative using zig build system
|
||||
cd cli && zig build
|
||||
```
|
||||
|
||||
## Test Commands
|
||||
|
||||
### Running Tests
|
||||
```bash
|
||||
# Run all tests
|
||||
make test
|
||||
|
||||
# Run unit tests only
|
||||
make test-unit
|
||||
|
||||
# Run integration tests only
|
||||
make test-integration
|
||||
|
||||
# Run end-to-end tests only
|
||||
make test-e2e
|
||||
|
||||
# Run with coverage report
|
||||
make test-coverage
|
||||
|
||||
# Run a single test
|
||||
go test -v ./path/to/package -run TestName
|
||||
|
||||
# Run tests with race detector
|
||||
go test -race ./path/to/package/...
|
||||
```
|
||||
|
||||
### Performance Testing
|
||||
```bash
|
||||
# Run performance benchmarks
|
||||
make benchmark
|
||||
|
||||
# Run load testing suite
|
||||
make load-test
|
||||
|
||||
# Run chaos engineering tests
|
||||
make chaos-test
|
||||
|
||||
# Run complete technical excellence suite
|
||||
make tech-excellence
|
||||
```
|
||||
|
||||
## Lint Commands
|
||||
|
||||
```bash
|
||||
# Run all linters and formatters
|
||||
make lint
|
||||
|
||||
# Run Go linters
|
||||
golangci-lint run
|
||||
|
||||
# Run Go formatters
|
||||
gofmt -w ./cmd ./internal ./tests
|
||||
|
||||
# Run Go vet
|
||||
go vet ./...
|
||||
|
||||
# Format Zig code
|
||||
cd cli && zig fmt .
|
||||
|
||||
# Validate YAML configs against schema
|
||||
make configlint
|
||||
make worker-configlint
|
||||
```
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
### Go Code Style
|
||||
|
||||
1. **Formatting**:
|
||||
- Use `gofmt` for formatting
|
||||
- Line length: 100 characters (configured in .golangci.yml)
|
||||
- Use `goimports` for import organization
|
||||
|
||||
2. **Naming Conventions**:
|
||||
- Use camelCase for variables and functions
|
||||
- Use PascalCase for exported identifiers
|
||||
- Use clear, descriptive names
|
||||
- Acronyms should be all caps (e.g., HTTP, URL)
|
||||
|
||||
3. **Imports**:
|
||||
- Group imports in order: standard library, third-party, internal
|
||||
- Use meaningful import aliases when needed
|
||||
- Remove unused imports
|
||||
|
||||
4. **Error Handling**:
|
||||
- Always handle errors explicitly
|
||||
- Use `errors.Is` and `errors.As` for error checking
|
||||
- Wrap errors with context using `fmt.Errorf("context: %w", err)`
|
||||
|
||||
5. **Documentation**:
|
||||
- All exported functions, types, and variables must have doc comments
|
||||
- Comments should explain "why" not just "what"
|
||||
- Use godoc formatting conventions
|
||||
|
||||
### Zig Code Style
|
||||
|
||||
1. **Formatting**:
|
||||
- Use built-in Zig formatter (`zig fmt`)
|
||||
- Consistent indentation with 4 spaces
|
||||
|
||||
2. **Naming Conventions**:
|
||||
- Use camelCase for variables and functions
|
||||
- Use PascalCase for types
|
||||
- Use snake_case for file names
|
||||
|
||||
3. **Error Handling**:
|
||||
- Use Zig's error union types (`!T`)
|
||||
- Handle errors with `try`, `catch`, or `if` expressions
|
||||
- Return errors early when appropriate
|
||||
|
||||
### Python Code Style
|
||||
|
||||
1. **Formatting**:
|
||||
- Use Black formatter with 80 character line limit
|
||||
- Use isort for import organization (Google style)
|
||||
|
||||
2. **Type Checking**:
|
||||
- Use mypy with strict settings
|
||||
- All functions should have type annotations
|
||||
|
||||
3. **Testing**:
|
||||
- Use pytest framework
|
||||
- Follow naming conventions: `test_*` for functions, `*_test.py` for files
|
||||
|
||||
### YAML/Configuration Style
|
||||
|
||||
1. **Formatting**:
|
||||
- Use yamllint for validation
|
||||
- Consistent indentation with 2 spaces
|
||||
- No trailing whitespace
|
||||
|
||||
2. **Validation**:
|
||||
- All configs must pass schema validation
|
||||
- Use `make configlint` and `make worker-configlint`
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
### Testing Requirements (from .windsurf/rules/test-new-features.md)
|
||||
- Every new feature MUST include corresponding tests
|
||||
- Test coverage for new code should be >80%
|
||||
- Include both unit tests and integration tests where applicable
|
||||
- Test edge cases, error paths, and boundary conditions
|
||||
|
||||
### Code Organization
|
||||
- Clean up as you go - no orphaned files or dead code
|
||||
- Remove commented-out code blocks
|
||||
- Delete unused imports, functions, and variables immediately
|
||||
- Consolidate duplicate code into reusable functions
|
||||
|
||||
### Documentation Standards
|
||||
- Update relevant documentation IN THE SAME COMMIT as code changes
|
||||
- Documentation locations:
|
||||
- README.md: User-facing features, installation, quick start
|
||||
- CHANGELOG.md: All changes, following Keep a Changelog format
|
||||
- Code comments: Complex logic, non-obvious decisions, API contracts
|
||||
- Function/struct docs: Public APIs must have doc comments
|
||||
|
||||
### Commit Message Convention
|
||||
Use conventional commits:
|
||||
- `feat:` for new features
|
||||
- `fix:` for bug fixes
|
||||
- `docs:` for documentation changes
|
||||
- `style:` for formatting changes
|
||||
- `refactor:` for code refactoring
|
||||
- `test:` for adding/updating tests
|
||||
- `chore:` for maintenance tasks
|
||||
|
||||
## Project Structure
|
||||
|
||||
- `cmd/` - Main applications
|
||||
- `internal/` - Internal packages
|
||||
- `cli/` - Zig command-line interface
|
||||
- `tests/` - Test files organized by type
|
||||
- `configs/` - Configuration files and schemas
|
||||
- `docs/` - Documentation
|
||||
- `scripts/` - Utility scripts
|
||||
|
||||
## Dependencies
|
||||
|
||||
- Go 1.25+
|
||||
- Zig 0.15+
|
||||
- Python 3.11+ (for some tools)
|
||||
- Redis (for integration tests)
|
||||
- Docker/Podman (for container-based tests)
|
||||
|
||||
## Useful Make Targets
|
||||
|
||||
```bash
|
||||
# Development workflow
|
||||
make dev-start # Start development environment
|
||||
make test # Run all tests
|
||||
make lint # Run linters
|
||||
make ci-local # Run local CI dry-run
|
||||
|
||||
# Documentation
|
||||
make docs # Start documentation server
|
||||
make docs-build # Build static documentation
|
||||
|
||||
# Cleanup
|
||||
make clean # Remove build artifacts
|
||||
make clean-docs # Remove documentation artifacts
|
||||
```
|
||||
BIN
cpu.prof
Normal file
BIN
cpu.prof
Normal file
Binary file not shown.
BIN
mem.prof
Normal file
BIN
mem.prof
Normal file
Binary file not shown.
|
|
@ -5,6 +5,8 @@ import (
|
|||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
|
|
@ -15,11 +17,32 @@ import (
|
|||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
func newBenchmarkHTTPClient() *http.Client {
|
||||
transport := &http.Transport{
|
||||
Proxy: http.ProxyFromEnvironment,
|
||||
DialContext: (&net.Dialer{
|
||||
Timeout: 30 * time.Second,
|
||||
KeepAlive: 30 * time.Second,
|
||||
}).DialContext,
|
||||
ForceAttemptHTTP2: true,
|
||||
MaxIdleConns: 256,
|
||||
MaxIdleConnsPerHost: 256,
|
||||
IdleConnTimeout: 90 * time.Second,
|
||||
TLSHandshakeTimeout: 10 * time.Second,
|
||||
ExpectContinueTimeout: 1 * time.Second,
|
||||
}
|
||||
|
||||
return &http.Client{
|
||||
Timeout: 30 * time.Second,
|
||||
Transport: transport,
|
||||
}
|
||||
}
|
||||
|
||||
// BenchmarkAPIServerCreateJob tests job creation performance
|
||||
func BenchmarkAPIServerCreateJob(b *testing.B) {
|
||||
server := setupTestAPIServer(b)
|
||||
defer server.Close()
|
||||
client := &http.Client{Timeout: 30 * time.Second}
|
||||
client := newBenchmarkHTTPClient()
|
||||
b.ResetTimer()
|
||||
b.ReportAllocs()
|
||||
benchmarkCreateJob(b, server.URL, client)
|
||||
|
|
@ -80,6 +103,7 @@ func BenchmarkAPIServerCreateJobSimple(b *testing.B) {
|
|||
// Skip this iteration if server isn't ready
|
||||
continue
|
||||
}
|
||||
_, _ = io.Copy(io.Discard, resp.Body)
|
||||
_ = resp.Body.Close()
|
||||
}
|
||||
|
||||
|
|
@ -126,7 +150,7 @@ func BenchmarkConcurrentRequests(b *testing.B) {
|
|||
server := setupTestAPIServer(b)
|
||||
defer server.Close()
|
||||
|
||||
client := &http.Client{Timeout: 30 * time.Second}
|
||||
client := newBenchmarkHTTPClient()
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
|
|
@ -148,6 +172,7 @@ func benchmarkConcurrentRequests(b *testing.B, baseURL string, client *http.Clie
|
|||
|
||||
resp, err := client.Do(req)
|
||||
if err == nil && resp != nil {
|
||||
_, _ = io.Copy(io.Discard, resp.Body)
|
||||
_ = resp.Body.Close()
|
||||
}
|
||||
i++
|
||||
|
|
@ -212,6 +237,7 @@ func benchmarkCreateJob(b *testing.B, baseURL string, client *http.Client) {
|
|||
if err != nil {
|
||||
b.Fatalf("Request failed: %v", err)
|
||||
}
|
||||
_, _ = io.Copy(io.Discard, resp.Body)
|
||||
_ = resp.Body.Close()
|
||||
}
|
||||
}
|
||||
|
|
@ -229,6 +255,7 @@ func benchmarkListJobs(b *testing.B, baseURL string, client *http.Client) {
|
|||
if err != nil {
|
||||
b.Fatalf("Request failed: %v", err)
|
||||
}
|
||||
_, _ = io.Copy(io.Discard, resp.Body)
|
||||
_ = resp.Body.Close()
|
||||
}
|
||||
}
|
||||
|
|
@ -237,7 +264,7 @@ func benchmarkListJobs(b *testing.B, baseURL string, client *http.Client) {
|
|||
func BenchmarkAPIServerListJobs(b *testing.B) {
|
||||
server := setupTestAPIServer(b)
|
||||
defer server.Close()
|
||||
client := &http.Client{Timeout: 30 * time.Second}
|
||||
client := newBenchmarkHTTPClient()
|
||||
b.ResetTimer()
|
||||
b.ReportAllocs()
|
||||
benchmarkListJobs(b, server.URL, client)
|
||||
|
|
|
|||
|
|
@ -332,6 +332,22 @@ func runLoadTestScenario(t *testing.T, baseURL, scenarioName string, config Load
|
|||
runner := NewLoadTestRunner(baseURL, config)
|
||||
results := runner.Run()
|
||||
|
||||
if minThroughput, maxErrorRate, maxP99Latency, ok := loadTestCriteria(scenarioName); ok {
|
||||
t.Logf("Load test criteria for %s:", scenarioName)
|
||||
t.Logf(" Min throughput: %.2f RPS", minThroughput)
|
||||
t.Logf(" Max error rate: %.2f%%", maxErrorRate)
|
||||
t.Logf(" Max P99 latency: %.0fms", maxP99Latency)
|
||||
}
|
||||
|
||||
t.Logf("Load test config for %s:", scenarioName)
|
||||
t.Logf(" Concurrency: %d", config.Concurrency)
|
||||
t.Logf(" Duration: %v", config.Duration)
|
||||
t.Logf(" Ramp up: %v", config.RampUpTime)
|
||||
t.Logf(" Target RPS: %d", config.RequestsPerSec)
|
||||
t.Logf(" Payload size: %d", config.PayloadSize)
|
||||
t.Logf(" Method: %s", config.Method)
|
||||
t.Logf(" Endpoint: %s", config.Endpoint)
|
||||
|
||||
t.Logf("Load test results for %s:", scenarioName)
|
||||
t.Logf(" Total requests: %d", results.TotalRequests)
|
||||
t.Logf(" Successful: %d", results.SuccessfulReqs)
|
||||
|
|
@ -348,6 +364,19 @@ func runLoadTestScenario(t *testing.T, baseURL, scenarioName string, config Load
|
|||
validateLoadTestResults(t, scenarioName, results)
|
||||
}
|
||||
|
||||
func loadTestCriteria(scenarioName string) (minThroughput, maxErrorRate, maxP99Latency float64, ok bool) {
|
||||
switch scenarioName {
|
||||
case "LightLoad":
|
||||
return 40.0, 1.0, 100.0, true
|
||||
case "MediumLoad":
|
||||
return 180.0, 2.0, 200.0, true
|
||||
case "HeavyLoad":
|
||||
return 450.0, 5.0, 500.0, true
|
||||
default:
|
||||
return 0, 0, 0, false
|
||||
}
|
||||
}
|
||||
|
||||
// Run executes the load test
|
||||
func (ltr *LoadTestRunner) Run() *LoadTestResults {
|
||||
start := time.Now()
|
||||
|
|
@ -684,24 +713,8 @@ func runStressTest(t *testing.T, baseURL string) {
|
|||
|
||||
// validateLoadTestResults checks if results meet performance criteria
|
||||
func validateLoadTestResults(t *testing.T, scenarioName string, results *LoadTestResults) {
|
||||
// Define performance thresholds based on scenario type
|
||||
var maxErrorRate, maxP99Latency float64
|
||||
var minThroughput float64
|
||||
|
||||
switch scenarioName {
|
||||
case "LightLoad":
|
||||
maxErrorRate = 1.0
|
||||
maxP99Latency = 100.0 // 100ms
|
||||
minThroughput = 40.0
|
||||
case "MediumLoad":
|
||||
maxErrorRate = 2.0
|
||||
maxP99Latency = 200.0 // 200ms
|
||||
minThroughput = 180.0
|
||||
case "HeavyLoad":
|
||||
maxErrorRate = 5.0
|
||||
maxP99Latency = 500.0 // 500ms
|
||||
minThroughput = 450.0
|
||||
default:
|
||||
minThroughput, maxErrorRate, maxP99Latency, ok := loadTestCriteria(scenarioName)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,11 +12,12 @@ import (
|
|||
)
|
||||
|
||||
type fakeJupyterManager struct {
|
||||
startFn func(ctx context.Context, req *jupyter.StartRequest) (*jupyter.JupyterService, error)
|
||||
stopFn func(ctx context.Context, serviceID string) error
|
||||
removeFn func(ctx context.Context, serviceID string, purge bool) error
|
||||
restoreFn func(ctx context.Context, name string) (string, error)
|
||||
listFn func() []*jupyter.JupyterService
|
||||
startFn func(ctx context.Context, req *jupyter.StartRequest) (*jupyter.JupyterService, error)
|
||||
stopFn func(ctx context.Context, serviceID string) error
|
||||
removeFn func(ctx context.Context, serviceID string, purge bool) error
|
||||
restoreFn func(ctx context.Context, name string) (string, error)
|
||||
listFn func() []*jupyter.JupyterService
|
||||
listPkgsFn func(ctx context.Context, serviceName string) ([]jupyter.InstalledPackage, error)
|
||||
}
|
||||
|
||||
func (f *fakeJupyterManager) StartService(ctx context.Context, req *jupyter.StartRequest) (*jupyter.JupyterService, error) {
|
||||
|
|
@ -39,6 +40,13 @@ func (f *fakeJupyterManager) ListServices() []*jupyter.JupyterService {
|
|||
return f.listFn()
|
||||
}
|
||||
|
||||
func (f *fakeJupyterManager) ListInstalledPackages(ctx context.Context, serviceName string) ([]jupyter.InstalledPackage, error) {
|
||||
if f.listPkgsFn == nil {
|
||||
return nil, nil
|
||||
}
|
||||
return f.listPkgsFn(ctx, serviceName)
|
||||
}
|
||||
|
||||
type jupyterOutput struct {
|
||||
Type string `json:"type"`
|
||||
Service *struct {
|
||||
|
|
@ -47,6 +55,15 @@ type jupyterOutput struct {
|
|||
} `json:"service"`
|
||||
}
|
||||
|
||||
type jupyterPackagesOutput struct {
|
||||
Type string `json:"type"`
|
||||
Packages []struct {
|
||||
Name string `json:"name"`
|
||||
Version string `json:"version"`
|
||||
Source string `json:"source"`
|
||||
} `json:"packages"`
|
||||
}
|
||||
|
||||
func TestRunJupyterTaskStartSuccess(t *testing.T) {
|
||||
w := worker.NewTestWorkerWithJupyter(&worker.Config{}, nil, &fakeJupyterManager{
|
||||
startFn: func(_ context.Context, req *jupyter.StartRequest) (*jupyter.JupyterService, error) {
|
||||
|
|
@ -55,10 +72,11 @@ func TestRunJupyterTaskStartSuccess(t *testing.T) {
|
|||
}
|
||||
return &jupyter.JupyterService{Name: req.Name, URL: "http://127.0.0.1:8888"}, nil
|
||||
},
|
||||
stopFn: func(context.Context, string) error { return nil },
|
||||
removeFn: func(context.Context, string, bool) error { return nil },
|
||||
restoreFn: func(context.Context, string) (string, error) { return "", nil },
|
||||
listFn: func() []*jupyter.JupyterService { return nil },
|
||||
stopFn: func(context.Context, string) error { return nil },
|
||||
removeFn: func(context.Context, string, bool) error { return nil },
|
||||
restoreFn: func(context.Context, string) (string, error) { return "", nil },
|
||||
listFn: func() []*jupyter.JupyterService { return nil },
|
||||
listPkgsFn: func(context.Context, string) ([]jupyter.InstalledPackage, error) { return nil, nil },
|
||||
})
|
||||
|
||||
task := &queue.Task{JobName: "jupyter-my-workspace", Metadata: map[string]string{
|
||||
|
|
@ -85,11 +103,12 @@ func TestRunJupyterTaskStartSuccess(t *testing.T) {
|
|||
|
||||
func TestRunJupyterTaskStopFailure(t *testing.T) {
|
||||
w := worker.NewTestWorkerWithJupyter(&worker.Config{}, nil, &fakeJupyterManager{
|
||||
startFn: func(context.Context, *jupyter.StartRequest) (*jupyter.JupyterService, error) { return nil, nil },
|
||||
stopFn: func(context.Context, string) error { return errors.New("stop failed") },
|
||||
removeFn: func(context.Context, string, bool) error { return nil },
|
||||
restoreFn: func(context.Context, string) (string, error) { return "", nil },
|
||||
listFn: func() []*jupyter.JupyterService { return nil },
|
||||
startFn: func(context.Context, *jupyter.StartRequest) (*jupyter.JupyterService, error) { return nil, nil },
|
||||
stopFn: func(context.Context, string) error { return errors.New("stop failed") },
|
||||
removeFn: func(context.Context, string, bool) error { return nil },
|
||||
restoreFn: func(context.Context, string) (string, error) { return "", nil },
|
||||
listFn: func() []*jupyter.JupyterService { return nil },
|
||||
listPkgsFn: func(context.Context, string) ([]jupyter.InstalledPackage, error) { return nil, nil },
|
||||
})
|
||||
|
||||
task := &queue.Task{JobName: "jupyter-my-workspace", Metadata: map[string]string{
|
||||
|
|
@ -102,3 +121,41 @@ func TestRunJupyterTaskStopFailure(t *testing.T) {
|
|||
t.Fatalf("expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunJupyterTaskListPackagesSuccess(t *testing.T) {
|
||||
w := worker.NewTestWorkerWithJupyter(&worker.Config{}, nil, &fakeJupyterManager{
|
||||
startFn: func(context.Context, *jupyter.StartRequest) (*jupyter.JupyterService, error) { return nil, nil },
|
||||
stopFn: func(context.Context, string) error { return nil },
|
||||
removeFn: func(context.Context, string, bool) error { return nil },
|
||||
restoreFn: func(context.Context, string) (string, error) { return "", nil },
|
||||
listFn: func() []*jupyter.JupyterService { return nil },
|
||||
listPkgsFn: func(_ context.Context, serviceName string) ([]jupyter.InstalledPackage, error) {
|
||||
if serviceName != "my-workspace" {
|
||||
return nil, errors.New("bad service")
|
||||
}
|
||||
return []jupyter.InstalledPackage{
|
||||
{Name: "numpy", Version: "1.26.0", Source: "pip"},
|
||||
{Name: "pandas", Version: "2.1.0", Source: "conda"},
|
||||
}, nil
|
||||
},
|
||||
})
|
||||
|
||||
task := &queue.Task{JobName: "jupyter-packages-my-workspace", Metadata: map[string]string{
|
||||
"task_type": "jupyter",
|
||||
"jupyter_action": "list_packages",
|
||||
"jupyter_name": "my-workspace",
|
||||
}}
|
||||
|
||||
out, err := w.RunJupyterTask(context.Background(), task)
|
||||
if err != nil {
|
||||
t.Fatalf("expected nil error, got %v", err)
|
||||
}
|
||||
|
||||
var decoded jupyterPackagesOutput
|
||||
if err := json.Unmarshal(out, &decoded); err != nil {
|
||||
t.Fatalf("expected valid JSON, got %v", err)
|
||||
}
|
||||
if len(decoded.Packages) != 2 {
|
||||
t.Fatalf("expected 2 packages, got %d", len(decoded.Packages))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue