github.com/kubeshop/testkube@v1.17.23/pkg/logs/client/interface.go (about)

     1  package client
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/kubeshop/testkube/pkg/logs/events"
     7  )
     8  
     9  const (
    10  	StreamPrefix = "log"
    11  
    12  	StartSubject = "events.logs.start"
    13  	StopSubject  = "events.logs.stop"
    14  )
    15  
    16  //go:generate mockgen -destination=./mock_stream.go -package=client "github.com/kubeshop/testkube/pkg/logs/client" Stream
    17  type Stream interface {
    18  	StreamInitializer
    19  	StreamPusher
    20  	StreamTrigger
    21  	StreamGetter
    22  	StreamFinisher
    23  	StreamNamer
    24  }
    25  
    26  //go:generate mockgen -destination=./mock_initializedstreampusher.go -package=client "github.com/kubeshop/testkube/pkg/logs/client" InitializedStreamPusher
    27  type InitializedStreamPusher interface {
    28  	StreamInitializer
    29  	StreamPusher
    30  }
    31  
    32  //go:generate mockgen -destination=./mock_initializedstreamgetter.go -package=client "github.com/kubeshop/testkube/pkg/logs/client" InitializedStreamGetter
    33  type InitializedStreamGetter interface {
    34  	StreamInitializer
    35  	StreamGetter
    36  }
    37  
    38  type StreamMetadata struct {
    39  	Name string
    40  }
    41  
    42  type StreamInitializer interface {
    43  	// Init creates or updates stream on demand
    44  	Init(ctx context.Context, id string) (meta StreamMetadata, err error)
    45  }
    46  
    47  type StreamPusher interface {
    48  	// Push sends logs to log stream
    49  	Push(ctx context.Context, id string, log *events.Log) error
    50  	// PushBytes sends RAW bytes to log stream, developer is responsible for marshaling valid data
    51  	PushBytes(ctx context.Context, id string, bytes []byte) error
    52  }
    53  
    54  type StreamFinisher interface {
    55  	// Finish sends termination log message
    56  	Finish(ctx context.Context, id string) error
    57  }
    58  
    59  //go:generate mockgen -destination=./mock_namer.go -package=client "github.com/kubeshop/testkube/pkg/logs/client" StreamNamer
    60  type StreamNamer interface {
    61  	// Name returns stream name based on possible name groups
    62  	Name(parts ...string) string
    63  }
    64  
    65  // StreamGetter interface for getting logs stream channel
    66  //
    67  //go:generate mockgen -destination=./mock_streamgetter.go -package=client "github.com/kubeshop/testkube/pkg/logs/client" StreamGetter
    68  type StreamGetter interface {
    69  	// Init creates or updates stream on demand
    70  	Get(ctx context.Context, id string) (chan events.LogResponse, error)
    71  }
    72  
    73  type StreamConfigurer interface {
    74  	// Init creates or updates stream on demand
    75  	WithAddress(address string) Stream
    76  }
    77  
    78  type LogResponse struct {
    79  	Log   events.Log
    80  	Error error
    81  }
    82  
    83  type StreamResponse struct {
    84  	Message []byte
    85  	Error   bool
    86  }
    87  
    88  type StreamTrigger interface {
    89  	// Trigger start event
    90  	Start(ctx context.Context, id string) (StreamResponse, error)
    91  	// Trigger stop event
    92  	Stop(ctx context.Context, id string) (StreamResponse, error)
    93  }