Make inmem mock streams generic (#7370)
This significantly reduces the amount of code necessary to add inmem wrappers for other streaming SA methods if/when we need them in the future.
This commit is contained in:
parent
74328338a0
commit
cd418af285
|
|
@ -133,46 +133,46 @@ func (sa SA) FQDNSetExists(ctx context.Context, req *sapb.FQDNSetExistsRequest,
|
|||
return sa.Impl.FQDNSetExists(ctx, req)
|
||||
}
|
||||
|
||||
type mockSerialsForIncidentStream_Result struct {
|
||||
serial *sapb.IncidentSerial
|
||||
err error
|
||||
type mockStreamResult[T any] struct {
|
||||
val T
|
||||
err error
|
||||
}
|
||||
|
||||
type mockSerialsForIncidentStream_Client struct {
|
||||
type mockClientStream[T any] struct {
|
||||
grpc.ClientStream
|
||||
stream <-chan mockSerialsForIncidentStream_Result
|
||||
stream <-chan mockStreamResult[T]
|
||||
}
|
||||
|
||||
func (c mockSerialsForIncidentStream_Client) Recv() (*sapb.IncidentSerial, error) {
|
||||
sfiData := <-c.stream
|
||||
return sfiData.serial, sfiData.err
|
||||
func (c mockClientStream[T]) Recv() (T, error) {
|
||||
result := <-c.stream
|
||||
return result.val, result.err
|
||||
}
|
||||
|
||||
type mockSerialsForIncidentStream_Server struct {
|
||||
type mockServerStream[T any] struct {
|
||||
grpc.ServerStream
|
||||
context context.Context
|
||||
stream chan<- mockSerialsForIncidentStream_Result
|
||||
stream chan<- mockStreamResult[T]
|
||||
}
|
||||
|
||||
func (s mockSerialsForIncidentStream_Server) Send(serial *sapb.IncidentSerial) error {
|
||||
s.stream <- mockSerialsForIncidentStream_Result{serial, nil}
|
||||
func (s mockServerStream[T]) Send(val T) error {
|
||||
s.stream <- mockStreamResult[T]{val: val, err: nil}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s mockSerialsForIncidentStream_Server) Context() context.Context {
|
||||
func (s mockServerStream[T]) Context() context.Context {
|
||||
return s.context
|
||||
}
|
||||
|
||||
func (sa SA) SerialsForIncident(ctx context.Context, req *sapb.SerialsForIncidentRequest, _ ...grpc.CallOption) (sapb.StorageAuthority_SerialsForIncidentClient, error) {
|
||||
streamChan := make(chan mockSerialsForIncidentStream_Result)
|
||||
client := mockSerialsForIncidentStream_Client{stream: streamChan}
|
||||
server := mockSerialsForIncidentStream_Server{context: ctx, stream: streamChan}
|
||||
streamChan := make(chan mockStreamResult[*sapb.IncidentSerial])
|
||||
client := mockClientStream[*sapb.IncidentSerial]{stream: streamChan}
|
||||
server := mockServerStream[*sapb.IncidentSerial]{context: ctx, stream: streamChan}
|
||||
go func() {
|
||||
err := sa.Impl.SerialsForIncident(req, server)
|
||||
if err != nil {
|
||||
streamChan <- mockSerialsForIncidentStream_Result{nil, err}
|
||||
streamChan <- mockStreamResult[*sapb.IncidentSerial]{nil, err}
|
||||
}
|
||||
streamChan <- mockSerialsForIncidentStream_Result{nil, io.EOF}
|
||||
streamChan <- mockStreamResult[*sapb.IncidentSerial]{nil, io.EOF}
|
||||
close(streamChan)
|
||||
}()
|
||||
return client, nil
|
||||
|
|
|
|||
Loading…
Reference in New Issue