98 lines
1.6 KiB
Go
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
|
|
}
|
|
}
|