1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package test
- import (
- "context"
- "engine/common"
- )
- type MockSink struct {
- ruleId string
- name string
- results [][]byte
- input chan interface{}
- }
- func NewMockSink(name, ruleId string) *MockSink{
- m := &MockSink{
- ruleId: ruleId,
- name: name,
- input: make(chan interface{}),
- }
- return m
- }
- func (m *MockSink) Open(ctx context.Context, result chan<- error) {
- log := common.GetLogger(ctx)
- log.Trace("Opening mock sink")
- m.results = make([][]byte, 0)
- go func() {
- for {
- select {
- case item := <-m.input:
- if v, ok := item.([]byte); ok {
- log.Infof("mock sink receive %s", item)
- m.results = append(m.results, v)
- }else{
- log.Info("mock sink receive non byte data")
- }
- case <-ctx.Done():
- log.Infof("mock sink %s done", m.name)
- return
- }
- }
- }()
- }
- func (m *MockSink) GetInput() (chan<- interface{}, string) {
- return m.input, m.name
- }
- func (m *MockSink) GetResults() [][]byte {
- return m.results
- }
|