You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
956 B
52 lines
956 B
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()
|
|
}
|
|
|