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 }