diff --git a/server/.golangci.yml b/server/.golangci.yml index 2971fadf3a6..e8f5fcb9580 100644 --- a/server/.golangci.yml +++ b/server/.golangci.yml @@ -192,7 +192,6 @@ issues: channels/jobs/hosted_purchase_screening/worker.go|\ channels/jobs/jobs.go|\ channels/jobs/resend_invitation_email/worker.go|\ - channels/jobs/schedulers_test.go|\ channels/manualtesting/manual_testing.go|\ channels/store/localcachelayer/channel_layer.go|\ channels/store/localcachelayer/channel_layer_test.go|\ diff --git a/server/channels/jobs/schedulers_test.go b/server/channels/jobs/schedulers_test.go index ddfb5323d9f..fddf9d0b124 100644 --- a/server/channels/jobs/schedulers_test.go +++ b/server/channels/jobs/schedulers_test.go @@ -68,10 +68,14 @@ func TestScheduler(t *testing.T) { jobServer.RegisterJobType(model.JobTypeMessageExport, nil, new(MockScheduler)) t.Run("Base", func(t *testing.T) { - jobServer.StartSchedulers() + err := jobServer.StartSchedulers() + require.NoError(t, err) + time.Sleep(2 * time.Second) - jobServer.StopSchedulers() + err = jobServer.StopSchedulers() + require.NoError(t, err) + // They should be all on here for _, element := range jobServer.schedulers.nextRunTimes { assert.NotNil(t, element) @@ -80,10 +84,15 @@ func TestScheduler(t *testing.T) { t.Run("ClusterLeaderChanged", func(t *testing.T) { jobServer.initSchedulers() - jobServer.StartSchedulers() + err := jobServer.StartSchedulers() + require.NoError(t, err) + time.Sleep(2 * time.Second) jobServer.HandleClusterLeaderChange(false) - jobServer.StopSchedulers() + + err = jobServer.StopSchedulers() + require.NoError(t, err) + // They should be turned off for _, element := range jobServer.schedulers.nextRunTimes { assert.Nil(t, element) @@ -93,9 +102,13 @@ func TestScheduler(t *testing.T) { t.Run("ClusterLeaderChangedBeforeStart", func(t *testing.T) { jobServer.initSchedulers() jobServer.HandleClusterLeaderChange(false) - jobServer.StartSchedulers() + err := jobServer.StartSchedulers() + require.NoError(t, err) + time.Sleep(2 * time.Second) - jobServer.StopSchedulers() + err = jobServer.StopSchedulers() + require.NoError(t, err) + for _, element := range jobServer.schedulers.nextRunTimes { assert.Nil(t, element) } @@ -105,9 +118,13 @@ func TestScheduler(t *testing.T) { jobServer.initSchedulers() jobServer.HandleClusterLeaderChange(false) jobServer.HandleClusterLeaderChange(true) - jobServer.StartSchedulers() + err := jobServer.StartSchedulers() + require.NoError(t, err) + time.Sleep(2 * time.Second) - jobServer.StopSchedulers() + err = jobServer.StopSchedulers() + require.NoError(t, err) + for _, element := range jobServer.schedulers.nextRunTimes { assert.NotNil(t, element) } @@ -115,12 +132,16 @@ func TestScheduler(t *testing.T) { t.Run("ConfigChanged", func(t *testing.T) { jobServer.initSchedulers() - jobServer.StartSchedulers() + err := jobServer.StartSchedulers() + require.NoError(t, err) + time.Sleep(2 * time.Second) jobServer.HandleClusterLeaderChange(false) // After running a config change, they should stay off jobServer.schedulers.handleConfigChange(nil, nil) - jobServer.StopSchedulers() + err = jobServer.StopSchedulers() + require.NoError(t, err) + for _, element := range jobServer.schedulers.nextRunTimes { assert.Nil(t, element) } @@ -128,14 +149,17 @@ func TestScheduler(t *testing.T) { t.Run("ConfigChangedDeadlock", func(t *testing.T) { jobServer.initSchedulers() - jobServer.StartSchedulers() + err := jobServer.StartSchedulers() + require.NoError(t, err) + time.Sleep(2 * time.Second) var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() - jobServer.StopSchedulers() + err := jobServer.StopSchedulers() + require.NoError(t, err) }() go func() { defer wg.Done()