Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2466)

Unified Diff: appengine/cmd/dm/enums/execution/state.go

Issue 1537883002: Initial distributor implementation (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: work in progress Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/cmd/dm/enums/execution/state.go
diff --git a/appengine/cmd/dm/enums/execution/state.go b/appengine/cmd/dm/enums/execution/state.go
index e4b00e66313a22185c7f37b6879128e3e440e3a7..be1564f677ff97ddcc4e9599e1272f33aca31d59 100644
--- a/appengine/cmd/dm/enums/execution/state.go
+++ b/appengine/cmd/dm/enums/execution/state.go
@@ -15,26 +15,76 @@ type State int8
// State values
const (
- UnknownState State = iota
+ Unknown State = iota
+ // The execution has been accepted by the distributor, but is not running yet
Scheduled
- Running
+ // The execution is running
+ Started
+
+ // The execution was unable to be accepted by the distributor
Rejected
+
+ // The execution was accepted by the distributor, but couldn't run in time.
+ TimedOut
+
+ // The execution ran and completed
Finished
- Crashed
+
+ // The execution ran, but the distributor claims it did not complete
+ Failed
+
+ // The distributor claims to not know anything about this execution
+ Missing
+
+ // Some entity (DM, Human, Distributor) requested that this execution not run.
+ Cancelled
)
// validStateEvolution defines all valid {From -> []To} state transitions. The
// identity transition (X -> X) is implied, as long as X has an entry in this
// mapping.
var validStateEvolution = map[State][]State{
- Scheduled: {Running, Rejected, Crashed, Finished},
- Running: {Crashed, Finished, Rejected},
+ Scheduled: {Started, Finished, Missing, Cancelled, TimedOut},
+ Started: {Finished, Failed, Missing, Cancelled},
+
+ Cancelled: {},
+ Finished: {},
+ Failed: {},
+ Missing: {},
+ Rejected: {},
+ TimedOut: {},
+}
+
+// FromString returns the State for it's equivalent string representation.
+//
+// All unknown state vals are converted to Unknown.
+func FromString(val string) State {
+ switch val {
+ case "Scheduled":
+ return Scheduled
+ case "Started":
+ return Started
+ case "Rejected":
+ return Rejected
+ case "TimedOut":
+ return TimedOut
+ case "Finished":
+ return Finished
+ case "Failed":
+ return Failed
+ case "Missing":
+ return Missing
+ case "Cancelled":
+ return Cancelled
+ }
+ return Unknown
+}
- Crashed: {},
- Finished: {},
- Rejected: {},
+// IsTerminal returns True if State has no more valid evolutions.
+func (s State) IsTerminal() bool {
+ return len(validStateEvolution[s]) == 0
}
// Evolve attempts to evolve the state of this Attempt. If the state

Powered by Google App Engine
This is Rietveld 408576698