diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 00fa04a..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -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. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index e17975b..0000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -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? diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 6bb2ed9..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -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. diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 0a3e465..0000000 --- a/.github/labeler.yml +++ /dev/null @@ -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" diff --git a/.github/rsync_manifest.json b/.github/rsync_manifest.json deleted file mode 100644 index c79fdc8..0000000 --- a/.github/rsync_manifest.json +++ /dev/null @@ -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" - } - } -} diff --git a/.github/workflows/benchmark-metrics.yml b/.github/workflows/benchmark-metrics.yml deleted file mode 100644 index bf5b1e3..0000000 --- a/.github/workflows/benchmark-metrics.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 3b85d89..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -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 - diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 792a430..0000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml deleted file mode 100644 index 5603b88..0000000 --- a/.github/workflows/label.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/license-check.yml b/.github/workflows/license-check.yml deleted file mode 100644 index 24f4b85..0000000 --- a/.github/workflows/license-check.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 68ca145..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -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___[.exe].tar.gz` - - ### Installation - ```bash - # Download and extract (example: CLI) - tar -xzf ml-.tar.gz - - # Make executable and move to PATH - chmod +x ml- - sudo mv ml- /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 }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index db6bd0f..0000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -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" diff --git a/.gitignore b/.gitignore index 47bf62e..749b5a1 100644 --- a/.gitignore +++ b/.gitignore @@ -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/ diff --git a/.local-artifacts/run_20251204_230712/benchmark_results.txt b/.local-artifacts/run_20251204_230712/benchmark_results.txt deleted file mode 100644 index 259711e..0000000 --- a/.local-artifacts/run_20251204_230712/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_230712/clean_benchmarks.txt b/.local-artifacts/run_20251204_230712/clean_benchmarks.txt deleted file mode 100644 index 81009dd..0000000 --- a/.local-artifacts/run_20251204_230712/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_230712/prometheus_metrics.txt b/.local-artifacts/run_20251204_230712/prometheus_metrics.txt deleted file mode 100644 index 3b01f0c..0000000 --- a/.local-artifacts/run_20251204_230712/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_230712/report.html b/.local-artifacts/run_20251204_230712/report.html deleted file mode 100644 index 1e73592..0000000 --- a/.local-artifacts/run_20251204_230712/report.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Benchmark Report - 20251204_230712 - - - -

Benchmark Report

-

Run ID: 20251204_230712

-

Date: Thu Dec 4 18:07:41 EST 2025

- -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BenchmarkTime (ns/op)Memory (B/op)Allocs (allocs/op)
BenchmarkAPIServerCreateJobSimple-2444784ns/op13520
BenchmarkMetricsCollection-2419.87ns/op0
BenchmarkConcurrentRequests/Concurrency-1-24104650ns/op26708
BenchmarkConcurrentRequests/Concurrency-5-24553714ns/op18123
BenchmarkConcurrentRequests/Concurrency-10-241357144ns/op6088
BenchmarkConcurrentRequests/Concurrency-25-241351232ns/op6466
BenchmarkConcurrentRequests/Concurrency-50-241338756ns/op6719
BenchmarkMLExperimentExecution/SmallExperiment-2426589647ns/op657022
BenchmarkMLExperimentExecution/MediumExperiment-2412482363ns/op794538
BenchmarkMLExperimentExecution/LargeExperiment-243631202ns/op1129266
BenchmarkMLExperimentExecution/ConcurrentExperiments-2435603358ns/op1111297
BenchmarkMLExperimentExecution/ExperimentMetrics-2427881781ns/op615782
BenchmarkDatasetOperations/DatasetCreation-2498516ns/op2933
BenchmarkDatasetOperations/DatasetRetrieval-2449.69ns/op16
BenchmarkDatasetOperations/DatasetUpdate-2465030ns/op1285
- -

Raw Output

-
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
- - diff --git a/.local-artifacts/run_20251204_231218/benchmark_results.txt b/.local-artifacts/run_20251204_231218/benchmark_results.txt deleted file mode 100644 index 610cfbe..0000000 --- a/.local-artifacts/run_20251204_231218/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231218/clean_benchmarks.txt b/.local-artifacts/run_20251204_231218/clean_benchmarks.txt deleted file mode 100644 index 84112e7..0000000 --- a/.local-artifacts/run_20251204_231218/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231218/prometheus_metrics.txt b/.local-artifacts/run_20251204_231218/prometheus_metrics.txt deleted file mode 100644 index 72d240d..0000000 --- a/.local-artifacts/run_20251204_231218/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231218/report.html b/.local-artifacts/run_20251204_231218/report.html deleted file mode 100644 index 44afaa6..0000000 --- a/.local-artifacts/run_20251204_231218/report.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Benchmark Report - 20251204_231218 - - - -

Benchmark Report

-

Run ID: 20251204_231218

-

Date: Thu Dec 4 18:12:46 EST 2025

- -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BenchmarkTime (ns/op)Memory (B/op)Allocs (allocs/op)
BenchmarkAPIServerCreateJobSimple-2443062ns/op13518
BenchmarkMetricsCollection-2419.29ns/op0
BenchmarkConcurrentRequests/Concurrency-1-24108510ns/op26825
BenchmarkConcurrentRequests/Concurrency-5-24657334ns/op16807
BenchmarkConcurrentRequests/Concurrency-10-241346314ns/op6032
BenchmarkConcurrentRequests/Concurrency-25-241350853ns/op6289
BenchmarkConcurrentRequests/Concurrency-50-241346826ns/op6431
BenchmarkMLExperimentExecution/SmallExperiment-2426357159ns/op657854
BenchmarkMLExperimentExecution/MediumExperiment-2412494936ns/op794812
BenchmarkMLExperimentExecution/LargeExperiment-243659886ns/op1129733
BenchmarkMLExperimentExecution/ConcurrentExperiments-2432637755ns/op1114183
BenchmarkMLExperimentExecution/ExperimentMetrics-2427153394ns/op615897
BenchmarkDatasetOperations/DatasetCreation-24102638ns/op2921
BenchmarkDatasetOperations/DatasetRetrieval-2450.73ns/op16
BenchmarkDatasetOperations/DatasetUpdate-2465724ns/op1285
- -

Raw Output

-
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
- - diff --git a/.local-artifacts/run_20251204_231255/benchmark_results.txt b/.local-artifacts/run_20251204_231255/benchmark_results.txt deleted file mode 100644 index 11a27d1..0000000 --- a/.local-artifacts/run_20251204_231255/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231255/clean_benchmarks.txt b/.local-artifacts/run_20251204_231255/clean_benchmarks.txt deleted file mode 100644 index b87bdc2..0000000 --- a/.local-artifacts/run_20251204_231255/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231255/prometheus_metrics.txt b/.local-artifacts/run_20251204_231255/prometheus_metrics.txt deleted file mode 100644 index 3828ea0..0000000 --- a/.local-artifacts/run_20251204_231255/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231255/report.html b/.local-artifacts/run_20251204_231255/report.html deleted file mode 100644 index a060891..0000000 --- a/.local-artifacts/run_20251204_231255/report.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Benchmark Report - 20251204_231255 - - - -

Benchmark Report

-

Run ID: 20251204_231255

-

Date: Thu Dec 4 18:13:24 EST 2025

- -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BenchmarkTime (ns/op)Memory (B/op)Allocs (allocs/op)
BenchmarkAPIServerCreateJobSimple-2445304ns/op13517
BenchmarkMetricsCollection-2419.88ns/op0
BenchmarkConcurrentRequests/Concurrency-1-24106089ns/op26846
BenchmarkConcurrentRequests/Concurrency-5-24579691ns/op17615
BenchmarkConcurrentRequests/Concurrency-10-241348616ns/op6050
BenchmarkConcurrentRequests/Concurrency-25-241340898ns/op6529
BenchmarkConcurrentRequests/Concurrency-50-241333626ns/op6694
BenchmarkMLExperimentExecution/SmallExperiment-2426542657ns/op656983
BenchmarkMLExperimentExecution/MediumExperiment-2412121203ns/op794420
BenchmarkMLExperimentExecution/LargeExperiment-243704013ns/op1128981
BenchmarkMLExperimentExecution/ConcurrentExperiments-2432337061ns/op1113039
BenchmarkMLExperimentExecution/ExperimentMetrics-2426482224ns/op615734
BenchmarkDatasetOperations/DatasetCreation-24101514ns/op2934
BenchmarkDatasetOperations/DatasetRetrieval-2449.80ns/op16
BenchmarkDatasetOperations/DatasetUpdate-2465515ns/op1285
- -

Raw Output

-
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
- - diff --git a/.local-artifacts/run_20251204_231459/benchmark_results.txt b/.local-artifacts/run_20251204_231459/benchmark_results.txt deleted file mode 100644 index 3d855ec..0000000 --- a/.local-artifacts/run_20251204_231459/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231459/clean_benchmarks.txt b/.local-artifacts/run_20251204_231459/clean_benchmarks.txt deleted file mode 100644 index 0e12017..0000000 --- a/.local-artifacts/run_20251204_231459/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231459/prometheus_metrics.txt b/.local-artifacts/run_20251204_231459/prometheus_metrics.txt deleted file mode 100644 index e91b32d..0000000 --- a/.local-artifacts/run_20251204_231459/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231459/report.html b/.local-artifacts/run_20251204_231459/report.html deleted file mode 100644 index 9801c8d..0000000 --- a/.local-artifacts/run_20251204_231459/report.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Benchmark Report - 20251204_231459 - - - -

Benchmark Report

-

Run ID: 20251204_231459

-

Date: Thu Dec 4 18:15:28 EST 2025

- -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BenchmarkTime (ns/op)Memory (B/op)Allocs (allocs/op)
BenchmarkAPIServerCreateJobSimple-2445677ns/op13532
BenchmarkMetricsCollection-2419.48ns/op0
BenchmarkConcurrentRequests/Concurrency-1-24105817ns/op26610
BenchmarkConcurrentRequests/Concurrency-5-24545199ns/op18285
BenchmarkConcurrentRequests/Concurrency-10-241350040ns/op6043
BenchmarkConcurrentRequests/Concurrency-25-241332526ns/op6228
BenchmarkConcurrentRequests/Concurrency-50-241339113ns/op6724
BenchmarkMLExperimentExecution/SmallExperiment-2426355390ns/op657327
BenchmarkMLExperimentExecution/MediumExperiment-2412034762ns/op794688
BenchmarkMLExperimentExecution/LargeExperiment-243763459ns/op1129490
BenchmarkMLExperimentExecution/ConcurrentExperiments-2430668937ns/op1112708
BenchmarkMLExperimentExecution/ExperimentMetrics-2426930825ns/op615839
BenchmarkDatasetOperations/DatasetCreation-24102242ns/op2935
BenchmarkDatasetOperations/DatasetRetrieval-2450.50ns/op16
BenchmarkDatasetOperations/DatasetUpdate-2465564ns/op1285
- -

Raw Output

-
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
- - diff --git a/.local-artifacts/run_20251204_231634/benchmark_results.txt b/.local-artifacts/run_20251204_231634/benchmark_results.txt deleted file mode 100644 index 32fe643..0000000 --- a/.local-artifacts/run_20251204_231634/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231634/clean_benchmarks.txt b/.local-artifacts/run_20251204_231634/clean_benchmarks.txt deleted file mode 100644 index 0cabf2d..0000000 --- a/.local-artifacts/run_20251204_231634/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231634/prometheus_metrics.txt b/.local-artifacts/run_20251204_231634/prometheus_metrics.txt deleted file mode 100644 index 061c879..0000000 --- a/.local-artifacts/run_20251204_231634/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231712/benchmark_results.txt b/.local-artifacts/run_20251204_231712/benchmark_results.txt deleted file mode 100644 index 0759753..0000000 --- a/.local-artifacts/run_20251204_231712/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231712/clean_benchmarks.txt b/.local-artifacts/run_20251204_231712/clean_benchmarks.txt deleted file mode 100644 index 7d0839d..0000000 --- a/.local-artifacts/run_20251204_231712/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231712/prometheus_metrics.txt b/.local-artifacts/run_20251204_231712/prometheus_metrics.txt deleted file mode 100644 index c140131..0000000 --- a/.local-artifacts/run_20251204_231712/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231712/report.html b/.local-artifacts/run_20251204_231712/report.html deleted file mode 100644 index a2a0363..0000000 --- a/.local-artifacts/run_20251204_231712/report.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Benchmark Report - 20251204_231712 - - - -

Benchmark Report

-

Run ID: 20251204_231712

-

Date: Thu Dec 4 18:17:42 EST 2025

- -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BenchmarkTime (ns/op)Memory (B/op)Allocs (allocs/op)
BenchmarkAPIServerCreateJobSimple-2445877ns/op13520
BenchmarkMetricsCollection-2419.91ns/op0
BenchmarkConcurrentRequests/Concurrency-1-24106563ns/op26651
BenchmarkConcurrentRequests/Concurrency-5-24580762ns/op16774
BenchmarkConcurrentRequests/Concurrency-10-241361628ns/op6050
BenchmarkConcurrentRequests/Concurrency-25-241341660ns/op6645
BenchmarkConcurrentRequests/Concurrency-50-241339436ns/op6130
BenchmarkMLExperimentExecution/SmallExperiment-2426144707ns/op657412
BenchmarkMLExperimentExecution/MediumExperiment-2412045172ns/op794945
BenchmarkMLExperimentExecution/LargeExperiment-243655986ns/op1129633
BenchmarkMLExperimentExecution/ConcurrentExperiments-2437392029ns/op1111096
BenchmarkMLExperimentExecution/ExperimentMetrics-2426943573ns/op615802
BenchmarkDatasetOperations/DatasetCreation-24101658ns/op2934
BenchmarkDatasetOperations/DatasetRetrieval-2450.53ns/op16
BenchmarkDatasetOperations/DatasetUpdate-2465640ns/op1285
- -

Raw Output

-
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
- - diff --git a/.local-artifacts/run_20251204_231833/benchmark_results.txt b/.local-artifacts/run_20251204_231833/benchmark_results.txt deleted file mode 100644 index cb79385..0000000 --- a/.local-artifacts/run_20251204_231833/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231833/clean_benchmarks.txt b/.local-artifacts/run_20251204_231833/clean_benchmarks.txt deleted file mode 100644 index 5f4e611..0000000 --- a/.local-artifacts/run_20251204_231833/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231833/prometheus_metrics.txt b/.local-artifacts/run_20251204_231833/prometheus_metrics.txt deleted file mode 100644 index 49516e7..0000000 --- a/.local-artifacts/run_20251204_231833/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_231833/report.html b/.local-artifacts/run_20251204_231833/report.html deleted file mode 100644 index 1376941..0000000 --- a/.local-artifacts/run_20251204_231833/report.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Benchmark Report - 20251204_231833 - - - -

Benchmark Report

-

Run ID: 20251204_231833

-

Date: Thu Dec 4 18:19:01 EST 2025

- -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BenchmarkTime (ns/op)Memory (B/op)Allocs (allocs/op)
BenchmarkAPIServerCreateJobSimple-2444615ns/op13510
BenchmarkMetricsCollection-2419.81ns/op0
BenchmarkConcurrentRequests/Concurrency-1-24104975ns/op26775
BenchmarkConcurrentRequests/Concurrency-5-24616978ns/op16959
BenchmarkConcurrentRequests/Concurrency-10-241342897ns/op6123
BenchmarkConcurrentRequests/Concurrency-25-241355236ns/op6286
BenchmarkConcurrentRequests/Concurrency-50-241326230ns/op6997
BenchmarkMLExperimentExecution/SmallExperiment-2426734717ns/op657047
BenchmarkMLExperimentExecution/MediumExperiment-2412165317ns/op794462
BenchmarkMLExperimentExecution/LargeExperiment-243637957ns/op1128897
BenchmarkMLExperimentExecution/ConcurrentExperiments-2431061085ns/op1114816
BenchmarkMLExperimentExecution/ExperimentMetrics-2426862161ns/op615718
BenchmarkDatasetOperations/DatasetCreation-24102081ns/op2933
BenchmarkDatasetOperations/DatasetRetrieval-2452.64ns/op16
BenchmarkDatasetOperations/DatasetUpdate-2465401ns/op1285
- -

Raw Output

-
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
- - diff --git a/.local-artifacts/run_20251204_232656/benchmark_results.txt b/.local-artifacts/run_20251204_232656/benchmark_results.txt deleted file mode 100644 index 805d2cb..0000000 --- a/.local-artifacts/run_20251204_232656/benchmark_results.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_232656/clean_benchmarks.txt b/.local-artifacts/run_20251204_232656/clean_benchmarks.txt deleted file mode 100644 index 0be38d4..0000000 --- a/.local-artifacts/run_20251204_232656/clean_benchmarks.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_232656/prometheus_metrics.txt b/.local-artifacts/run_20251204_232656/prometheus_metrics.txt deleted file mode 100644 index 45e7b2c..0000000 --- a/.local-artifacts/run_20251204_232656/prometheus_metrics.txt +++ /dev/null @@ -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 diff --git a/.local-artifacts/run_20251204_232656/report.html b/.local-artifacts/run_20251204_232656/report.html deleted file mode 100644 index 4a8fd49..0000000 --- a/.local-artifacts/run_20251204_232656/report.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - Benchmark Report - 20251204_232656 - - - -

Benchmark Report

-

Run ID: 20251204_232656

-

Date: Thu Dec 4 18:27:25 EST 2025

- -

Results

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BenchmarkTime (ns/op)Memory (B/op)Allocs (allocs/op)
BenchmarkAPIServerCreateJobSimple-2443913ns/op13526
BenchmarkMetricsCollection-2419.34ns/op0
BenchmarkConcurrentRequests/Concurrency-1-24105096ns/op26660
BenchmarkConcurrentRequests/Concurrency-5-24646391ns/op16738
BenchmarkConcurrentRequests/Concurrency-10-241369525ns/op6036
BenchmarkConcurrentRequests/Concurrency-25-241394439ns/op6546
BenchmarkConcurrentRequests/Concurrency-50-241373567ns/op6347
BenchmarkMLExperimentExecution/SmallExperiment-2426726470ns/op657367
BenchmarkMLExperimentExecution/MediumExperiment-2412430890ns/op794823
BenchmarkMLExperimentExecution/LargeExperiment-243863256ns/op1129599
BenchmarkMLExperimentExecution/ConcurrentExperiments-2432534372ns/op1115220
BenchmarkMLExperimentExecution/ExperimentMetrics-2426962389ns/op615818
BenchmarkDatasetOperations/DatasetCreation-24100813ns/op2933
BenchmarkDatasetOperations/DatasetRetrieval-2450.28ns/op16
BenchmarkDatasetOperations/DatasetUpdate-2463463ns/op1285
- -

Raw Output

-
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
- - diff --git a/.pylintrc b/.pylintrc deleted file mode 100644 index dd3574c..0000000 --- a/.pylintrc +++ /dev/null @@ -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_?[A-Z][a-zA-Z0-9]{2,30})|(?P_?[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 ]*(# )??$ - -# 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= diff --git a/.windsurf/rules/test-new-features.md b/.windsurf/rules/test-new-features.md new file mode 100644 index 0000000..cac25e9 --- /dev/null +++ b/.windsurf/rules/test-new-features.md @@ -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 \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..35f186e --- /dev/null +++ b/AGENTS.md @@ -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 +``` \ No newline at end of file diff --git a/cpu.prof b/cpu.prof new file mode 100644 index 0000000..0fa19f8 Binary files /dev/null and b/cpu.prof differ diff --git a/mem.prof b/mem.prof new file mode 100644 index 0000000..51a2e6c Binary files /dev/null and b/mem.prof differ diff --git a/tests/benchmarks/api_benchmark_test.go b/tests/benchmarks/api_benchmark_test.go index 1243ecf..08fb8bb 100644 --- a/tests/benchmarks/api_benchmark_test.go +++ b/tests/benchmarks/api_benchmark_test.go @@ -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) diff --git a/tests/load/load_test.go b/tests/load/load_test.go index 2df3c56..d045bcf 100644 --- a/tests/load/load_test.go +++ b/tests/load/load_test.go @@ -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 } diff --git a/tests/unit/worker/jupyter_task_test.go b/tests/unit/worker/jupyter_task_test.go index 971ada3..eeb7d13 100644 --- a/tests/unit/worker/jupyter_task_test.go +++ b/tests/unit/worker/jupyter_task_test.go @@ -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)) + } +}