diff --git a/.travis.yml b/.travis.yml index 9d47394..4913f13 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ git: go: [1.13.x, 1.14.x] script: - go test -race -v -coverprofile=coverage.txt -covermode=atomic ./... + - go test -run=XXX -bench=. -loglevel=debug -v ./... services: - redis-server after_success: diff --git a/.travis/benchcmp.sh b/.travis/benchcmp.sh index 68dd088..e4f362c 100755 --- a/.travis/benchcmp.sh +++ b/.travis/benchcmp.sh @@ -6,11 +6,11 @@ if [ "${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" != "master" ]; then # Benchmark master echo "Running benchmark tests on master branch" 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 echo "Running benchmark tests on feature branch" 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 && \ # compare two benchmarks benchcmp master.txt feature.txt; diff --git a/benchmark_test.go b/benchmark_test.go index d3338f2..e4a3211 100644 --- a/benchmark_test.go +++ b/benchmark_test.go @@ -92,8 +92,16 @@ func BenchmarkEndToEnd(b *testing.B) { var wg sync.WaitGroup wg.Add(count * 2) handler := func(ctx context.Context, t *Task) error { - // randomly fail 1% of tasks - if rand.Intn(100) == 1 { + n, err := t.Payload.GetInt("data") + 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(":(") } wg.Done() diff --git a/heartbeat.go b/heartbeat.go index 26907f3..cc59a76 100644 --- a/heartbeat.go +++ b/heartbeat.go @@ -11,6 +11,7 @@ import ( "github.com/hibiken/asynq/internal/base" "github.com/hibiken/asynq/internal/log" + "github.com/hibiken/asynq/internal/rdb" "github.com/rs/xid" ) @@ -162,4 +163,16 @@ func (h *heartbeater) beat() { if err := h.broker.WriteServerState(&info, ws, h.interval*2); err != nil { 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) + } }