Add some debugging to buildbot_globals, sort the trybot list

R=epoger@google.com, rmistry@google.com

Review URL: https://codereview.chromium.org/99223002

git-svn-id: http://skia.googlecode.com/svn/trunk@12437 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/buildbot_globals.py b/tools/buildbot_globals.py
index 1dcb1cc..c3d2227 100755
--- a/tools/buildbot_globals.py
+++ b/tools/buildbot_globals.py
@@ -13,17 +13,45 @@
 
 _global_vars = None
 
-class NoSuchGlobalVariable(KeyError):
+
+GLOBAL_VARS_JSON_URL = (
+    'http://skia.googlecode.com/svn/buildbot/site_config/global_variables.json')
+
+
+class GlobalVarsRetrievalError(Exception):
+  """Exception which is raised when the global_variables.json file cannot be
+  retrieved from the Skia buildbot repository."""
   pass
 
+
+class JsonDecodeError(Exception):
+  """Exception which is raised when the global_variables.json file cannot be
+  interpreted as JSON. This may be due to the file itself being incorrectly
+  formatted or due to an incomplete or corrupted downloaded version of the file.
+  """
+  pass
+
+
+class NoSuchGlobalVariable(KeyError):
+  """Exception which is raised when a given variable is not found in the
+  global_variables.json file."""
+  pass
+
+
 def Get(var_name):
   '''Return the value associated with this name in global_variables.json.
   Raises NoSuchGlobalVariable if there is no variable with that name.'''
   global _global_vars
   if not _global_vars:
-    _global_vars = json.loads(svn.Cat('http://skia.googlecode.com/svn/'
-                                      'buildbot/site_config/'
-                                      'global_variables.json'))
+    try:
+      global_vars_text = svn.Cat(GLOBAL_VARS_JSON_URL)
+    except Exception:
+      raise GlobalVarsRetrievalError('Failed to retrieve %s.' %
+                                     GLOBAL_VARS_JSON_URL)
+    try:
+      _global_vars = json.loads(global_vars_text)
+    except ValueError as e:
+      raise JsonDecodeError(e.message + '\n' + global_vars_text)
   try:
     return _global_vars[var_name]['value']
   except KeyError:
diff --git a/tools/submit_try b/tools/submit_try
index da9292a..840a064 100755
--- a/tools/submit_try
+++ b/tools/submit_try
@@ -172,7 +172,7 @@
     if arg == '-h' or arg == '--help':
       Error()
     elif arg == '-l' or arg == '--list_bots':
-      format_args = ['\n  '.join(trybots)] + ALL_ALIASES
+      format_args = ['\n  '.join(sorted(trybots))] + ALL_ALIASES
       print (
 """
 submit_try: Available builders:\n  %s