parent
42a18320b1
commit
639d47e89f
@ -0,0 +1,5 @@ |
||||
syntax="proto3"; |
||||
|
||||
package kratos.health; |
||||
|
||||
option go_package = "github.com/go-kratos/kratos/v2/api/proto/kratos/api;metadata"; |
@ -0,0 +1,52 @@ |
||||
package health |
||||
|
||||
import ( |
||||
"fmt" |
||||
"golang.org/x/net/context" |
||||
"math/rand" |
||||
"testing" |
||||
"time" |
||||
) |
||||
|
||||
type A struct { |
||||
} |
||||
|
||||
func (A) Check(ctx context.Context) (interface{}, error) { |
||||
fmt.Println("check A") |
||||
if rand.Int()%2 == 0 { |
||||
return "出错A", fmt.Errorf("错误:%s", "123") |
||||
} |
||||
return "正常A", nil |
||||
} |
||||
|
||||
type B struct { |
||||
} |
||||
|
||||
func (B) Check(ctx context.Context) (interface{}, error) { |
||||
fmt.Println("check B") |
||||
if rand.Int()%2 == 0 { |
||||
return "出错B", fmt.Errorf("错误:%s", "123B") |
||||
} |
||||
return "正常B", nil |
||||
} |
||||
|
||||
func TestNew(t *testing.T) { |
||||
ctx, cancel := context.WithCancel(context.TODO()) |
||||
cm := New(ctx) |
||||
cm.RegisterChecker(NewChecker("A", A{}, 0, time.Second*10)) |
||||
cm.RegisterChecker(NewChecker("B", B{}, 0, time.Second*10)) |
||||
cm.Start() |
||||
go func() { |
||||
|
||||
s := cm.GetStatus() |
||||
fmt.Println("----", s) |
||||
w := cm.NewWatcher() |
||||
defer w.Close() |
||||
for i := range w.Ch { |
||||
fmt.Println("---", cm.GetStatus(i)) |
||||
} |
||||
|
||||
}() |
||||
time.Sleep(time.Second * 100) |
||||
cancel() |
||||
} |
Loading…
Reference in new issue