-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathbroker_test.go
More file actions
53 lines (44 loc) · 1.4 KB
/
broker_test.go
File metadata and controls
53 lines (44 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package trc_test
import (
"context"
"testing"
"github.com/peterbourgon/trc"
)
func BenchmarkBrokerPublish(b *testing.B) {
ctxbg := context.Background()
fn := func(name string, fs ...trc.Filter) {
b.Run(name, func(b *testing.B) {
var (
ctx, cancel = context.WithCancel(ctxbg)
broker = trc.NewBroker()
)
for _, f := range fs {
tracec := make(chan trc.Trace)
defer func() { <-tracec }()
go func(f trc.Filter) {
broker.Stream(ctx, f, tracec)
close(tracec)
}(f)
}
_, tr := trc.New(ctxbg, "source", "category")
defer tr.Finish()
b.ResetTimer()
b.ReportAllocs()
for i := 0; i < b.N; i++ {
broker.Publish(ctxbg, tr)
}
cancel()
})
}
var (
isErrored = trc.Filter{IsErrored: true}
isActive = trc.Filter{IsActive: true}
)
fn("no subscribers")
fn("1 skip subscriber", isErrored)
fn("10 skip subscribers", isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored)
fn("1 send subscriber", isActive)
fn("10 send subscribers", isActive, isActive, isActive, isActive, isActive, isActive, isActive, isActive, isActive, isActive)
fn("9 skip, 1 send", isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isActive)
fn("1 skip, 9 send", isActive, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored, isErrored)
}