mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 18:36:30 +02:00
63 lines
1.8 KiB
Go
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)
|
|
}
|