hyapp-server/pkg/grpchealth/health_test.go
2026-04-25 01:18:30 +08:00

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())
}
}