healing
/
group_test.go
76 строк · 1.7 Кб
1package healing2
3import (4"context"5"errors"6"fmt"7"testing"8"time"9
10"github.com/stretchr/testify/assert"11)
12
13func TestCheckGroup_Check(t *testing.T) {14testcases := []struct {15name string16checkers []checkFunc17checkTimeout time.Duration18checkDuration time.Duration19expected bool20}{21{22name: "basic case",23checkers: []checkFunc{24func(ctx context.Context) CheckResult {25return CheckResult{}26},27},28checkTimeout: 100 * time.Millisecond,29checkDuration: 200 * time.Millisecond,30expected: true,31},32{33name: "long check",34checkers: []checkFunc{35func(ctx context.Context) CheckResult {36<-time.After(300 * time.Millisecond)37return CheckResult{}38},39},40checkTimeout: 100 * time.Millisecond,41checkDuration: 100 * time.Millisecond,42expected: false,43},44{45name: "failed check",46checkers: []checkFunc{47func(ctx context.Context) CheckResult {48return CheckResult{Error: errors.New("failed check")}49},50},51checkTimeout: 100 * time.Millisecond,52checkDuration: 100 * time.Millisecond,53expected: false,54},55{56name: "no checks",57checkers: nil,58checkTimeout: 100 * time.Millisecond,59checkDuration: 200 * time.Millisecond,60expected: true,61},62}63for _, testcase := range testcases {64tc := testcase65t.Run(tc.name, func(t *testing.T) {66g := NewCheckGroup(tc.checkTimeout)67for i, check := range tc.checkers {68g.AddChecker(fmt.Sprintf("subsystem%d", i), check)69}70ctx, cancel := context.WithTimeout(context.Background(), tc.checkDuration)71defer cancel()72g.Check(ctx)73assert.Equal(t, tc.expected, g.IsOK())74})75}76}
77