[autotest] Delete support for parameterized jobs.
This deletes the `create_parameterized_job()` RPC endpoint and the
associated (unused!) "parameterized_jobs" config setting. It also
garbage collects code made unreferenced by these deletions.
BUG=chromium:679903
TEST=unit tests, and run push_to_prod suite in a local instance
Change-Id: I8ed683d0c8ffa879d0e10319b0a736133d56327e
Reviewed-on: https://chromium-review.googlesource.com/436407
Commit-Ready: Richard Barnette <jrbarnette@chromium.org>
Tested-by: Richard Barnette <jrbarnette@chromium.org>
Reviewed-by: Richard Barnette <jrbarnette@google.com>
diff --git a/frontend/afe/frontend_test_utils.py b/frontend/afe/frontend_test_utils.py
index 4d7cbc8..7e7e302 100644
--- a/frontend/afe/frontend_test_utils.py
+++ b/frontend/afe/frontend_test_utils.py
@@ -1,4 +1,5 @@
-import atexit, datetime, os, tempfile, unittest
+import datetime
+
import common
from autotest_lib.frontend import setup_test_environment
from autotest_lib.frontend import thread_local
@@ -7,6 +8,7 @@
from autotest_lib.client.common_lib.test_utils import mock
class FrontendTestMixin(object):
+ # pylint: disable=missing-docstring
def _fill_in_test_data(self):
"""Populate the test database with some hosts and labels."""
if models.DroneSet.drone_sets_enabled():
@@ -68,8 +70,6 @@
if setup_tables:
setup_test_environment.set_up()
global_config.global_config.override_config_value(
- 'AUTOTEST_WEB', 'parameterized_jobs', 'False')
- global_config.global_config.override_config_value(
'SERVER', 'rpc_logging', 'False')
if fill_data and setup_tables:
self._fill_in_test_data()
@@ -84,8 +84,7 @@
def _create_job(self, hosts=[], metahosts=[], priority=0, active=False,
synchronous=False, atomic_group=None, hostless=False,
drone_set=None, control_file='control',
- parameterized_job=None, owner='autotest_system',
- parent_job_id=None):
+ owner='autotest_system', parent_job_id=None):
"""
Create a job row in the test database.
@@ -131,8 +130,7 @@
synch_count=synch_count, created_on=created_on,
reboot_before=model_attributes.RebootBefore.NEVER,
drone_set=drone_set, control_file=control_file,
- parameterized_job=parameterized_job, parent_job=parent_job,
- require_ssp=None)
+ parent_job=parent_job, require_ssp=None)
# Update the job's dependencies to include the metahost.
for metahost_label in metahosts:
diff --git a/frontend/afe/model_attributes.py b/frontend/afe/model_attributes.py
index 028c978..e87d10e 100644
--- a/frontend/afe/model_attributes.py
+++ b/frontend/afe/model_attributes.py
@@ -5,7 +5,3 @@
# common enums for Job attributes
RebootBefore = enum.Enum('Never', 'If dirty', 'Always')
RebootAfter = enum.Enum('Never', 'If all tests passed', 'Always')
-
-
-# common enums for profiler and job parameter types
-ParameterTypes = enum.Enum('int', 'float', 'string', string_values=True)
diff --git a/frontend/afe/models.py b/frontend/afe/models.py
index 9919977..e877e8a 100644
--- a/frontend/afe/models.py
+++ b/frontend/afe/models.py
@@ -1061,145 +1061,14 @@
return unicode(self.name)
-class Kernel(dbmodels.Model):
- """
- A kernel configuration for a parameterized job
- """
- version = dbmodels.CharField(max_length=255)
- cmdline = dbmodels.CharField(max_length=255, blank=True)
-
- @classmethod
- def create_kernels(cls, kernel_list):
- """Creates all kernels in the kernel list.
-
- @param cls: Implicit class object.
- @param kernel_list: A list of dictionaries that describe the kernels,
- in the same format as the 'kernel' argument to
- rpc_interface.generate_control_file.
- @return A list of the created kernels.
- """
- if not kernel_list:
- return None
- return [cls._create(kernel) for kernel in kernel_list]
-
-
- @classmethod
- def _create(cls, kernel_dict):
- version = kernel_dict.pop('version')
- cmdline = kernel_dict.pop('cmdline', '')
-
- if kernel_dict:
- raise Exception('Extraneous kernel arguments remain: %r'
- % kernel_dict)
-
- kernel, _ = cls.objects.get_or_create(version=version,
- cmdline=cmdline)
- return kernel
-
-
- class Meta:
- """Metadata for class Kernel."""
- db_table = 'afe_kernels'
- unique_together = ('version', 'cmdline')
-
- def __unicode__(self):
- return u'%s %s' % (self.version, self.cmdline)
-
-
class ParameterizedJob(dbmodels.Model):
"""
Auxiliary configuration for a parameterized job.
+
+ This stub exists merely for unit tests. See Job.parameterized_job
+ for more details.
"""
- test = dbmodels.ForeignKey(Test)
- label = dbmodels.ForeignKey(Label, null=True)
- use_container = dbmodels.BooleanField(default=False)
- profile_only = dbmodels.BooleanField(default=False)
- upload_kernel_config = dbmodels.BooleanField(default=False)
-
- kernels = dbmodels.ManyToManyField(
- Kernel, db_table='afe_parameterized_job_kernels')
- profilers = dbmodels.ManyToManyField(
- Profiler, through='ParameterizedJobProfiler')
-
-
- @classmethod
- def smart_get(cls, id_or_name, *args, **kwargs):
- """For compatibility with Job.add_object.
-
- @param cls: Implicit class object.
- @param id_or_name: The ID or name to get.
- @param args: Non-keyword arguments.
- @param kwargs: Keyword arguments.
- """
- return cls.objects.get(pk=id_or_name)
-
-
- def job(self):
- """Returns the job if it exists, or else None."""
- jobs = self.job_set.all()
- assert jobs.count() <= 1
- return jobs and jobs[0] or None
-
-
- class Meta:
- """Metadata for class ParameterizedJob."""
- db_table = 'afe_parameterized_jobs'
-
- def __unicode__(self):
- return u'%s (parameterized) - %s' % (self.test.name, self.job())
-
-
-class ParameterizedJobProfiler(dbmodels.Model):
- """
- A profiler to run on a parameterized job
- """
- parameterized_job = dbmodels.ForeignKey(ParameterizedJob)
- profiler = dbmodels.ForeignKey(Profiler)
-
- class Meta:
- """Metedata for class ParameterizedJobProfiler."""
- db_table = 'afe_parameterized_jobs_profilers'
- unique_together = ('parameterized_job', 'profiler')
-
-
-class ParameterizedJobProfilerParameter(dbmodels.Model):
- """
- A parameter for a profiler in a parameterized job
- """
- parameterized_job_profiler = dbmodels.ForeignKey(ParameterizedJobProfiler)
- parameter_name = dbmodels.CharField(max_length=255)
- parameter_value = dbmodels.TextField()
- parameter_type = dbmodels.CharField(
- max_length=8, choices=model_attributes.ParameterTypes.choices())
-
- class Meta:
- """Metadata for class ParameterizedJobProfilerParameter."""
- db_table = 'afe_parameterized_job_profiler_parameters'
- unique_together = ('parameterized_job_profiler', 'parameter_name')
-
- def __unicode__(self):
- return u'%s - %s' % (self.parameterized_job_profiler.profiler.name,
- self.parameter_name)
-
-
-class ParameterizedJobParameter(dbmodels.Model):
- """
- Parameters for a parameterized job
- """
- parameterized_job = dbmodels.ForeignKey(ParameterizedJob)
- test_parameter = dbmodels.ForeignKey(TestParameter)
- parameter_value = dbmodels.TextField()
- parameter_type = dbmodels.CharField(
- max_length=8, choices=model_attributes.ParameterTypes.choices())
-
- class Meta:
- """Metadata for class ParameterizedJobParameter."""
- db_table = 'afe_parameterized_job_parameters'
- unique_together = ('parameterized_job', 'test_parameter')
-
- def __unicode__(self):
- return u'%s - %s' % (self.parameterized_job.job().name,
- self.test_parameter.name)
+ pass
class JobManager(model_logic.ExtendedManager):
@@ -1404,6 +1273,13 @@
max_runtime_mins = dbmodels.IntegerField(default=DEFAULT_MAX_RUNTIME_MINS)
drone_set = dbmodels.ForeignKey(DroneSet, null=True, blank=True)
+ # TODO(jrbarnette) We have to keep `parameterized_job` around or it
+ # breaks the scheduler_models unit tests (and fixing the unit tests
+ # will break the scheduler, so don't do that).
+ #
+ # The ultimate fix is to delete the column from the database table
+ # at which point, you _must_ delete this. Until you're ready to do
+ # that, DON'T MUCK WITH IT.
parameterized_job = dbmodels.ForeignKey(ParameterizedJob, null=True,
blank=True)
@@ -1442,41 +1318,6 @@
@classmethod
- def parameterized_jobs_enabled(cls):
- """Returns whether parameterized jobs are enabled.
-
- @param cls: Implicit class object.
- """
- return global_config.global_config.get_config_value(
- 'AUTOTEST_WEB', 'parameterized_jobs', type=bool)
-
-
- @classmethod
- def check_parameterized_job(cls, control_file, parameterized_job):
- """Checks that the job is valid given the global config settings.
-
- First, either control_file must be set, or parameterized_job must be
- set, but not both. Second, parameterized_job must be set if and only if
- the parameterized_jobs option in the global config is set to True.
-
- @param cls: Implict class object.
- @param control_file: A control file.
- @param parameterized_job: A parameterized job.
- """
- if not (bool(control_file) ^ bool(parameterized_job)):
- raise Exception('Job must have either control file or '
- 'parameterization, but not both')
-
- parameterized_jobs_enabled = cls.parameterized_jobs_enabled()
- if control_file and parameterized_jobs_enabled:
- raise Exception('Control file specified, but parameterized jobs '
- 'are enabled')
- if parameterized_job and not parameterized_jobs_enabled:
- raise Exception('Parameterized job specified, but parameterized '
- 'jobs are not enabled')
-
-
- @classmethod
def create(cls, owner, options, hosts):
"""Creates a job.
@@ -1491,16 +1332,7 @@
AclGroup.check_for_acl_violation_hosts(hosts)
control_file = options.get('control_file')
- parameterized_job = options.get('parameterized_job')
- # The current implementation of parameterized jobs requires that only
- # control files or parameterized jobs are used. Using the image
- # parameter on autoupdate_ParameterizedJob doesn't mix pure
- # parameterized jobs and control files jobs, it does muck enough with
- # normal jobs by adding a parameterized id to them that this check will
- # fail. So for now we just skip this check.
- # cls.check_parameterized_job(control_file=control_file,
- # parameterized_job=parameterized_job)
user = User.current_user()
if options.get('reboot_before') is None:
options['reboot_before'] = user.get_reboot_before_display()
@@ -1530,7 +1362,6 @@
parse_failed_repair=options.get('parse_failed_repair'),
created_on=datetime.now(),
drone_set=drone_set,
- parameterized_job=parameterized_job,
parent_job=options.get('parent_job_id'),
test_retry=options.get('test_retry'),
run_reset=options.get('run_reset'),
@@ -1603,18 +1434,6 @@
return []
- def save(self, *args, **kwargs):
- # The current implementation of parameterized jobs requires that only
- # control files or parameterized jobs are used. Using the image
- # parameter on autoupdate_ParameterizedJob doesn't mix pure
- # parameterized jobs and control files jobs, it does muck enough with
- # normal jobs by adding a parameterized id to them that this check will
- # fail. So for now we just skip this check.
- # cls.check_parameterized_job(control_file=self.control_file,
- # parameterized_job=self.parameterized_job)
- super(Job, self).save(*args, **kwargs)
-
-
def queue(self, hosts, atomic_group=None, is_template=False):
"""Enqueue a job on the given hosts.
diff --git a/frontend/afe/models_test.py b/frontend/afe/models_test.py
index a4eabfd..62f2423 100755
--- a/frontend/afe/models_test.py
+++ b/frontend/afe/models_test.py
@@ -1,13 +1,12 @@
#!/usr/bin/python
+# pylint: disable=missing-docstring
-import datetime
import unittest
+
import common
from autotest_lib.frontend import setup_django_environment
from autotest_lib.frontend.afe import frontend_test_utils
-from autotest_lib.frontend.afe import models, model_attributes, model_logic
-from autotest_lib.client.common_lib import global_config
-from autotest_lib.client.common_lib import control_data
+from autotest_lib.frontend.afe import models, model_logic
class AclGroupTest(unittest.TestCase,
@@ -229,95 +228,6 @@
self.assertEqual(0, models.Job.objects.all().count())
-class KernelTest(unittest.TestCase, frontend_test_utils.FrontendTestMixin):
- def setUp(self):
- self._frontend_common_setup()
-
-
- def tearDown(self):
- self._frontend_common_teardown()
-
-
- def test_create_kernels_none(self):
- self.assertEqual(None, models.Kernel.create_kernels(None))
-
-
- def test_create_kernels(self):
- self.god.stub_function(models.Kernel, '_create')
-
- num_kernels = 3
- kernel_list = [object() for _ in range(num_kernels)]
- result = [object() for _ in range(num_kernels)]
-
- for kernel, response in zip(kernel_list, result):
- models.Kernel._create.expect_call(kernel).and_return(response)
- self.assertEqual(result, models.Kernel.create_kernels(kernel_list))
- self.god.check_playback()
-
-
- def test_create(self):
- kernel = models.Kernel._create({'version': 'version'})
- self.assertEqual(kernel.version, 'version')
- self.assertEqual(kernel.cmdline, '')
- self.assertEqual(kernel, models.Kernel._create({'version': 'version'}))
-
-
-class ParameterizedJobTest(unittest.TestCase,
- frontend_test_utils.FrontendTestMixin):
- def setUp(self):
- self._frontend_common_setup()
-
-
- def tearDown(self):
- self._frontend_common_teardown()
-
-
- def test_job(self):
- global_config.global_config.override_config_value(
- 'AUTOTEST_WEB', 'parameterized_jobs', 'True')
-
- test = models.Test.objects.create(
- name='name', author='author', test_class='class',
- test_category='category',
- test_type=control_data.CONTROL_TYPE.SERVER, path='path')
- parameterized_job = models.ParameterizedJob.objects.create(test=test)
- job = self._create_job(hosts=[1], control_file=None,
- parameterized_job=parameterized_job)
-
- self.assertEqual(job, parameterized_job.job())
-
-
-class JobTest(unittest.TestCase, frontend_test_utils.FrontendTestMixin):
- def setUp(self):
- self._frontend_common_setup()
-
-
- def tearDown(self):
- self._frontend_common_teardown()
-
-
- def test_check_parameterized_jobs_no_args(self):
- self.assertRaises(Exception, models.Job.check_parameterized_job,
- control_file=None, parameterized_job=None)
-
-
- def test_check_parameterized_jobs_both_args(self):
- self.assertRaises(Exception, models.Job.check_parameterized_job,
- control_file=object(), parameterized_job=object())
-
-
- def test_check_parameterized_jobs_disabled(self):
- self.assertRaises(Exception, models.Job.check_parameterized_job,
- control_file=None, parameterized_job=object())
-
-
- def test_check_parameterized_jobs_enabled(self):
- global_config.global_config.override_config_value(
- 'AUTOTEST_WEB', 'parameterized_jobs', 'True')
- self.assertRaises(Exception, models.Job.check_parameterized_job,
- control_file=object(), parameterized_job=None)
-
-
class SerializationTest(unittest.TestCase,
frontend_test_utils.FrontendTestMixin):
def setUp(self):
diff --git a/frontend/afe/rpc_interface.py b/frontend/afe/rpc_interface.py
index c6e4882..e3fa0c1 100644
--- a/frontend/afe/rpc_interface.py
+++ b/frontend/afe/rpc_interface.py
@@ -75,16 +75,6 @@
# Relevant CrosDynamicSuiteExceptions are defined in client/common_lib/error.py.
-def get_parameterized_autoupdate_image_url(job):
- """Get the parameterized autoupdate image url from a parameterized job."""
- known_test_obj = models.Test.smart_get('autoupdate_ParameterizedJob')
- image_parameter = known_test_obj.testparameter_set.get(test=known_test_obj,
- name='image')
- para_set = job.parameterized_job.parameterizedjobparameter_set
- job_test_para = para_set.get(test_parameter=image_parameter)
- return job_test_para.parameter_value
-
-
# labels
def modify_label(id, **data):
@@ -791,125 +781,6 @@
return cf_info
-def create_parameterized_job(
- name,
- priority,
- test,
- parameters,
- kernel=None,
- label=None,
- profilers=(),
- profiler_parameters=None,
- use_container=False,
- profile_only=None,
- upload_kernel_config=False,
- hosts=(),
- meta_hosts=(),
- one_time_hosts=(),
- atomic_group_name=None,
- synch_count=None,
- is_template=False,
- timeout=None,
- timeout_mins=None,
- max_runtime_mins=None,
- run_verify=False,
- email_list='',
- dependencies=(),
- reboot_before=None,
- reboot_after=None,
- parse_failed_repair=None,
- hostless=False,
- keyvals=None,
- drone_set=None,
- run_reset=True,
- require_ssp=None):
- """
- Creates and enqueues a parameterized job.
-
- Most parameters a combination of the parameters for generate_control_file()
- and create_job(), with the exception of:
-
- @param test name or ID of the test to run
- @param parameters a map of parameter name ->
- tuple of (param value, param type)
- @param profiler_parameters a dictionary of parameters for the profilers:
- key: profiler name
- value: dict of param name -> tuple of
- (param value,
- param type)
- """
- # Set up the parameterized job configs
- test_obj = models.Test.smart_get(test)
- control_type = test_obj.test_type
-
- try:
- label = models.Label.smart_get(label)
- except models.Label.DoesNotExist:
- label = None
-
- kernel_objs = models.Kernel.create_kernels(kernel)
- profiler_objs = [models.Profiler.smart_get(profiler)
- for profiler in profilers]
-
- parameterized_job = models.ParameterizedJob.objects.create(
- test=test_obj, label=label, use_container=use_container,
- profile_only=profile_only,
- upload_kernel_config=upload_kernel_config)
- parameterized_job.kernels.add(*kernel_objs)
-
- for profiler in profiler_objs:
- parameterized_profiler = models.ParameterizedJobProfiler.objects.create(
- parameterized_job=parameterized_job,
- profiler=profiler)
- profiler_params = profiler_parameters.get(profiler.name, {})
- for name, (value, param_type) in profiler_params.iteritems():
- models.ParameterizedJobProfilerParameter.objects.create(
- parameterized_job_profiler=parameterized_profiler,
- parameter_name=name,
- parameter_value=value,
- parameter_type=param_type)
-
- try:
- for parameter in test_obj.testparameter_set.all():
- if parameter.name in parameters:
- param_value, param_type = parameters.pop(parameter.name)
- parameterized_job.parameterizedjobparameter_set.create(
- test_parameter=parameter, parameter_value=param_value,
- parameter_type=param_type)
-
- if parameters:
- raise Exception('Extra parameters remain: %r' % parameters)
-
- return rpc_utils.create_job_common(
- name=name,
- priority=priority,
- control_type=control_type,
- hosts=hosts,
- meta_hosts=meta_hosts,
- one_time_hosts=one_time_hosts,
- atomic_group_name=atomic_group_name,
- synch_count=synch_count,
- is_template=is_template,
- timeout=timeout,
- timeout_mins=timeout_mins,
- max_runtime_mins=max_runtime_mins,
- run_verify=run_verify,
- email_list=email_list,
- dependencies=dependencies,
- reboot_before=reboot_before,
- reboot_after=reboot_after,
- parse_failed_repair=parse_failed_repair,
- hostless=hostless,
- keyvals=keyvals,
- drone_set=drone_set,
- parameterized_job=parameterized_job.id,
- run_reset=run_reset,
- require_ssp=require_ssp)
- except:
- parameterized_job.delete()
- raise
-
-
def create_job_page_handler(name, priority, control_file, control_type,
image=None, hostless=False, firmware_rw_build=None,
firmware_ro_build=None, test_source_build=None,
@@ -1228,8 +1099,6 @@
for label in job.dependencies)
job_dict['keyvals'] = dict((keyval.key, keyval.value)
for keyval in job.keyvals)
- if job.parameterized_job:
- job_dict['image'] = get_parameterized_autoupdate_image_url(job)
job_dicts.append(job_dict)
return rpc_utils.prepare_for_serialization(job_dicts)
@@ -1320,48 +1189,42 @@
def _get_image_for_job(job, hostless):
- """ Gets the image used for a job.
+ """Gets the image used for a job.
- Gets the image used for an AFE job. If the job is a parameterized job, get
- the image from the job parameter; otherwise, tries to get the image from
- the job's keyvals 'build' or 'builds'. As a last resort, if the job is a
- hostless job, tries to get the image from its control file attributes
- 'build' or 'builds'.
+ Gets the image used for an AFE job from the job's keyvals 'build' or
+ 'builds'. If that fails, and the job is a hostless job, tries to
+ get the image from its control file attributes 'build' or 'builds'.
TODO(ntang): Needs to handle FAFT with two builds for ro/rw.
@param job An AFE job object.
- @param hostless Boolean on of the job is hostless.
+ @param hostless Boolean indicating whether the job is hostless.
@returns The image build used for the job.
"""
- image = None
- if job.parameterized_job:
- image = get_parameterized_autoupdate_image_url(job)
- else:
- keyvals = job.keyval_dict()
- image = keyvals.get('build')
- if not image:
- value = keyvals.get('builds')
- builds = None
- if isinstance(value, dict):
- builds = value
- elif isinstance(value, basestring):
- builds = ast.literal_eval(value)
- if builds:
+ keyvals = job.keyval_dict()
+ image = keyvals.get('build')
+ if not image:
+ value = keyvals.get('builds')
+ builds = None
+ if isinstance(value, dict):
+ builds = value
+ elif isinstance(value, basestring):
+ builds = ast.literal_eval(value)
+ if builds:
+ image = builds.get('cros-version')
+ if not image and hostless and job.control_file:
+ try:
+ control_obj = control_data.parse_control_string(
+ job.control_file)
+ if hasattr(control_obj, 'build'):
+ image = getattr(control_obj, 'build')
+ if not image and hasattr(control_obj, 'builds'):
+ builds = getattr(control_obj, 'builds')
image = builds.get('cros-version')
- if not image and hostless and job.control_file:
- try:
- control_obj = control_data.parse_control_string(
- job.control_file)
- if hasattr(control_obj, 'build'):
- image = getattr(control_obj, 'build')
- if not image and hasattr(control_obj, 'builds'):
- builds = getattr(control_obj, 'builds')
- image = builds.get('cros-version')
- except:
- logging.warning('Failed to parse control file for job: %s',
- job.name)
+ except:
+ logging.warning('Failed to parse control file for job: %s',
+ job.name)
return image
@@ -1709,7 +1572,6 @@
result['motd'] = rpc_utils.get_motd()
result['drone_sets_enabled'] = models.DroneSet.drone_sets_enabled()
result['drone_sets'] = drone_sets
- result['parameterized_jobs'] = models.Job.parameterized_jobs_enabled()
result['status_dictionary'] = {"Aborted": "Aborted",
"Verifying": "Verifying Host",
diff --git a/frontend/afe/rpc_interface_unittest.py b/frontend/afe/rpc_interface_unittest.py
index 89a7144..06f0c86 100755
--- a/frontend/afe/rpc_interface_unittest.py
+++ b/frontend/afe/rpc_interface_unittest.py
@@ -14,7 +14,6 @@
from autotest_lib.client.common_lib.test_utils import mock
from autotest_lib.frontend import setup_django_environment
from autotest_lib.frontend.afe import frontend_test_utils
-from autotest_lib.frontend.afe import model_attributes
from autotest_lib.frontend.afe import model_logic
from autotest_lib.frontend.afe import models
from autotest_lib.frontend.afe import rpc_interface
@@ -397,56 +396,6 @@
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:
@@ -640,21 +589,6 @@
self.god.check_playback()
- def test_get_image_for_job_parameterized(self):
- test = models.Test.objects.create(
- name='name', author='author', test_class='class',
- test_category='category',
- test_type=control_data.CONTROL_TYPE.SERVER, path='path')
- parameterized_job = models.ParameterizedJob.objects.create(test=test)
- job = self._create_job(hosts=[1])
- job.parameterized_job = parameterized_job
- self.god.stub_function_to_return(rpc_interface,
- 'get_parameterized_autoupdate_image_url', 'cool-image')
- image = rpc_interface._get_image_for_job(job, True)
- self.assertEquals('cool-image', image)
- self.god.check_playback()
-
-
def test_get_image_for_job_with_keyval_build(self):
keyval_dict = {'build': 'cool-image'}
job_id = rpc_interface.create_job(name='test',
diff --git a/frontend/afe/rpc_utils.py b/frontend/afe/rpc_utils.py
index b98ecc0..92643be 100644
--- a/frontend/afe/rpc_utils.py
+++ b/frontend/afe/rpc_utils.py
@@ -898,7 +898,6 @@
hostless=False,
keyvals=None,
drone_set=None,
- parameterized_job=None,
parent_job_id=None,
test_retry=0,
run_reset=True,
@@ -990,7 +989,6 @@
parse_failed_repair=parse_failed_repair,
keyvals=keyvals,
drone_set=drone_set,
- parameterized_job=parameterized_job,
parent_job_id=parent_job_id,
test_retry=test_retry,
run_reset=run_reset,
diff --git a/frontend/frontend_unittest.py b/frontend/frontend_unittest.py
index 4d1d902..22e38a0 100755
--- a/frontend/frontend_unittest.py
+++ b/frontend/frontend_unittest.py
@@ -1,4 +1,5 @@
#!/usr/bin/python
+# pylint: disable=missing-docstring
import unittest, os
import common
@@ -13,8 +14,6 @@
def setUp(self):
setup_test_environment.set_up()
global_config.global_config.override_config_value(
- 'AUTOTEST_WEB', 'parameterized_jobs', 'False')
- global_config.global_config.override_config_value(
'SERVER', 'rpc_logging', 'False')