knative / knative/toolbox

Performance tests Go-native tool

Open
#21 4 comments 0 reactions 0 assignees View on GitHub
kind/enhancement triage/accepted
Dominant language
Go
Stars
4
Forks
13
PR merge metrics
No merged PRs in 30d

Description

Rewrite `performance-tests.sh` script (https://github.com/knative/hack/blob/main/README.md#using-the-performance-testssh-helper-script) into a Golang tool `knative.dev/toolbox/performance`.

Invent new Go-native extension interface, for example:

```sh
# will look for Go files with `perf` build constraints, that register configuration
go run knative.dev/toolbox/performance@latest
```

An example configuration might look like:

```go
//go:build perf
package serving

import (
"fmt"
"os"

// Implemented with `github.com/bitfield/script` or similar
"knative.dev/pkg/kscript/ko"
"knative.dev/toolbox/performance/pkg/config"
)

init {
config.Configure(config.Config{
Dir: "test/perf/bench", # default is "test/performance/benchmarks"
UpdateKnative: function(ctx config.Context) error {
ctx.LogProgress("Updating serving")
return ko.Apply("config")
},
UpdateBenchmark: function(ctx config.Context, benchmark string) error {
ctx.LogProgress(fmt.Sprintf("Updating benchmark $1", benchmark))
return ko.Apply(fmt.Sprintf("%s/%s, ctx.Dir, benchmark))
},
})
}
```

Contributor guide

Open the contributing guide

Research direction

Start by reading performance-tests.sh and the README section on the performance-testssh helper script. Then review the proposed knative.dev/toolbox/performance entry point and extension interface. Done means the shell helper is replaced by a usable Go-native performance tool with the requested configuration and benchmark-update flow.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, shell
Domain
performance, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.