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  }