[autotest] Make rpc_interface_unittest to use django test

The rpc_interface_unittest avoided importing rpc_utils as they need
Django to be set up, otherwise the import would fail. To do that
it contained a lot of code for mocks.

This simplifies this by using the Django unittests.

TEST=Ran suites.
DEPLOY=afe,apache

Change-Id: I63d4b9f2f098b7e10ff5520dcae217da7147cc62
Reviewed-on: https://chromium-review.googlesource.com/212508
Reviewed-by: Alex Miller <milleral@chromium.org>
Tested-by: Jakob Jülich <jakobjuelich@chromium.org>
Commit-Queue: Jakob Jülich <jakobjuelich@chromium.org>
diff --git a/frontend/afe/site_rpc_interface.py b/frontend/afe/site_rpc_interface.py
index cb6a4f7..fa6cb15 100644
--- a/frontend/afe/site_rpc_interface.py
+++ b/frontend/afe/site_rpc_interface.py
@@ -17,6 +17,7 @@
 from autotest_lib.client.common_lib import global_config
 from autotest_lib.client.common_lib import priorities
 from autotest_lib.client.common_lib.cros import dev_server
+from autotest_lib.frontend.afe import rpc_utils
 from autotest_lib.server import utils
 from autotest_lib.server.cros.dynamic_suite import constants
 from autotest_lib.server.cros.dynamic_suite import control_file_getter
@@ -32,19 +33,6 @@
 # Relevant CrosDynamicSuiteExceptions are defined in client/common_lib/error.py.
 
 
-def _rpc_utils():
-    """Returns the rpc_utils module.  MUST be mocked for unit tests.
-
-    rpc_utils initializes django, which we can't do in unit tests.
-    This layer of indirection allows us to only load that module if we're
-    not running unit tests.
-
-    @return: autotest_lib.frontend.afe.rpc_utils
-    """
-    from autotest_lib.frontend.afe import rpc_utils
-    return rpc_utils
-
-
 def canonicalize_suite_name(suite_name):
     return 'test_suites/control.%s' % suite_name
 
@@ -192,7 +180,7 @@
 
     control_file = tools.inject_vars(inject_dict, control_file)
 
-    return _rpc_utils().create_job_common(name,
+    return rpc_utils.create_job_common(name,
                                           priority=priority,
                                           timeout_mins=timeout_mins,
                                           max_runtime_mins=timeout*60,
@@ -224,7 +212,7 @@
     config_values = {}
     for section in sections:
         config_values[section] = _CONFIG.config.items(section)
-    return _rpc_utils().prepare_for_serialization(config_values)
+    return rpc_utils.prepare_for_serialization(config_values)
 
 
 @moblab_only
diff --git a/frontend/afe/site_rpc_interface_unittest.py b/frontend/afe/site_rpc_interface_unittest.py
index 73f56ef..999bad7 100644
--- a/frontend/afe/site_rpc_interface_unittest.py
+++ b/frontend/afe/site_rpc_interface_unittest.py
@@ -15,6 +15,8 @@
 
 import common
 
+from autotest_lib.frontend import setup_django_environment
+from autotest_lib.frontend.afe import rpc_utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.common_lib import global_config
 from autotest_lib.client.common_lib import priorities
@@ -40,17 +42,6 @@
     _TIMEOUT = 24
 
 
-    class rpc_utils(object):
-        """Mockable class to fake autotest rpc_utils module."""
-        def create_job_common(self, name, **kwargs):
-            """Mock method rpc_utils.create_job_common().
-
-            @param name: Name of job.
-            @param kwargs: Other arguments.
-            """
-            pass
-
-
     def setUp(self):
         super(SiteRpcInterfaceTest, self).setUp()
         self._SUITE_NAME = site_rpc_interface.canonicalize_suite_name(
@@ -86,8 +77,8 @@
         """
         download_started_time = constants.DOWNLOAD_STARTED_TIME
         payload_finished_time = constants.PAYLOAD_FINISHED_TIME
-        r = self.mox.CreateMock(SiteRpcInterfaceTest.rpc_utils)
-        r.create_job_common(mox.And(mox.StrContains(self._NAME),
+        self.mox.StubOutWithMock(rpc_utils, 'create_job_common')
+        rpc_utils.create_job_common(mox.And(mox.StrContains(self._NAME),
                                     mox.StrContains(self._BUILD)),
                             priority=self._PRIORITY,
                             timeout_mins=self._TIMEOUT*60,
@@ -101,8 +92,6 @@
                             keyvals=mox.And(mox.In(download_started_time),
                                             mox.In(payload_finished_time))
                             ).AndReturn(to_return)
-        self.mox.StubOutWithMock(site_rpc_interface, '_rpc_utils')
-        site_rpc_interface._rpc_utils().AndReturn(r)
 
 
     def testStageBuildFail(self):
@@ -301,14 +290,11 @@
         config_mock.config.items('section2').AndReturn([('item3', 'value3'),
                                                         ('item4', 'value4')])
 
-        r = self.mox.CreateMock(SiteRpcInterfaceTest.rpc_utils)
-        r = mox.MockAnything()
-        r.prepare_for_serialization({'section1' : [('item1', 'value1'),
-                                                   ('item2', 'value2')],
-                                     'section2' : [('item3', 'value3'),
-                                                   ('item4', 'value4')]})
-        self.mox.StubOutWithMock(site_rpc_interface, '_rpc_utils')
-        site_rpc_interface._rpc_utils().AndReturn(r)
+        rpc_utils.prepare_for_serialization(
+            {'section1' : [('item1', 'value1'),
+                           ('item2', 'value2')],
+             'section2' : [('item3', 'value3'),
+                           ('item4', 'value4')]})
         self.mox.ReplayAll()
         site_rpc_interface.get_config_values()