old_console/correlator/rules/action_t.go
2024-11-02 14:12:45 +03:00

98 lines
1.6 KiB
Go

package rules
import (
"errors"
"iwarma.ru/console/correlator/events"
"sync"
)
// TestAction is an Action for testing purpose
type TestAction struct {
PerformError bool
ParseInterfaceError bool
MarshalError bool
UnmarshalError bool
}
var (
performCount int
performMutex sync.Mutex
eventsProcessed int
)
func performCountUpdate() {
performMutex.Lock()
defer performMutex.Unlock()
performCount++
}
func PerformCountClear() {
performMutex.Lock()
defer performMutex.Unlock()
performCount = 0
}
func GetPerformCount() int {
performMutex.Lock()
defer performMutex.Unlock()
return performCount
}
func EventsProcessedClear() {
performMutex.Lock()
defer performMutex.Unlock()
eventsProcessed = 0
}
func GetEventsProcessed() int {
performMutex.Lock()
defer performMutex.Unlock()
return eventsProcessed
}
func (action TestAction) GetType() string {
return "TEST"
}
func (action TestAction) Perform(events *[]*events.Event) error {
performCountUpdate()
performMutex.Lock()
defer performMutex.Unlock()
eventsProcessed += len(*events)
if action.PerformError {
return errors.New("test error")
} else {
return nil
}
}
func (action *TestAction) ParseInterface(v interface{}) error {
if action.ParseInterfaceError {
return errors.New("test error")
} else {
return nil
}
}
func (action TestAction) MarshalJSON() ([]byte, error) {
if action.MarshalError {
return nil, errors.New("test error")
} else {
return []byte(`{"type":"test"}`), nil
}
}
func (action *TestAction) UnmarshalJSON(b []byte) error {
if action.UnmarshalError {
return errors.New("test error")
} else {
return nil
}
}