about summary refs log tree commit diff
path: root/submitqueue/result.go
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2019-11-27T18·33+0100
committerFlorian Klink <flokli@flokli.de>2019-11-27T18·33+0100
commitba62db97e95e87b011d9cc68aade162ef7c8d750 (patch)
tree766e1268db75ba258dfead44449d0ba68a4671df /submitqueue/result.go
parent4c555f330efc345e4fb98fec1265e3f2f6b61bd7 (diff)
result: move code into separate result.go
Diffstat (limited to 'submitqueue/result.go')
-rw-r--r--submitqueue/result.go54
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
+}