coredns / coredns/perf-tests

Plan: Continuous perf testing

Open
#11 5 comments 0 reactions 0 assignees View on GitHub
Dominant language
Shell
Stars
17
Forks
8
PR merge metrics
No merged PRs in 30d

Description

# Continous performance testing for CoreDNS

## Setup

drone.coredns.io (Packet machine) runs [`webhook`](https://github.com/adnanh/webhook/) behind a Caddy server. Caddy is used for Let's Encrypt TLS certs and only proxies.

Further more [mbench](https://github.com/miekg/mbench) is running to collect performance data (`go test -bench=.` output) and convert into prometheus metrics.

Prometheus is running locally, scrapping mbench.

Grafana is running locally displaying graphs from Prometheus.

Of all these things, only Caddy and mbench are *not* installed from the Debian repos.

## Integration with Github

Webhook setup on github.com point to drone.io port.

### Trigger a build from Github

On a PR add a comment: `@mbench OK ....`. Only the OK is needed. Only some people
can trigger these.

### Trigger locally

Send a REST request to another endpoint (blocks everything execpt ::1 and 127.0.0.1).

### Master branch

A local cron job trigger the unauthenticated local endpoint every 30 minutes.
## Future

* Each middleware should have more benchmarks
* Publish this data somewhere?

Contributor guide

No contributing guide indexed for this repository

Research direction

No repository files or tests are named. Start by inspecting the existing shell scripts and the drone/webhook, mbench, Prometheus, and Grafana setup described in the issue. Clarify the benchmark coverage, trigger flow, and destination for published data; done requires an agreed scope and implementation plan.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, go, grafana, prometheus, shell
Domain
devops, observability, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.