Revert "[autotest] Remove create_parameterized_test() RPC, et seq."

This reverts commit 7983b635dd5c4db5106bf5092174d716a3d1dd63.

Change-Id: I966beaf4b9660d234bd197357da2ebf3b970bfd2
Reviewed-on: https://chromium-review.googlesource.com/344350
Reviewed-by: Richard Barnette <[email protected]>
Reviewed-by: Shuqian Zhao <[email protected]>
Commit-Queue: Shuqian Zhao <[email protected]>
Tested-by: Shuqian Zhao <[email protected]>
diff --git a/frontend/afe/rpc_interface_unittest.py b/frontend/afe/rpc_interface_unittest.py
index 32d9668..0cb5cb0 100755
--- a/frontend/afe/rpc_interface_unittest.py
+++ b/frontend/afe/rpc_interface_unittest.py
@@ -7,10 +7,11 @@
 from autotest_lib.frontend import setup_django_environment
 from autotest_lib.frontend.afe import frontend_test_utils
 from autotest_lib.frontend.afe import models, rpc_interface, frontend_test_utils
-from autotest_lib.frontend.afe import model_logic
+from autotest_lib.frontend.afe import model_logic, model_attributes
 from autotest_lib.client.common_lib import global_config
 from autotest_lib.client.common_lib import control_data
 from autotest_lib.client.common_lib import error
+from autotest_lib.client.common_lib import priorities
 from autotest_lib.client.common_lib.test_utils import mock
 from autotest_lib.client.common_lib.test_utils import unittest
 from autotest_lib.server import frontend
@@ -385,6 +386,56 @@
         self.assertEquals(task['requested_by'], 'autotest_system')
 
 
+    def test_parameterized_job(self):
+        global_config.global_config.override_config_value(
+                'AUTOTEST_WEB', 'parameterized_jobs', 'True')
+
+        string_type = model_attributes.ParameterTypes.STRING
+
+        test = models.Test.objects.create(
+                name='test', test_type=control_data.CONTROL_TYPE.SERVER)
+        test_parameter = test.testparameter_set.create(name='key')
+        profiler = models.Profiler.objects.create(name='profiler')
+
+        kernels = ({'version': 'version', 'cmdline': 'cmdline'},)
+        profilers = ('profiler',)
+        profiler_parameters = {'profiler': {'key': ('value', string_type)}}
+        job_parameters = {'key': ('value', string_type)}
+
+        job_id = rpc_interface.create_parameterized_job(
+                name='job', priority=priorities.Priority.DEFAULT, test='test',
+                parameters=job_parameters, kernel=kernels, label='label1',
+                profilers=profilers, profiler_parameters=profiler_parameters,
+                profile_only=False, hosts=('host1',))
+        parameterized_job = models.Job.smart_get(job_id).parameterized_job
+
+        self.assertEqual(parameterized_job.test, test)
+        self.assertEqual(parameterized_job.label, self.labels[0])
+        self.assertEqual(parameterized_job.kernels.count(), 1)
+        self.assertEqual(parameterized_job.profilers.count(), 1)
+
+        kernel = models.Kernel.objects.get(**kernels[0])
+        self.assertEqual(parameterized_job.kernels.all()[0], kernel)
+        self.assertEqual(parameterized_job.profilers.all()[0], profiler)
+
+        parameterized_profiler = models.ParameterizedJobProfiler.objects.get(
+                parameterized_job=parameterized_job, profiler=profiler)
+        profiler_parameters_obj = (
+                models.ParameterizedJobProfilerParameter.objects.get(
+                parameterized_job_profiler=parameterized_profiler))
+        self.assertEqual(profiler_parameters_obj.parameter_name, 'key')
+        self.assertEqual(profiler_parameters_obj.parameter_value, 'value')
+        self.assertEqual(profiler_parameters_obj.parameter_type, string_type)
+
+        self.assertEqual(
+                parameterized_job.parameterizedjobparameter_set.count(), 1)
+        parameters_obj = (
+                parameterized_job.parameterizedjobparameter_set.all()[0])
+        self.assertEqual(parameters_obj.test_parameter, test_parameter)
+        self.assertEqual(parameters_obj.parameter_value, 'value')
+        self.assertEqual(parameters_obj.parameter_type, string_type)
+
+
     def _modify_host_helper(self, on_shard=False, host_on_shard=False):
         shard_hostname = 'shard1'
         if on_shard: