github.com/kubeshop/testkube@v1.17.23/pkg/event/bus/mock_bus.go (about) 1 package bus 2 3 import ( 4 "sync" 5 6 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 7 ) 8 9 var _ Bus = (*EventBusMock)(nil) 10 11 type EventBusMock struct { 12 events sync.Map 13 } 14 15 func NewEventBusMock() *EventBusMock { 16 return &EventBusMock{} 17 } 18 19 func (b *EventBusMock) ListQueues() []string { 20 var keys []string 21 b.events.Range(func(key, value any) bool { 22 keys = append(keys, key.(string)) 23 return true 24 }) 25 return keys 26 } 27 28 func (b *EventBusMock) Publish(event testkube.Event) error { 29 b.events.Range(func(key, e interface{}) bool { 30 e.(chan testkube.Event) <- event 31 return true 32 }) 33 return nil 34 } 35 func (b *EventBusMock) Subscribe(queue string, handler Handler) error { 36 37 ch := make(chan testkube.Event) 38 b.events.Store(queue, ch) 39 40 go func() { 41 for e := range ch { 42 handler(e) 43 } 44 }() 45 return nil 46 } 47 48 func (b *EventBusMock) PublishTopic(topic string, event testkube.Event) error { 49 b.events.Range(func(key, e interface{}) bool { 50 e.(chan testkube.Event) <- event 51 return true 52 }) 53 return nil 54 } 55 func (b *EventBusMock) SubscribeTopic(topic, queue string, handler Handler) error { 56 57 ch := make(chan testkube.Event) 58 b.events.Store(queue, ch) 59 60 go func() { 61 for e := range ch { 62 handler(e) 63 } 64 }() 65 return nil 66 } 67 68 func (b *EventBusMock) Unsubscribe(queue string) error { 69 b.events.Delete(queue) 70 return nil 71 } 72 73 func (b *EventBusMock) Close() error { 74 b.events.Range(func(key, e interface{}) bool { 75 b.events.Delete(key) 76 return true 77 }) 78 return nil 79 }