pomerium/pkg/health/deduplicate_test.go
Denis Mishin 6e766233c7
zero/health-checks: fix early checks sometimes missing (#5229)
* zero/health-checks: fix early checks sometimes missing

* rm closure

* fix test
2024-08-20 22:13:45 -04:00

63 lines
1.8 KiB
Go

package health_test
import (
"errors"
"testing"
"go.uber.org/mock/gomock"
health "github.com/pomerium/pomerium/pkg/health"
)
//go:generate go run go.uber.org/mock/mockgen -package health_test -destination provider_mock_test.go github.com/pomerium/pomerium/pkg/health Provider
func TestDeduplicate(t *testing.T) {
t.Parallel()
p1 := NewMockProvider(gomock.NewController(t))
dp := health.NewDeduplicator()
dp.SetProvider(p1)
check1, check2, check3 := health.Check("check-1"), health.Check("check-2"), health.Check("check-3")
p1.EXPECT().ReportOK(check1).Times(1)
p1.EXPECT().ReportOK(check2).Times(1)
p1.EXPECT().ReportError(check3, errors.New("error-3")).Times(1)
dp.ReportOK(check1)
dp.ReportOK(check2)
dp.ReportOK(check1)
dp.ReportError(check3, errors.New("error-3"))
p1.EXPECT().ReportError(check1, errors.New("error")).Times(1)
dp.ReportError(check1, errors.New("error"))
dp.ReportError(check1, errors.New("error"))
p1.EXPECT().ReportOK(check1).Times(1)
dp.ReportOK(check1)
p1.EXPECT().ReportOK(check1, health.StrAttr("k1", "v1")).Times(2)
p1.EXPECT().ReportOK(check1, health.StrAttr("k1", "v2")).Times(1)
dp.ReportOK(check1, health.StrAttr("k1", "v1"))
dp.ReportOK(check1, health.StrAttr("k1", "v2"))
dp.ReportOK(check1, health.StrAttr("k1", "v1"))
// after setting new provider, current state should be reported
p2 := NewMockProvider(gomock.NewController(t))
p2.EXPECT().ReportOK(check1, health.StrAttr("k1", "v1")).Times(1)
p2.EXPECT().ReportOK(check2).Times(1)
p2.EXPECT().ReportError(check3, errors.New("error-3")).Times(1)
dp.SetProvider(p2)
}
func TestDefault(t *testing.T) {
t.Parallel()
p := NewMockProvider(gomock.NewController(t))
health.SetProvider(p)
check1 := health.Check("check-1")
p.EXPECT().ReportOK(check1).Times(1)
health.ReportOK(check1)
health.SetProvider(nil)
health.ReportOK(check1)
}