Skip to content

Commit 760b3e0

Browse files
authored
tests: test dns middleware (#1451)
* dns: route dns tests through middleware * run benchmarks in test pipeline to make sure they work * require test-bench
1 parent f22879b commit 760b3e0

File tree

4 files changed

+37
-8
lines changed

4 files changed

+37
-8
lines changed

.github/workflows/benchmark.yml

+2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ jobs:
2828
- run: make test-env-start
2929
- run: make install-deps
3030
- run: make bench
31+
- if: ${{ always() }}
32+
run: make test-env-stop
3133
- uses: benchmark-action/github-action-benchmark@v1
3234
with:
3335
name: Gravity Benchmark

.github/workflows/test.yml

+21
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,26 @@ jobs:
4545
uses: codecov/test-results-action@v1
4646
with:
4747
token: ${{ secrets.CODECOV_TOKEN }}
48+
test-bench:
49+
name: Test (bench)
50+
runs-on: ubuntu-latest
51+
steps:
52+
- uses: actions/checkout@v4
53+
- uses: actions/setup-go@v5
54+
with:
55+
go-version-file: go.mod
56+
cache: true
57+
- uses: actions/setup-node@v4
58+
with:
59+
node-version-file: web/package.json
60+
cache: "npm"
61+
cache-dependency-path: web/package-lock.json
62+
- run: make web-install gen-client-ts web-build
63+
- run: make test-env-start
64+
- run: make install-deps gen-clean gen-client-go
65+
- run: make bench
66+
- if: ${{ always() }}
67+
run: make test-env-stop
4868
test-e2e:
4969
name: Test (e2e)
5070
runs-on: ubuntu-latest
@@ -73,6 +93,7 @@ jobs:
7393
needs:
7494
- test-unittest
7595
- test-e2e
96+
- test-bench
7697
runs-on: ubuntu-latest
7798
steps:
7899
- uses: re-actors/alls-green@release/v1

pkg/roles/dns/dns_handler.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func (r *Role) FindZone(fqdn string) *Zone {
3131
return longestZone
3232
}
3333

34-
func (ro *Role) Handler(w dns.ResponseWriter, r *dns.Msg) {
34+
func (ro *Role) handler(w dns.ResponseWriter, r *dns.Msg) {
3535
span := sentry.StartTransaction(
3636
context.TODO(),
3737
"gravity.dns.request",

pkg/roles/dns/role.go

+13-7
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ type Role struct {
2424
ctx context.Context
2525
zones *watcher.Watcher[*Zone]
2626

27-
cfg *RoleConfig
28-
log *zap.Logger
27+
cfg *RoleConfig
28+
log *zap.Logger
29+
2930
servers []*dns.Server
31+
m *dns.ServeMux
3032
}
3133

3234
func init() {
@@ -41,6 +43,7 @@ func New(instance roles.Instance) *Role {
4143
log: instance.Log(),
4244
i: instance,
4345
ctx: instance.Context(),
46+
m: dns.NewServeMux(),
4447
}
4548
r.zones = watcher.New(
4649
func(kv *mvccpb.KeyValue) (*Zone, error) {
@@ -106,12 +109,11 @@ func (r *Role) Start(ctx context.Context, config []byte) error {
106109

107110
r.zones.Start(r.ctx)
108111

109-
dnsMux := dns.NewServeMux()
110-
dnsMux.HandleFunc(
112+
r.m.HandleFunc(
111113
types.DNSRootZone,
112114
r.recoverMiddleware(
113115
r.loggingMiddleware(
114-
r.Handler,
116+
r.handler,
115117
),
116118
),
117119
)
@@ -136,19 +138,23 @@ func (r *Role) Start(ctx context.Context, config []byte) error {
136138
{
137139
Addr: listen,
138140
Net: "udp",
139-
Handler: dnsMux,
141+
Handler: r.m,
140142
},
141143
{
142144
Addr: listen,
143145
Net: "tcp",
144-
Handler: dnsMux,
146+
Handler: r.m,
145147
},
146148
}
147149
go srv(0)
148150
go srv(1)
149151
return nil
150152
}
151153

154+
func (r *Role) Handler(w dns.ResponseWriter, req *dns.Msg) {
155+
r.m.ServeDNS(w, req)
156+
}
157+
152158
func (r *Role) Stop() {
153159
r.zones.Stop()
154160
for _, server := range r.servers {

0 commit comments

Comments
 (0)