github.com/hxx258456/fabric-ca-gm@v0.0.3-0.20221111064038-a268ad7e3a37/test/integration/healthcheck/healthcheck_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 package healthcheck 7 8 import ( 9 "encoding/json" 10 "fmt" 11 "io/ioutil" 12 "net" 13 "os" 14 "testing" 15 16 http "github.com/hxx258456/ccgo/gmhttp" 17 18 "github.com/hxx258456/fabric-ca-gm/lib" 19 "github.com/hxx258456/fabric-config-gm/healthz" 20 21 "github.com/stretchr/testify/assert" 22 ) 23 24 func TestHealthCheckEndpoint(t *testing.T) { 25 server := lib.TestGetRootServer(t) 26 server.Config.Operations.ListenAddress = "127.0.0.1:0" 27 28 err := server.Start() 29 assert.NoError(t, err) 30 defer func() { 31 server.Stop() 32 os.RemoveAll("./rootDir") 33 }() 34 35 _, port, err := net.SplitHostPort(server.Operations.Addr()) 36 assert.NoError(t, err) 37 38 client := &http.Client{} 39 healthURL := fmt.Sprintf("http://127.0.0.1:%s/healthz", port) 40 41 resp, err := client.Get(healthURL) 42 assert.NoError(t, err) 43 assert.Equal(t, http.StatusOK, resp.StatusCode) 44 45 err = server.GetDB().Close() 46 assert.NoError(t, err) 47 48 resp, err = client.Get(healthURL) 49 assert.NoError(t, err) 50 51 bodyBytes, err := ioutil.ReadAll(resp.Body) 52 assert.NoError(t, err) 53 54 resp.Body.Close() 55 56 var healthStatus healthz.HealthStatus 57 err = json.Unmarshal(bodyBytes, &healthStatus) 58 assert.NoError(t, err) 59 60 assert.Equal(t, http.StatusServiceUnavailable, resp.StatusCode) 61 assert.Equal(t, "server", healthStatus.FailedChecks[0].Component) 62 assert.Equal(t, "sql: database is closed", healthStatus.FailedChecks[0].Reason) 63 }