Update controller_util to handle goma_config.chromeos_goma_dir.

This include regenerating test_pb2.py and common_pb2.py by
running api/compile_build_api_proto and updating unit tests to
validate calls to goma with and without chromeos_goma_dir.

BUG=chromium:999670
TEST=manual, run_tests

Change-Id: I805e800551ef6199674b94bccf10786ef6db2586
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1838305
Tested-by: Michael Mortensen <mmortensen@google.com>
Auto-Submit: Michael Mortensen <mmortensen@google.com>
Reviewed-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/controller_util_unittest.py b/api/controller/controller_util_unittest.py
index 90bea4f..ea96fc3 100644
--- a/api/controller/controller_util_unittest.py
+++ b/api/controller/controller_util_unittest.py
@@ -10,13 +10,14 @@
 from chromite.api.controller import controller_util
 from chromite.api.gen.chromite.api import build_api_test_pb2
 from chromite.api.gen.chromiumos import common_pb2
+from chromite.cbuildbot import goma_util
 from chromite.lib import cros_test_lib
 from chromite.lib import portage_util
 from chromite.lib.build_target_util import BuildTarget
 from chromite.lib.chroot_lib import Chroot
 
 
-class ParseChrootTest(cros_test_lib.TestCase):
+class ParseChrootTest(cros_test_lib.MockTestCase):
   """ParseChroot tests."""
 
   def testSuccess(self):
@@ -41,6 +42,45 @@
 
     self.assertEqual(expected, result)
 
+
+  def testChrootCallToGoma(self):
+    """Test calls to goma."""
+    path = '/chroot/path'
+    cache_dir = '/cache/dir'
+    chrome_root = '/chrome/root'
+    use_flags = [{'flag': 'useflag1'}, {'flag': 'useflag2'}]
+    features = [{'feature': 'feature1'}, {'feature': 'feature2'}]
+    goma_test_dir = '/goma/test/dir'
+    goma_test_json_string = 'goma_json'
+    chromeos_goma_test_dir = '/chromeos/goma/test/dir'
+
+    patch = self.PatchObject(goma_util, 'Goma')
+
+    goma_config = common_pb2.GomaConfig(goma_dir=goma_test_dir,
+                                        goma_client_json=goma_test_json_string)
+    chroot_message = common_pb2.Chroot(path=path, cache_dir=cache_dir,
+                                       chrome_dir=chrome_root,
+                                       env={'use_flags': use_flags,
+                                            'features': features},
+                                       goma=goma_config)
+
+    controller_util.ParseChroot(chroot_message)
+    patch.assert_called_with(goma_test_dir, goma_test_json_string,
+                             stage_name='BuildAPI', chromeos_goma_dir=None)
+
+    goma_config.chromeos_goma_dir = chromeos_goma_test_dir
+    chroot_message = common_pb2.Chroot(path=path, cache_dir=cache_dir,
+                                       chrome_dir=chrome_root,
+                                       env={'use_flags': use_flags,
+                                            'features': features},
+                                       goma=goma_config)
+
+    controller_util.ParseChroot(chroot_message)
+    patch.assert_called_with(goma_test_dir, goma_test_json_string,
+                             stage_name='BuildAPI',
+                             chromeos_goma_dir=chromeos_goma_test_dir)
+
+
   def testWrongMessage(self):
     """Test invalid message type given."""
     with self.assertRaises(AssertionError):