mirror of
https://github.com/hibiken/asynq.git
synced 2025-04-22 00:30:17 +08:00
Fix end-to-end benchmark to be deterministic
This commit is contained in:
parent
9b7b1bbff6
commit
d9161d621f
@ -5,6 +5,7 @@ git:
|
|||||||
go: [1.13.x, 1.14.x]
|
go: [1.13.x, 1.14.x]
|
||||||
script:
|
script:
|
||||||
- go test -race -v -coverprofile=coverage.txt -covermode=atomic ./...
|
- go test -race -v -coverprofile=coverage.txt -covermode=atomic ./...
|
||||||
|
- go test -run=XXX -bench=. -loglevel=debug -v ./...
|
||||||
services:
|
services:
|
||||||
- redis-server
|
- redis-server
|
||||||
after_success:
|
after_success:
|
||||||
|
@ -6,11 +6,11 @@ if [ "${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" != "master" ]; then
|
|||||||
# Benchmark master
|
# Benchmark master
|
||||||
echo "Running benchmark tests on master branch"
|
echo "Running benchmark tests on master branch"
|
||||||
git checkout master && \
|
git checkout master && \
|
||||||
go test -run=XXX -bench=. -loglevel=debug ./... > master.txt && \
|
go test -run=XXX -bench=. -loglevel=debug -v ./... > master.txt && \
|
||||||
# Benchmark feature branch
|
# Benchmark feature branch
|
||||||
echo "Running benchmark tests on feature branch"
|
echo "Running benchmark tests on feature branch"
|
||||||
git checkout ${TRAVIS_COMMIT} && \
|
git checkout ${TRAVIS_COMMIT} && \
|
||||||
go test -run=XXX -bench=. -loglevel=debug ./... > feature.txt && \
|
go test -run=XXX -bench=. -loglevel=debug -v ./... > feature.txt && \
|
||||||
go get -u golang.org/x/tools/cmd/benchcmp && \
|
go get -u golang.org/x/tools/cmd/benchcmp && \
|
||||||
# compare two benchmarks
|
# compare two benchmarks
|
||||||
benchcmp master.txt feature.txt;
|
benchcmp master.txt feature.txt;
|
||||||
|
@ -92,8 +92,16 @@ func BenchmarkEndToEnd(b *testing.B) {
|
|||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
wg.Add(count * 2)
|
wg.Add(count * 2)
|
||||||
handler := func(ctx context.Context, t *Task) error {
|
handler := func(ctx context.Context, t *Task) error {
|
||||||
// randomly fail 1% of tasks
|
n, err := t.Payload.GetInt("data")
|
||||||
if rand.Intn(100) == 1 {
|
if err != nil {
|
||||||
|
b.Logf("internal error: %v", err)
|
||||||
|
}
|
||||||
|
retried, ok := GetRetryCount(ctx)
|
||||||
|
if !ok {
|
||||||
|
b.Logf("internal error: %v", err)
|
||||||
|
}
|
||||||
|
// Fail 1% of tasks for the first attempt.
|
||||||
|
if retried == 0 && n%100 == 0 {
|
||||||
return fmt.Errorf(":(")
|
return fmt.Errorf(":(")
|
||||||
}
|
}
|
||||||
wg.Done()
|
wg.Done()
|
||||||
|
13
heartbeat.go
13
heartbeat.go
@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
"github.com/hibiken/asynq/internal/base"
|
"github.com/hibiken/asynq/internal/base"
|
||||||
"github.com/hibiken/asynq/internal/log"
|
"github.com/hibiken/asynq/internal/log"
|
||||||
|
"github.com/hibiken/asynq/internal/rdb"
|
||||||
"github.com/rs/xid"
|
"github.com/rs/xid"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -162,4 +163,16 @@ func (h *heartbeater) beat() {
|
|||||||
if err := h.broker.WriteServerState(&info, ws, h.interval*2); err != nil {
|
if err := h.broker.WriteServerState(&info, ws, h.interval*2); err != nil {
|
||||||
h.logger.Errorf("could not write server state data: %v", err)
|
h.logger.Errorf("could not write server state data: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Debug purpose
|
||||||
|
rdb, ok := h.broker.(*rdb.RDB)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
stats, err := rdb.CurrentStats()
|
||||||
|
if err != nil {
|
||||||
|
h.logger.Errorf("could not get current stat: %v", err)
|
||||||
|
} else {
|
||||||
|
h.logger.Debugf("current stats: %+v", stats)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user