Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(756)

Side by Side Diff: frontend/planner/models.py

Issue 1595019: Merge remote branch 'origin/upstream' into tempbranch (Closed)
Patch Set: Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « frontend/planner/failure_actions.py ('k') | frontend/planner/rpc_interface.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 from django.db import models as dbmodels 1 from django.db import models as dbmodels
2 import common 2 import common
3 from autotest_lib.frontend.afe import models as afe_models 3 from autotest_lib.frontend.afe import models as afe_models
4 from autotest_lib.frontend.afe import model_logic, rpc_utils 4 from autotest_lib.frontend.afe import model_logic, rpc_utils
5 from autotest_lib.frontend.tko import models as tko_models 5 from autotest_lib.frontend.tko import models as tko_models
6 from autotest_lib.frontend.planner import model_attributes 6 from autotest_lib.frontend.planner import model_attributes
7 from autotest_lib.client.common_lib import utils 7 from autotest_lib.client.common_lib import utils
8 8
9 9
10 class Plan(dbmodels.Model, model_logic.ModelExtensions): 10 class Plan(dbmodels.Model, model_logic.ModelExtensions):
11 """A test plan 11 """A test plan
12 12
13 Required: 13 Required:
14 name: Plan name, unique 14 name: Plan name, unique
15 complete: True if the plan is completed 15 complete: True if the plan is completed
16 dirty: True if the plan has been changed since the execution engine has 16 dirty: True if the plan has been changed since the execution engine has
17 last seen it 17 last seen it
18 initialized: True if the plan has started 18 initialized: True if the plan has started
19 19
20 Optional: 20 Optional:
21 label_override: A label to apply to each Autotest job. 21 label_override: A label to apply to each Autotest job.
22 support: The global support object to apply to this plan 22 support: The global support script to apply to this plan
23 """ 23 """
24 name = dbmodels.CharField(max_length=255, unique=True) 24 name = dbmodels.CharField(max_length=255, unique=True)
25 label_override = dbmodels.CharField(max_length=255, null=True, blank=True) 25 label_override = dbmodels.CharField(max_length=255, null=True, blank=True)
26 support = dbmodels.TextField(blank=True) 26 support = dbmodels.TextField(blank=True)
27 complete = dbmodels.BooleanField(default=False) 27 complete = dbmodels.BooleanField(default=False)
28 dirty = dbmodels.BooleanField(default=False) 28 dirty = dbmodels.BooleanField(default=False)
29 initialized = dbmodels.BooleanField(default=False) 29 initialized = dbmodels.BooleanField(default=False)
30 30
31 owners = dbmodels.ManyToManyField(afe_models.User, 31 owners = dbmodels.ManyToManyField(afe_models.User,
32 db_table='planner_plan_owners') 32 db_table='planner_plan_owners')
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 @classmethod 120 @classmethod
121 def _compute_hash(cls, **kwargs): 121 def _compute_hash(cls, **kwargs):
122 return utils.hash('sha1', kwargs['contents']).hexdigest() 122 return utils.hash('sha1', kwargs['contents']).hexdigest()
123 123
124 124
125 def __unicode__(self): 125 def __unicode__(self):
126 return u'Control file id %s (SHA1: %s)' % (self.id, self.control_hash) 126 return u'Control file id %s (SHA1: %s)' % (self.id, self.control_hash)
127 127
128 128
129 class TestConfig(ModelWithPlan, model_logic.ModelExtensions): 129 class TestConfig(ModelWithPlan, model_logic.ModelExtensions):
130 """A planned test 130 """A configuration for a planned test
131 131
132 Required: 132 Required:
133 alias: The name to give this test within the plan. Unique with plan id 133 alias: The name to give this test within the plan. Unique with plan id
134 test_control_file: The control file to run 134 test_control_file: The control file to run
135 is_server: True if this control file is a server-side test 135 is_server: True if this control file is a server-side test
136 execution_order: An integer describing when this test should be run in 136 execution_order: An integer describing when this test should be run in
137 the test plan 137 the test plan
138 estimated_runtime: Time in hours that the test is expected to run. Will 138 estimated_runtime: Time in hours that the test is expected to run. Will
139 be automatically generated (on the frontend) for 139 be automatically generated (on the frontend) for
140 tests in Autotest. 140 tests in Autotest.
141 skipped_hosts: Hosts that are going to skip this test.
141 """ 142 """
142 alias = dbmodels.CharField(max_length=255) 143 alias = dbmodels.CharField(max_length=255)
143 control_file = dbmodels.ForeignKey(ControlFile) 144 control_file = dbmodels.ForeignKey(ControlFile)
144 is_server = dbmodels.BooleanField(default=True) 145 is_server = dbmodels.BooleanField(default=True)
145 execution_order = dbmodels.IntegerField(blank=True) 146 execution_order = dbmodels.IntegerField(blank=True)
146 estimated_runtime = dbmodels.IntegerField() 147 estimated_runtime = dbmodels.IntegerField()
148 skipped_hosts = dbmodels.ManyToManyField(
149 afe_models.Host, db_table='planner_test_configs_skipped_hosts')
147 150
148 class Meta: 151 class Meta:
149 db_table = 'planner_test_configs' 152 db_table = 'planner_test_configs'
150 ordering = ('execution_order',) 153 ordering = ('execution_order',)
151 unique_together = (('plan', 'alias'),) 154 unique_together = (('plan', 'alias'),)
152 155
153 156
154 def _get_details_unicode(self): 157 def _get_details_unicode(self):
155 return 'Planned test config - Control file id %s' % self.control_file.id 158 return 'Planned test config - Control file id %s' % self.control_file.id
156 159
157 160
158 class Job(ModelWithPlan, model_logic.ModelExtensions): 161 class Job(ModelWithPlan, model_logic.ModelExtensions):
159 """Represents an Autotest job initiated for a test plan 162 """Represents an Autotest job initiated for a test plan
160 163
161 Required: 164 Required:
162 test: The TestConfig associated with this Job 165 test: The TestConfig associated with this Job
163 afe_job: The Autotest job 166 afe_job: The Autotest job
164 """ 167 """
165 test_config = dbmodels.ForeignKey(TestConfig) 168 test_config = dbmodels.ForeignKey(TestConfig)
166 afe_job = dbmodels.ForeignKey(afe_models.Job) 169 afe_job = dbmodels.ForeignKey(afe_models.Job)
170 requires_rerun = dbmodels.BooleanField(default=False)
167 171
168 class Meta: 172 class Meta:
169 db_table = 'planner_test_jobs' 173 db_table = 'planner_test_jobs'
170 174
171 175
172 def _get_details_unicode(self): 176 def _get_details_unicode(self):
173 return 'AFE job %s' % self.afe_job.id 177 return 'AFE job %s' % self.afe_job.id
174 178
175 179
176 class Bug(dbmodels.Model): 180 class Bug(dbmodels.Model):
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 test_job = dbmodels.ForeignKey(Job) 216 test_job = dbmodels.ForeignKey(Job)
213 tko_test = dbmodels.ForeignKey(tko_models.Test) 217 tko_test = dbmodels.ForeignKey(tko_models.Test)
214 host = dbmodels.ForeignKey(Host) 218 host = dbmodels.ForeignKey(Host)
215 status = dbmodels.CharField( 219 status = dbmodels.CharField(
216 max_length=16, 220 max_length=16,
217 choices=model_attributes.TestRunStatus.choices(), 221 choices=model_attributes.TestRunStatus.choices(),
218 default=model_attributes.TestRunStatus.ACTIVE) 222 default=model_attributes.TestRunStatus.ACTIVE)
219 finalized = dbmodels.BooleanField(default=False) 223 finalized = dbmodels.BooleanField(default=False)
220 seen = dbmodels.BooleanField(default=False) 224 seen = dbmodels.BooleanField(default=False)
221 triaged = dbmodels.BooleanField(default=False) 225 triaged = dbmodels.BooleanField(default=False)
226 invalidated = dbmodels.BooleanField(default=False)
222 227
223 bugs = dbmodels.ManyToManyField(Bug, null=True, 228 bugs = dbmodels.ManyToManyField(Bug, null=True,
224 db_table='planner_test_run_bugs') 229 db_table='planner_test_run_bugs')
225 230
226 class Meta: 231 class Meta:
227 db_table = 'planner_test_runs' 232 db_table = 'planner_test_runs'
228 unique_together = (('plan', 'test_job', 'tko_test', 'host'),) 233 unique_together = (('plan', 'test_job', 'tko_test', 'host'),)
229 234
230 235
231 def _get_details_unicode(self): 236 def _get_details_unicode(self):
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 bugs = dbmodels.ManyToManyField(Bug, null=True, 387 bugs = dbmodels.ManyToManyField(Bug, null=True,
383 db_table='planner_autoprocess_bugs') 388 db_table='planner_autoprocess_bugs')
384 reason_override = dbmodels.CharField(max_length=255, null=True, blank=True) 389 reason_override = dbmodels.CharField(max_length=255, null=True, blank=True)
385 390
386 class Meta: 391 class Meta:
387 db_table = 'planner_autoprocess' 392 db_table = 'planner_autoprocess'
388 393
389 394
390 def _get_details_unicode(self): 395 def _get_details_unicode(self):
391 return 'Autoprocessing condition: %s' % self.condition 396 return 'Autoprocessing condition: %s' % self.condition
OLDNEW
« no previous file with comments | « frontend/planner/failure_actions.py ('k') | frontend/planner/rpc_interface.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698