40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
package grpchealth
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
healthpb "google.golang.org/grpc/health/grpc_health_v1"
|
|
)
|
|
|
|
func TestServingCheckerMapsReadiness(t *testing.T) {
|
|
checker := NewServingChecker("wallet-service")
|
|
server := NewServer(checker)
|
|
|
|
resp, err := server.Check(context.Background(), &healthpb.HealthCheckRequest{Service: "wallet-service"})
|
|
if err != nil {
|
|
t.Fatalf("Check before serving failed: %v", err)
|
|
}
|
|
if resp.GetStatus() != healthpb.HealthCheckResponse_NOT_SERVING {
|
|
t.Fatalf("status before serving mismatch: got %s want NOT_SERVING", resp.GetStatus())
|
|
}
|
|
|
|
checker.MarkServing()
|
|
resp, err = server.Check(context.Background(), &healthpb.HealthCheckRequest{Service: "wallet-service"})
|
|
if err != nil {
|
|
t.Fatalf("Check after serving failed: %v", err)
|
|
}
|
|
if resp.GetStatus() != healthpb.HealthCheckResponse_SERVING {
|
|
t.Fatalf("status after serving mismatch: got %s want SERVING", resp.GetStatus())
|
|
}
|
|
|
|
checker.MarkDraining()
|
|
resp, err = server.Check(context.Background(), &healthpb.HealthCheckRequest{Service: "wallet-service"})
|
|
if err != nil {
|
|
t.Fatalf("Check after draining failed: %v", err)
|
|
}
|
|
if resp.GetStatus() != healthpb.HealthCheckResponse_NOT_SERVING {
|
|
t.Fatalf("status after draining mismatch: got %s want NOT_SERVING", resp.GetStatus())
|
|
}
|
|
}
|