chromeos_config: Explicit specify priorities

As we want to manage cts pool with priorities, we
add the ability to specify priority with numbers directly
without defined priority mapping.

BUG=b:62821305
TEST=unittest

Change-Id: Iaf2619631c79383a45ebbb1ed76a79b9e6320ba3
Reviewed-on: https://chromium-review.googlesource.com/585234
Commit-Ready: Ilja H. Friedel <ihf@chromium.org>
Tested-by: Ilja H. Friedel <ihf@chromium.org>
Reviewed-by: Ilja H. Friedel <ihf@chromium.org>
(cherry picked from commit a68c1d410069bb1f0c4b9b43866f5416e2e5b1b9)
Reviewed-on: https://chromium-review.googlesource.com/595249
Commit-Queue: Po-Hsien Wang <pwang@chromium.org>
Tested-by: Po-Hsien Wang <pwang@chromium.org>
Reviewed-by: Po-Hsien Wang <pwang@chromium.org>
diff --git a/cbuildbot/chromeos_config_unittest.py b/cbuildbot/chromeos_config_unittest.py
index 1dd09fe..d039239 100644
--- a/cbuildbot/chromeos_config_unittest.py
+++ b/cbuildbot/chromeos_config_unittest.py
@@ -807,9 +807,12 @@
     """Verify that hw test priority is valid."""
     for build_name, config in self.site_config.iteritems():
       for test_config in config['hw_tests']:
-        self.assertTrue(
-            test_config.priority in constants.HWTEST_VALID_PRIORITIES,
-            '%s has an invalid hwtest priority.' % build_name)
+        if isinstance(test_config.priority, (int, long)):
+          self.assertTrue(0 <= test_config.priority <= 100)
+        else:
+          self.assertTrue(
+              test_config.priority in constants.HWTEST_VALID_PRIORITIES,
+              '%s has an invalid hwtest priority.' % build_name)
 
   def testAllBoardsExist(self):
     """Verifies that all config boards are in _all_boards."""
diff --git a/cbuildbot/commands.py b/cbuildbot/commands.py
index a0d9818..0246aaf 100644
--- a/cbuildbot/commands.py
+++ b/cbuildbot/commands.py
@@ -1087,7 +1087,7 @@
     args += ['--file_bugs', str(file_bugs)]
 
   if priority is not None:
-    args += ['--priority', priority]
+    args += ['--priority', str(priority)]
 
   if timeout_mins is not None:
     args += ['--timeout_mins', str(timeout_mins)]
diff --git a/lib/config_lib.py b/lib/config_lib.py
index a817036..0b4d8b2 100644
--- a/lib/config_lib.py
+++ b/lib/config_lib.py
@@ -485,9 +485,11 @@
     self.minimum_duts = 0
 
     # Only reduce priority if it's lower.
-    new_priority = constants.HWTEST_DEFAULT_PRIORITY
-    if (constants.HWTEST_PRIORITIES_MAP[self.priority] >
-        constants.HWTEST_PRIORITIES_MAP[new_priority]):
+    new_priority = constants.HWTEST_PRIORITIES_MAP[
+        constants.HWTEST_DEFAULT_PRIORITY]
+    if isinstance(self.priority, (int, long)):
+      self.priority = min(self.priority, new_priority)
+    elif constants.HWTEST_PRIORITIES_MAP[self.priority] > new_priority:
       self.priority = new_priority
 
   @property