Abstract out common models used in the frontend's models.py so that django is
not required to interact with non Django portions of the code.
This includes the enums RebootBefore, RebootAfter and Test.Type
--- autotest/frontend/afe/frontend_test_utils.py 2010-03-01
15:59:30.000000000 -0800
+++ autotest/frontend/afe/frontend_test_utils.py 2010-03-01
15:59:30.000000000 -0800
@@ -2,7 +2,7 @@
import common
from autotest_lib.frontend import setup_test_environment
from autotest_lib.frontend import thread_local
-from autotest_lib.frontend.afe import models
+from autotest_lib.frontend.afe import models, model_attributes
from autotest_lib.client.common_lib.test_utils import mock
class FrontendTestMixin(object):
@@ -102,7 +102,7 @@
job = models.Job.objects.create(
name='test', owner='autotest_system', priority=priority,
synch_count=synch_count, created_on=created_on,
- reboot_before=models.RebootBefore.NEVER)
+ reboot_before=model_attributes.RebootBefore.NEVER)
for host_id in hosts:
models.HostQueueEntry.objects.create(job=job, host_id=host_id,
status=status,
--- /dev/null 2009-12-17 12:29:38.000000000 -0800
+++ autotest/frontend/afe/model_attributes.py 2010-03-01 15:59:30.000000000
-0800
@@ -0,0 +1,11 @@
+import common
+from autotest_lib.client.common_lib import enum
+
+
+# common enums for Job attributes
+RebootBefore = enum.Enum('Never', 'If dirty', 'Always')
+RebootAfter = enum.Enum('Never', 'If all tests passed', 'Always')
+
+
+# common enums for test attributes
+TestTypes = enum.Enum('Client', 'Server', start_value=1)
--- autotest/frontend/afe/models.py 2010-03-01 15:59:30.000000000 -0800
+++ autotest/frontend/afe/models.py 2010-02-26 15:28:08.000000000 -0800
@@ -3,16 +3,14 @@
from django.db import models as dbmodels, connection
from xml.sax import saxutils
import common
-from autotest_lib.frontend.afe import model_logic
+from autotest_lib.frontend.afe import model_logic, model_attributes
from autotest_lib.frontend import settings, thread_local
from autotest_lib.client.common_lib import enum, host_protections,
global_config
from autotest_lib.client.common_lib import host_queue_entry_states
# job options and user preferences
-RebootBefore = enum.Enum('Never', 'If dirty', 'Always')
-DEFAULT_REBOOT_BEFORE = RebootBefore.IF_DIRTY
-RebootAfter = enum.Enum('Never', 'If all tests passed', 'Always')
-DEFAULT_REBOOT_AFTER = RebootBefore.ALWAYS
+DEFAULT_REBOOT_BEFORE = model_attributes.RebootBefore.IF_DIRTY
+DEFAULT_REBOOT_AFTER = model_attributes.RebootBefore.ALWAYS
class AclAccessViolation(Exception):
@@ -136,12 +134,12 @@
access_level = dbmodels.IntegerField(default=ACCESS_USER, blank=True)
# user preferences
- reboot_before = dbmodels.SmallIntegerField(choices=RebootBefore.choices(),
- blank=True,
- default=DEFAULT_REBOOT_BEFORE)
- reboot_after = dbmodels.SmallIntegerField(choices=RebootAfter.choices(),
- blank=True,
- default=DEFAULT_REBOOT_AFTER)
+ reboot_before = dbmodels.SmallIntegerField(
+ choices=model_attributes.RebootBefore.choices(), blank=True,
+ default=DEFAULT_REBOOT_BEFORE)
+ reboot_after = dbmodels.SmallIntegerField(
+ choices=model_attributes.RebootAfter.choices(), blank=True,
+ default=DEFAULT_REBOOT_AFTER)
show_experimental = dbmodels.BooleanField(default=False)
name_field = 'login'
@@ -400,7 +398,6 @@
TestTime = enum.Enum('SHORT', 'MEDIUM', 'LONG', start_value=1)
# TODO(showard) - this should be merged with Job.ControlType (but right
# now they use opposite values)
- Types = enum.Enum('Client', 'Server', start_value=1)
name = dbmodels.CharField(max_length=255, unique=True)
author = dbmodels.CharField(max_length=255)
@@ -412,7 +409,8 @@
run_verify = dbmodels.BooleanField(default=True)
test_time = dbmodels.SmallIntegerField(choices=TestTime.choices(),
default=TestTime.MEDIUM)
- test_type = dbmodels.SmallIntegerField(choices=Types.choices())
+ test_type = dbmodels.SmallIntegerField(
+ choices=model_attributes.TestTypes.choices())
sync_count = dbmodels.IntegerField(default=1)
path = dbmodels.CharField(max_length=255, unique=True)
@@ -675,12 +673,12 @@
dependency_labels = (
dbmodels.ManyToManyField(Label, blank=True,
db_table='afe_jobs_dependency_labels'))
- reboot_before = dbmodels.SmallIntegerField(choices=RebootBefore.choices(),
- blank=True,
- default=DEFAULT_REBOOT_BEFORE)
- reboot_after = dbmodels.SmallIntegerField(choices=RebootAfter.choices(),
- blank=True,
- default=DEFAULT_REBOOT_AFTER)
+ reboot_before = dbmodels.SmallIntegerField(
+ choices=model_attributes.RebootBefore.choices(), blank=True,
+ default=DEFAULT_REBOOT_BEFORE)
+ reboot_after = dbmodels.SmallIntegerField(
+ choices=model_attributes.RebootAfter.choices(), blank=True,
+ default=DEFAULT_REBOOT_AFTER)
parse_failed_repair = dbmodels.BooleanField(
default=DEFAULT_PARSE_FAILED_REPAIR)
max_runtime_hrs = dbmodels.IntegerField(default=DEFAULT_MAX_RUNTIME_HRS)
--- autotest/frontend/afe/resources.py 2010-03-01 15:59:30.000000000 -0800
+++ autotest/frontend/afe/resources.py 2010-03-01 15:59:30.000000000 -0800
@@ -1,6 +1,7 @@
from django import http
from autotest_lib.frontend.shared import query_lib, resource_lib
from autotest_lib.frontend.afe import control_file, models, rpc_utils
+from autotest_lib.frontend.afe import model_attributes
from autotest_lib.frontend import thread_local
from autotest_lib.client.common_lib import host_protections
@@ -370,7 +371,8 @@
rep.update({'author': self.instance.author,
'class': self.instance.test_class,
'control_file_type':
- models.Test.Types.get_string(self.instance.test_type),
+ model_attributes.TestTypes.get_string(
+ self.instance.test_type),
'control_file_path': self.instance.path,
'dependencies':
TestDependencyCollection(fixed_entry=self).link(),
@@ -383,7 +385,8 @@
cls._check_for_required_fields(input_dict,
('name', 'control_file_type',
'control_file_path'))
- test_type = models.Test.Type.get_value(input['control_file_type'])
+ test_type = model_attributes.TestTypes.get_value(
+ input['control_file_type'])
return models.Test.add_object(name=input_dict['name'],
test_type=test_type,
path=input_dict['control_file_path'])
@@ -426,9 +429,11 @@
'timeout_hrs': _job_fields['timeout'].default,
'maximum_runtime_hrs': _job_fields['max_runtime_hrs'].default,
'cleanup_before_job':
- models.RebootBefore.get_string(models.DEFAULT_REBOOT_BEFORE),
+ model_attributes.RebootBefore.get_string(
+ models.DEFAULT_REBOOT_BEFORE),
'cleanup_after_job':
- models.RebootAfter.get_string(models.DEFAULT_REBOOT_AFTER),
+ model_attributes.RebootAfter.get_string(
+ models.DEFAULT_REBOOT_AFTER),
}
@@ -464,9 +469,9 @@
'timeout_hrs': job.timeout,
'maximum_runtime_hrs': job.max_runtime_hrs,
'cleanup_before_job':
- models.RebootBefore.get_string(job.reboot_before),
+
model_attributes.RebootBefore.get_string(job.reboot_before),
'cleanup_after_job':
- models.RebootAfter.get_string(job.reboot_after),
+ model_attributes.RebootAfter.get_string(job.reboot_after),
}
--- autotest/frontend/afe/resources_test.py 2010-03-01 15:59:30.000000000
-0800
+++ autotest/frontend/afe/resources_test.py 2010-03-01 15:59:30.000000000
-0800
@@ -7,6 +7,7 @@
from autotest_lib.frontend import setup_test_environment
from django.test import client
from autotest_lib.frontend.afe import control_file, frontend_test_utils, models
+from autotest_lib.frontend.afe import model_attributes
class ResourceTestCase(unittest.TestCase,
frontend_test_utils.FrontendTestMixin):
@@ -35,7 +36,7 @@
def _add_additional_data(self):
models.Test.objects.create(name='mytest',
- test_type=models.Test.Types.SERVER,
+ test_type=model_attributes.TestTypes.SERVER,
path='/path/to/mytest')
--- autotest/frontend/afe/rpc_interface.py 2010-03-01 15:59:30.000000000
-0800
+++ autotest/frontend/afe/rpc_interface.py 2010-03-01 15:59:30.000000000
-0800
@@ -31,7 +31,7 @@
import datetime
import common
-from autotest_lib.frontend.afe import models, model_logic
+from autotest_lib.frontend.afe import models, model_logic, model_attributes
from autotest_lib.frontend.afe import control_file, rpc_utils
from autotest_lib.client.common_lib import global_config
@@ -820,8 +820,8 @@
result['job_max_runtime_hrs_default'] = models.Job.DEFAULT_MAX_RUNTIME_HRS
result['parse_failed_repair_default'] = bool(
models.Job.DEFAULT_PARSE_FAILED_REPAIR)
- result['reboot_before_options'] = models.RebootBefore.names
- result['reboot_after_options'] = models.RebootAfter.names
+ result['reboot_before_options'] = model_attributes.RebootBefore.names
+ result['reboot_after_options'] = model_attributes.RebootAfter.names
result['motd'] = rpc_utils.get_motd()
result['status_dictionary'] = {"Aborted": "Aborted",
--- autotest/frontend/afe/rpc_utils.py 2010-02-25 17:15:57.000000000 -0800
+++ autotest/frontend/afe/rpc_utils.py 2010-03-01 15:59:30.000000000 -0800
@@ -7,7 +7,7 @@
import datetime, os, sys
import django.http
-from autotest_lib.frontend.afe import models, model_logic
+from autotest_lib.frontend.afe import models, model_logic, model_attributes
NULL_DATETIME = datetime.datetime.max
NULL_DATE = datetime.date.max
@@ -201,7 +201,7 @@
'tests together (tests %s and %s differ' % (
test1.name, test2.name)})
- is_server = (test_type == models.Test.Types.SERVER)
+ is_server = (test_type == model_attributes.TestTypes.SERVER)
if test_objects:
synch_count = max(test.sync_count for test in test_objects)
else:
--- autotest/scheduler/monitor_db.py 2010-02-25 18:18:09.000000000 -0800
+++ autotest/scheduler/monitor_db.py 2010-03-01 15:59:30.000000000 -0800
@@ -21,6 +21,7 @@
from autotest_lib.client.common_lib import host_protections, utils
from autotest_lib.database import database_connection
from autotest_lib.frontend.afe import models, rpc_utils, readonly_connection
+from autotest_lib.frontend.afe import model_attributes
from autotest_lib.scheduler import drone_manager, drones, email_manager
from autotest_lib.scheduler import monitor_db_cleanup
from autotest_lib.scheduler import status_server, scheduler_config
@@ -2354,8 +2355,8 @@
do_reboot = (
# always reboot after aborted jobs
self._final_status() == models.HostQueueEntry.Status.ABORTED
- or reboot_after == models.RebootAfter.ALWAYS
- or (reboot_after == models.RebootAfter.IF_ALL_TESTS_PASSED
+ or reboot_after == model_attributes.RebootAfter.ALWAYS
+ or (reboot_after ==
model_attributes.RebootAfter.IF_ALL_TESTS_PASSED
and final_success and num_tests_failed == 0))
for queue_entry in self.queue_entries:
--- autotest/scheduler/monitor_db_functional_test.py 2010-03-01
15:59:30.000000000 -0800
+++ autotest/scheduler/monitor_db_functional_test.py 2010-03-01
15:59:30.000000000 -0800
@@ -6,6 +6,7 @@
from autotest_lib.database import database_connection
from autotest_lib.frontend import setup_django_environment
from autotest_lib.frontend.afe import frontend_test_utils, models
+from autotest_lib.frontend.afe import model_attributes
from autotest_lib.scheduler import drone_manager, email_manager, monitor_db
from autotest_lib.scheduler import scheduler_models
@@ -415,7 +416,7 @@
def _setup_for_pre_job_cleanup(self):
self._initialize_test()
job, queue_entry = self._make_job_and_queue_entry()
- job.reboot_before = models.RebootBefore.ALWAYS
+ job.reboot_before = model_attributes.RebootBefore.ALWAYS
job.save()
return queue_entry
@@ -480,7 +481,7 @@
def _setup_for_post_job_cleanup(self):
self._initialize_test()
job, queue_entry = self._make_job_and_queue_entry()
- job.reboot_after = models.RebootAfter.ALWAYS
+ job.reboot_after = model_attributes.RebootAfter.ALWAYS
job.save()
return queue_entry
@@ -592,7 +593,7 @@
def test_do_not_verify_job_with_cleanup(self):
queue_entry = self._setup_for_do_not_verify()
- queue_entry.job.reboot_before = models.RebootBefore.ALWAYS
+ queue_entry.job.reboot_before = model_attributes.RebootBefore.ALWAYS
queue_entry.job.save()
self._run_dispatcher() # cleanup
@@ -603,7 +604,7 @@
def test_do_not_verify_pre_job_cleanup_failure(self):
queue_entry = self._setup_for_do_not_verify()
- queue_entry.job.reboot_before = models.RebootBefore.ALWAYS
+ queue_entry.job.reboot_before = model_attributes.RebootBefore.ALWAYS
queue_entry.job.save()
self._run_dispatcher() # cleanup
@@ -761,7 +762,7 @@
self._initialize_test()
job, queue_entry = self._make_job_and_queue_entry()
job.run_verify = False
- job.reboot_after = models.RebootAfter.NEVER
+ job.reboot_after = model_attributes.RebootAfter.NEVER
job.save()
self._run_dispatcher() # launches job
@@ -948,7 +949,7 @@
job = self._create_job(hosts=[1,2], synchronous=True)
queue_entry = job.hostqueueentry_set.all()[0]
job.run_verify = False
- job.reboot_after = models.RebootAfter.NEVER
+ job.reboot_after = model_attributes.RebootAfter.NEVER
job.save()
self.mock_drone_manager.process_capacity = 0
@@ -1030,7 +1031,7 @@
def test_pre_job_keyvals(self):
job = self._create_job(hosts=[1])
job.run_verify = False
- job.reboot_before = models.RebootBefore.NEVER
+ job.reboot_before = model_attributes.RebootBefore.NEVER
job.save()
models.JobKeyval.objects.create(job=job, key='mykey', value='myvalue')
--- autotest/scheduler/scheduler_models.py 2010-03-01 15:59:30.000000000
-0800
+++ autotest/scheduler/scheduler_models.py 2010-03-01 15:59:30.000000000
-0800
@@ -19,7 +19,7 @@
import datetime, itertools, logging, os, re, sys, time, weakref
from django.db import connection
from autotest_lib.client.common_lib import global_config, host_protections
-from autotest_lib.frontend.afe import models
+from autotest_lib.frontend.afe import models, model_attributes
from autotest_lib.database import database_connection
from autotest_lib.scheduler import drone_manager, email_manager
from autotest_lib.scheduler import scheduler_config
@@ -995,9 +995,9 @@
def _should_run_cleanup(self, queue_entry):
- if self.reboot_before == models.RebootBefore.ALWAYS:
+ if self.reboot_before == model_attributes.RebootBefore.ALWAYS:
return True
- elif self.reboot_before == models.RebootBefore.IF_DIRTY:
+ elif self.reboot_before == model_attributes.RebootBefore.IF_DIRTY:
return queue_entry.host.dirty
return False
--- autotest/scheduler/scheduler_models_unittest.py 2010-03-01
15:59:30.000000000 -0800
+++ autotest/scheduler/scheduler_models_unittest.py 2010-03-01
15:59:30.000000000 -0800
@@ -7,7 +7,7 @@
from autotest_lib.client.common_lib.test_utils import mock
from autotest_lib.client.common_lib.test_utils import unittest
from autotest_lib.database import database_connection
-from autotest_lib.frontend.afe import models
+from autotest_lib.frontend.afe import models, model_attributes
from autotest_lib.scheduler import monitor_db_functional_test
from autotest_lib.scheduler import scheduler_models
@@ -363,7 +363,7 @@
def test_reboot_before_always(self):
job = self._create_job(hosts=[1])
- job.reboot_before = models.RebootBefore.ALWAYS
+ job.reboot_before = model_attributes.RebootBefore.ALWAYS
job.save()
task = self._test_pre_job_tasks_helper()
@@ -373,7 +373,7 @@
def _test_reboot_before_if_dirty_helper(self, expect_reboot):
job = self._create_job(hosts=[1])
- job.reboot_before = models.RebootBefore.IF_DIRTY
+ job.reboot_before = model_attributes.RebootBefore.IF_DIRTY
job.save()
task = self._test_pre_job_tasks_helper()
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest