## Description This PR fixes incorrect event handler registration in two plugins that were introduced in the refactoring. The bugs prevented the plugins from functioning as intended. Fixed issues: - Statistics plugin was registering `plugin.Step` for `StopEvent` instead of `plugin.Stop`, preventing statistics from being printed at the end of execution. - Logs plugin was listening to `StopEvent` instead of `StepEvent`, causing it to log only once at the end instead of on each reduction step. ## Benefits Statistics are now correctly printed at the end of execution. Debug logs now correctly show each reduction step instead of just the final state. Plugins now work as originally intended before the refactoring. ## Checklist - [x] Code follows conventional commit format. - [x] Branch follows naming convention (`<type>/<description>`). - [x] Tests pass (if applicable). - [x] Documentation updated (if applicable). Reviewed-on: #29 Co-authored-by: M.V. Hutz <git@maximhutz.me> Co-committed-by: M.V. Hutz <git@maximhutz.me>
45 lines
845 B
Go
45 lines
845 B
Go
package plugins
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
"git.maximhutz.com/max/lambda/internal/engine"
|
|
"git.maximhutz.com/max/lambda/internal/statistics"
|
|
)
|
|
|
|
// An observer, to track reduction performance.
|
|
type Statistics struct {
|
|
start time.Time
|
|
steps uint64
|
|
}
|
|
|
|
// Create a new reduction performance Statistics.
|
|
func NewStatistics(process *engine.Engine) *Statistics {
|
|
plugin := &Statistics{}
|
|
process.On(engine.StartEvent, plugin.Start)
|
|
process.On(engine.StepEvent, plugin.Step)
|
|
process.On(engine.StopEvent, plugin.Stop)
|
|
|
|
return plugin
|
|
}
|
|
|
|
func (t *Statistics) Start() {
|
|
t.start = time.Now()
|
|
t.steps = 0
|
|
}
|
|
|
|
func (t *Statistics) Step() {
|
|
t.steps++
|
|
}
|
|
|
|
func (t *Statistics) Stop() {
|
|
results := statistics.Results{
|
|
StepsTaken: t.steps,
|
|
TimeElapsed: uint64(time.Since(t.start).Milliseconds()),
|
|
}
|
|
|
|
fmt.Fprint(os.Stderr, results.String())
|
|
}
|