From 5daf99c18ee93cc801ab591d03698ccbbf241af0 Mon Sep 17 00:00:00 2001 From: Ken Hibino Date: Sat, 18 Apr 2020 07:56:27 -0700 Subject: [PATCH] Add failure test for heartbeater --- heartbeat_test.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/heartbeat_test.go b/heartbeat_test.go index 75c9940..cf17fe5 100644 --- a/heartbeat_test.go +++ b/heartbeat_test.go @@ -14,6 +14,7 @@ import ( h "github.com/hibiken/asynq/internal/asynqtest" "github.com/hibiken/asynq/internal/base" "github.com/hibiken/asynq/internal/rdb" + "github.com/hibiken/asynq/internal/testbroker" ) func TestHeartbeater(t *testing.T) { @@ -102,3 +103,26 @@ func TestHeartbeater(t *testing.T) { hb.terminate() } } + +func TestHeartbeaterWithRedisDown(t *testing.T) { + // Make sure that heartbeater goroutine doesn't panic + // if it cannot connect to redis. + defer func() { + if r := recover(); r != nil { + t.Errorf("panic occurred: %v", r) + } + }() + r := rdb.NewRDB(setup(t)) + testBroker := testbroker.NewTestBroker(r) + ss := base.NewServerState("localhost", 1234, 10, map[string]int{"default": 1}, false) + hb := newHeartbeater(testLogger, testBroker, ss, time.Second) + + testBroker.Sleep() + var wg sync.WaitGroup + hb.start(&wg) + + // wait for heartbeater to try writing data to redis + time.Sleep(2 * time.Second) + + hb.terminate() +}