trpc.group/trpc-go/trpc-go@v1.0.3/healthcheck/options_test.go (about) 1 // 2 // 3 // Tencent is pleased to support the open source community by making tRPC available. 4 // 5 // Copyright (C) 2023 THL A29 Limited, a Tencent company. 6 // All rights reserved. 7 // 8 // If you have downloaded a copy of the tRPC source code from Tencent, 9 // please note that tRPC source code is licensed under the Apache 2.0 License, 10 // A copy of the Apache 2.0 License is included in this file. 11 // 12 // 13 14 package healthcheck_test 15 16 import ( 17 "testing" 18 19 "github.com/stretchr/testify/require" 20 21 "trpc.group/trpc-go/trpc-go/healthcheck" 22 ) 23 24 func TestWithStatusWatcher(t *testing.T) { 25 service1 := "testService1" 26 service2 := "testService2" 27 28 serviceStatus := map[string]healthcheck.Status{ 29 service1: healthcheck.Serving, 30 service2: healthcheck.Serving, 31 } 32 watchFunc := func(status healthcheck.Status) { 33 serviceStatus[service1] = status 34 } 35 36 hc := healthcheck.New(healthcheck.WithStatusWatchers(map[string][]func(status healthcheck.Status){ 37 service1: {watchFunc}, 38 })) 39 update, _ := hc.Register(service1) 40 update(healthcheck.Serving) 41 require.Equal(t, healthcheck.Serving, serviceStatus[service1]) 42 require.Equal(t, healthcheck.Serving, serviceStatus[service2]) 43 44 update(healthcheck.NotServing) 45 require.Equal(t, healthcheck.NotServing, serviceStatus[service1]) 46 require.Equal(t, healthcheck.Serving, serviceStatus[service2]) 47 }