luccadibe knativeBenchmark .cursorrules file for Go

# Knative Benchmark Project Rules

## 1. Infrastructure Requirements

- All infrastructure must be deployed on Google Cloud Engine (GCE)
- Kubernetes cluster must be created and managed using kops
- Knative components and benchmark functions must run on separate nodes from the workload generator
- Use node labels and taints/tolerations to ensure proper workload separation

## 2. Workload Generator Requirements

- Must be written in Go
- Must be containerized and run as a Kubernetes Deployment
- No use of existing load testing tools (e.g., k6, Apache JMeter, etc.)
- Must support configurable:
  - Request rates (requests per second)
  - Payload sizes
  - Distribution patterns (constant rate, burst patterns)
  - Number of concurrent connections
  - Test duration

## 3. Observability Requirements

- Must implement OpenTelemetry collector for metrics collection
- Must configure Knative components to export metrics to OpenTelemetry
- Must collect the following metrics:
  - Latency (p50, p95, p99)
  - Throughput (requests/sec)
  - Cold start times
  - Resource utilization (CPU, Memory)
  - Error rates

## 4. Test Scenarios

### Scenario 1: Resource Configuration
- Test functions with varying CPU/memory allocations
- Measure performance impact of different resource configurations
- Include CPU and memory-intensive workloads

### Scenario 2: Language Framework Comparison
- Implement equivalent functions in:
  - Go
  - Python
  - Java
  - Node.js
- Use identical workloads across languages
- Measure cold/warm start times and resource usage

### Scenario 3: Eventing Performance
- Test Knative Eventing with producer/consumer pattern
- Measure event propagation latency
- Test different event sizes and throughput rates

## 5. Project Structure Requirements

- Use `just` command runner for automation
- Maintain separate directories for:
  - Infrastructure code (we use a sub repo for this)
  - Workload generator
  - Storage module (implement csv file storage for benchmark results)
  - Test functions
  - Deployment manifests
  - Analysis scripts

## 6. Code Quality Requirements

- All Go code must:
  - Include unit tests
  - Follow Go best practices
  - Never use inline if err syntax. Always check the error after with if err != nil{ ...}

## 7. Documentation Requirements

- Include detailed setup instructions
- Document all metrics collected
- Provide analysis of results
- Include troubleshooting guide
- Document all configuration parameters

## 8. Reproducibility Requirements

- All tests must be reproducible
- Include scripts for cluster creation/teardown
- Document all environment variables
- Include version information for all components
go
golang
hcl
java
just
kubernetes
less
procfile
+4 more

First Time Repository

A Benchmark of the Knative serverless platform for k8s

Go

Languages:

Go: 30.2KB
HCL: 0.9KB
Java: 3.9KB
Just: 19.5KB
Procfile: 0.0KB
Python: 10.4KB
Rust: 3.5KB
Shell: 0.1KB
TypeScript: 1.4KB
Created: 12/5/2024
Updated: 1/23/2025

All Repositories (1)

A Benchmark of the Knative serverless platform for k8s