(chore) setup kmsvc-cli
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
kafkamgmtv1 "forgejo.riotpiao.homelab.com/homelab/kmsvc-proto/gen/kafkamgmt/v1"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
// fakeQueueService is a minimal QueueServiceServer for exercising CLI
|
||||
// commands end-to-end over a real (loopback) gRPC connection.
|
||||
type fakeQueueService struct {
|
||||
kafkamgmtv1.UnimplementedQueueServiceServer
|
||||
|
||||
sendMessage func(context.Context, *kafkamgmtv1.SendMessageRequest) (*kafkamgmtv1.SendMessageResponse, error)
|
||||
receiveMessage func(context.Context, *kafkamgmtv1.ReceiveMessageRequest) (*kafkamgmtv1.ReceiveMessageResponse, error)
|
||||
deleteMessage func(context.Context, *kafkamgmtv1.DeleteMessageRequest) (*kafkamgmtv1.DeleteMessageResponse, error)
|
||||
changeMessageVisibility func(context.Context, *kafkamgmtv1.ChangeMessageVisibilityRequest) (*kafkamgmtv1.ChangeMessageVisibilityResponse, error)
|
||||
}
|
||||
|
||||
func (f *fakeQueueService) SendMessage(ctx context.Context, req *kafkamgmtv1.SendMessageRequest) (*kafkamgmtv1.SendMessageResponse, error) {
|
||||
if f.sendMessage != nil {
|
||||
return f.sendMessage(ctx, req)
|
||||
}
|
||||
return f.UnimplementedQueueServiceServer.SendMessage(ctx, req)
|
||||
}
|
||||
|
||||
func (f *fakeQueueService) ReceiveMessage(ctx context.Context, req *kafkamgmtv1.ReceiveMessageRequest) (*kafkamgmtv1.ReceiveMessageResponse, error) {
|
||||
if f.receiveMessage != nil {
|
||||
return f.receiveMessage(ctx, req)
|
||||
}
|
||||
return f.UnimplementedQueueServiceServer.ReceiveMessage(ctx, req)
|
||||
}
|
||||
|
||||
func (f *fakeQueueService) DeleteMessage(ctx context.Context, req *kafkamgmtv1.DeleteMessageRequest) (*kafkamgmtv1.DeleteMessageResponse, error) {
|
||||
if f.deleteMessage != nil {
|
||||
return f.deleteMessage(ctx, req)
|
||||
}
|
||||
return f.UnimplementedQueueServiceServer.DeleteMessage(ctx, req)
|
||||
}
|
||||
|
||||
func (f *fakeQueueService) ChangeMessageVisibility(ctx context.Context, req *kafkamgmtv1.ChangeMessageVisibilityRequest) (*kafkamgmtv1.ChangeMessageVisibilityResponse, error) {
|
||||
if f.changeMessageVisibility != nil {
|
||||
return f.changeMessageVisibility(ctx, req)
|
||||
}
|
||||
return f.UnimplementedQueueServiceServer.ChangeMessageVisibility(ctx, req)
|
||||
}
|
||||
|
||||
// startTestServer starts fake on a loopback TCP listener and returns its
|
||||
// address, registering cleanup with t.
|
||||
func startTestServer(t *testing.T, fake *fakeQueueService) string {
|
||||
t.Helper()
|
||||
|
||||
lis, err := net.Listen("tcp", "127.0.0.1:0")
|
||||
if err != nil {
|
||||
t.Fatalf("listen: %v", err)
|
||||
}
|
||||
|
||||
srv := grpc.NewServer()
|
||||
kafkamgmtv1.RegisterQueueServiceServer(srv, fake)
|
||||
go func() {
|
||||
_ = srv.Serve(lis)
|
||||
}()
|
||||
t.Cleanup(srv.Stop)
|
||||
|
||||
return lis.Addr().String()
|
||||
}
|
||||
Reference in New Issue
Block a user