# Copyright (C) 2018 The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Status dict updated from HC. DEVICE_STATUS_DICT = { # default state, currently not in use. "unknown": 0, # for devices detected via "fastboot devices" shell command. "fastboot": 1, # for devices detected via "adb devices" shell command. "online": 2, # currently not in use. "ready": 3, # currently not in use. "use": 4, # for devices in error state. "error": 5, # for devices which timed out (not detected either via fastboot or adb). "no-response": 6 } # Scheduling status dict based on the status of each jobs in job queue. DEVICE_SCHEDULING_STATUS_DICT = { # for devices detected but not scheduled. "free": 0, # for devices scheduled but not running. "reserved": 1, # for devices scheduled for currently leased job(s). "use": 2 } # Job status dict JOB_STATUS_DICT = { # scheduled but not leased yet "ready": 0, # scheduled and in running "leased": 1, # completed job "complete": 2, # unexpected error during running "infra-err": 3, # never leased within schedule period "expired": 4, # device boot error after flashing the given img sets "bootup-err": 5 } JOB_PRIORITY_DICT = { "top": 3, "high": 6, "medium": 9, "low": 12, "other": 15 } STORAGE_TYPE_DICT = { "unknown": 0, "PAB": 1, "GCS": 2 } TEST_TYPE_UNKNOWN = "unknown" TEST_TYPE_TOT = "ToT" TEST_TYPE_OTA = "OTA" TEST_TYPE_SIGNED = "signed" TEST_TYPE_PRESUBMIT = "presubmit" TEST_TYPE_MANUAL = "manual" # a dict, where keys indicate test type and values have bitwise values. # bit 0-1 : version related test type # 00 - Unknown # 01 - ToT # 10 - OTA # bit 2 : device signed build # bit 3-4 : reserved for gerrit related test type # 01 - pre-submit # bit 5 : manually created test job TEST_TYPE_DICT = { TEST_TYPE_UNKNOWN: 0, TEST_TYPE_TOT: 1, TEST_TYPE_OTA: 1 << 1, TEST_TYPE_SIGNED: 1 << 2, TEST_TYPE_PRESUBMIT: 1 << 3, TEST_TYPE_MANUAL: 1 << 5 } # # of errors in a row to suspend a schedule NUM_ERRORS_FOR_SUSPENSION = 3 # filter methods FILTER_EqualTo = "EqualTo" FILTER_LessThan = "LessThan" FILTER_GreaterThan = "GreaterThan" FILTER_LessThanOrEqualTo = "LessThanOrEqualTo" FILTER_GreaterThanOrEqualTo = "GreaterThanOrEqualTo" FILTER_NotEqualTo = "NotEqualTo" FILTER_Has = "Has" FILTER_METHOD = { FILTER_EqualTo: 1, FILTER_LessThan: 2, FILTER_GreaterThan: 3, FILTER_LessThanOrEqualTo: 4, FILTER_GreaterThanOrEqualTo: 5, FILTER_NotEqualTo: 6, FILTER_Has: 7, } def GetPriorityValue(priority): """Helper function to sort jobs based on priority. Args: priority: string, the job priority. Returns: int, priority order (the lower, the higher) """ if priority: priority = priority.lower() if priority in JOB_PRIORITY_DICT: return JOB_PRIORITY_DICT[priority] return JOB_PRIORITY_DICT["other"]