diff options
author | Florian Klink <flokli@flokli.de> | 2019-11-27T18·33+0100 |
---|---|---|
committer | Florian Klink <flokli@flokli.de> | 2019-11-27T18·33+0100 |
commit | ba62db97e95e87b011d9cc68aade162ef7c8d750 (patch) | |
tree | 766e1268db75ba258dfead44449d0ba68a4671df /submitqueue/result.go | |
parent | 4c555f330efc345e4fb98fec1265e3f2f6b61bd7 (diff) |
result: move code into separate result.go
Diffstat (limited to 'submitqueue/result.go')
-rw-r--r-- | submitqueue/result.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/submitqueue/result.go b/submitqueue/result.go new file mode 100644 index 000000000000..a5ca662016b1 --- /dev/null +++ b/submitqueue/result.go @@ -0,0 +1,54 @@ +package submitqueue + +import ( + "time" + + "github.com/sirupsen/logrus" +) + +// Problem: no inspection during the run +// Problem: record the state + +// Result contains all data necessary to inspect a previous run +// This includes the Series from that run, and all Log Entries collected. +// It also implements the interface required for logrus.Hook. +type Result struct { + LogEntries []*logrus.Entry + Series []Serie + Error error + startTime time.Time +} + +// MakeResult produces a new Result struct, +// and initializes startTime with the current time. +func MakeResult() *Result { + return &Result{ + startTime: time.Now(), + } +} + +// StartTime returns the startTime +func (r Result) StartTime() time.Time { + return r.startTime +} + +// EndTime returns the time of the latest log entry +func (r Result) EndTime() time.Time { + if len(r.LogEntries) == 0 { + return r.startTime + } + return r.LogEntries[len(r.LogEntries)-1].Time +} + +// Fire is called by logrus on each log event, +// we collect all log entries in the struct variable +func (r *Result) Fire(entry *logrus.Entry) error { + r.LogEntries = append(r.LogEntries, entry) + return nil +} + +// Levels is called by logrus to determine whether to Fire the handler. +// As we want to collect all log entries, we return logrus.AllLevels +func (r *Result) Levels() []logrus.Level { + return logrus.AllLevels +} |