Best Python code snippet using avocado_python
task-state-machine.py
Source:task-state-machine.py  
...15        choices = [True] + ([False] * handicap)16    else:17        choices = [False] + ([True] * abs(handicap))18    return random.choice(choices)19def mock_check_task_requirement():20    # More success than failures, please21    return true_or_false(-8)22def mock_check_task_start():23    # More success than failures, please24    return true_or_false(-6)25def mock_monitor_task_finished():26    # More failures than successes, please27    return true_or_false(5)28class Task:29    """Used here as a placeholder for an avocado.core.nrunner.Task."""30    def __init__(self, identification):31        self._identification = identification32class TaskInfo(Task):33    """Task with extra status information on its life-cycle.34    The equivalent of a StatusServer will contain this information35    in the real implementation."""36    def __init__(self, identification):37        super(TaskInfo, self).__init__(identification)38        self._status = None39        self._timeout = None40    @property41    def status(self):42        return self._status43    @status.setter44    def status(self, status):45        self._status = status46    @property47    def timeout(self):48        return self._timeout49    @timeout.setter50    def timeout(self, timeout):51        self._timeout = timeout52    def __repr__(self):53        if self._status is None:54            return '%s' % self._identification55        else:56            return '%s (%s)' % (self._identification,57                                self.status)58class TaskStateMachine:59    """Represents all phases that a task can go through its life."""60    def __init__(self, tasks):61        self._requested = tasks62        self._triaging = []63        self._ready = []64        self._started = []65        self._finished = []66        self._lock = asyncio.Lock()67    @property68    def requested(self):69        return self._requested70    @property71    def triaging(self):72        return self._triaging73    @property74    def ready(self):75        return self._ready76    @property77    def started(self):78        return self._started79    @property80    def finished(self):81        return self._finished82    @property83    def lock(self):84        return self._lock85    @property86    async def complete(self):87        async with self._lock:88            pending = any([self._requested, self._triaging,89                           self._ready, self._started])90        return not pending91    def __str__(self):92        headers = ("|_REQUESTED_|", "|_TRIAGING__|",93                   "|___READY___|", "|__STARTED__|",94                   "|______FINISHED_______|")95        data = itertools.zip_longest(self._requested, self._triaging, self._ready,96                                     self._started, self._finished, fillvalue="")97        matrix = [_ for _ in data]98        return tabular_output(matrix, headers)99async def bootstrap(lc):100    """Reads from requested, moves into triaging."""101    # fake some rate limiting102    if true_or_false(10):103        return104    try:105        async with lc.lock:106            task = lc.requested.pop()107            lc.triaging.append(task)108            debug('Moved Task %s: REQUESTED => TRIAGING' % task)109    except IndexError:110        debug('BOOTSTRAP: nothing to do')111        return112async def triage(lc):113    """Reads from triaging, moves into either: ready or finished."""114    await sleep_random()115    try:116        async with lc.lock:117            task = lc.triaging.pop()118    except IndexError:119        debug('TRIAGE done')120        return121    if mock_check_task_requirement():122        async with lc.lock:123            lc.ready.append(task)124            debug('Moving Task %s: TRIAGING => READY' % task)125    else:126        async with lc.lock:127            lc.finished.append(task)128            task.status = 'FAILED ON TRIAGE'129            debug('Moving Task %s: TRIAGING => FINISHED' % task)130async def start(lc):131    """Reads from ready, moves into either: started or finished."""132    await sleep_random()133    try:134        async with lc.lock:135            task = lc.ready.pop()...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
