# Copyright 2017 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # TODO(borenet): This module was copied from build.git and heavily modified to # remove dependencies on other modules in build.git. It belongs in a different # repo. Remove this once it has been moved. class State(object): """Copied from appengine/swarming/server/task_result.py. KEEP IN SYNC. Used to parse the 'state' value in task result. """ RUNNING = 0x10 # 16 PENDING = 0x20 # 32 EXPIRED = 0x30 # 48 TIMED_OUT = 0x40 # 64 BOT_DIED = 0x50 # 80 CANCELED = 0x60 # 96 COMPLETED = 0x70 # 112 STATES = ( RUNNING, PENDING, EXPIRED, TIMED_OUT, BOT_DIED, CANCELED, COMPLETED) STATES_RUNNING = (RUNNING, PENDING) STATES_NOT_RUNNING = (EXPIRED, TIMED_OUT, BOT_DIED, CANCELED, COMPLETED) STATES_DONE = (TIMED_OUT, COMPLETED) STATES_ABANDONED = (EXPIRED, BOT_DIED, CANCELED) _NAMES = { RUNNING: 'Running', PENDING: 'Pending', EXPIRED: 'Expired', TIMED_OUT: 'Execution timed out', BOT_DIED: 'Bot died', CANCELED: 'User canceled', COMPLETED: 'Completed', } @classmethod def to_string(cls, state): """Returns a user-readable string representing a State.""" return cls._NAMES[state]