Merge lp:~abentley/launchpad/new-score into lp:launchpad

Proposed by Aaron Bentley
Status: Merged
Approved by: Edwin Grubbs
Approved revision: no longer in the source branch.
Merged at revision: 11254
Proposed branch: lp:~abentley/launchpad/new-score
Merge into: lp:launchpad
Diff against target: 107 lines (+25/-9)
5 files modified
lib/lp/code/browser/tests/test_sourcepackagerecipe.py (+2/-2)
lib/lp/code/model/sourcepackagerecipe.py (+2/-1)
lib/lp/code/model/sourcepackagerecipebuild.py (+1/-1)
lib/lp/code/model/tests/test_sourcepackagerecipe.py (+16/-4)
lib/lp/code/templates/sourcepackagerecipebuild-index.pt (+4/-1)
To merge this branch: bzr merge lp:~abentley/launchpad/new-score
Reviewer Review Type Date Requested Status
Edwin Grubbs (community) code Approve
Review via email: mp+31178@code.launchpad.net

Commit message

Revise build scores and show in UI

Description of the change

= Summary =
Fix bug #610960: recipe build scores should be higher

== Proposed fix ==
Score manual builds at 2505, like a similar binary build would be scored.
Score automatic builds at 2405, so manual builds take precedence.

== Pre-implementation notes ==
Discussed with bigjools.

== Implementation details ==
Honour the relative_build_score attribute of archives.

Show the build score on the build page (like binary builds.)

== Tests ==
bin/test -t render_index -t requestBuild test_sourcepackagerecipe

== Demo and Q/A ==
Create a build. Its score should be shown as 2505.

= Launchpad lint =

Checking for conflicts and issues in changed files.

Linting changed files:
  lib/lp/code/model/tests/test_sourcepackagerecipe.py
  lib/lp/code/templates/sourcepackagerecipebuild-index.pt
  lib/lp/code/model/sourcepackagerecipebuild.py
  lib/lp/code/model/sourcepackagerecipe.py
  lib/lp/code/browser/tests/test_sourcepackagerecipe.py

./lib/lp/code/model/tests/test_sourcepackagerecipe.py
     216: E231 missing whitespace after ','
     240: E231 missing whitespace after ','
     248: E231 missing whitespace after ','
     255: E231 missing whitespace after ','
     263: E231 missing whitespace after ','
     301: E231 missing whitespace after ','
     361: E231 missing whitespace after ','
     658: Line exceeds 78 characters.
./lib/lp/code/model/sourcepackagerecipebuild.py
      46: E231 missing whitespace after ','
./lib/lp/code/model/sourcepackagerecipe.py
     184: E301 expected 1 blank line, found 0
./lib/lp/code/browser/tests/test_sourcepackagerecipe.py
     243: E231 missing whitespace after ','

To post a comment you must log in.
Revision history for this message
Edwin Grubbs (edwin-grubbs) wrote :

Hi Aaron,

This branch looks good.

-Edwin

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/code/browser/tests/test_sourcepackagerecipe.py'
2--- lib/lp/code/browser/tests/test_sourcepackagerecipe.py 2010-07-26 06:21:45 +0000
3+++ lib/lp/code/browser/tests/test_sourcepackagerecipe.py 2010-07-29 18:36:51 +0000
4@@ -625,7 +625,7 @@
5 # Secret Squirrel is checked by default.
6 self.assertEqual(['Secret Squirrel', 'Woody'], build_distros)
7 self.assertEqual(
8- set([1000]),
9+ set([2505]),
10 set(build.buildqueue_record.lastscore for build in builds))
11
12 def test_request_builds_archive(self):
13@@ -759,7 +759,7 @@
14 my-recipe
15 Build status
16 Needs building
17- Start in .*
18+ Start in .* \\(9876\\) What's this?.*
19 Estimated finish in .*
20 Build details
21 Recipe: Recipe my-recipe for Owner
22
23=== modified file 'lib/lp/code/model/sourcepackagerecipe.py'
24--- lib/lp/code/model/sourcepackagerecipe.py 2010-07-21 14:41:26 +0000
25+++ lib/lp/code/model/sourcepackagerecipe.py 2010-07-29 18:36:51 +0000
26@@ -225,8 +225,9 @@
27 build = getUtility(ISourcePackageRecipeBuildSource).new(distroseries,
28 self, requester, archive)
29 build.queueBuild(build)
30+ queue_record = build.buildqueue_record
31 if manual:
32- build.buildqueue_record.manualScore(1000)
33+ queue_record.manualScore(queue_record.lastscore + 100)
34 return build
35
36 def getBuilds(self, pending=False):
37
38=== modified file 'lib/lp/code/model/sourcepackagerecipebuild.py'
39--- lib/lp/code/model/sourcepackagerecipebuild.py 2010-07-14 09:35:20 +0000
40+++ lib/lp/code/model/sourcepackagerecipebuild.py 2010-07-29 18:36:51 +0000
41@@ -367,4 +367,4 @@
42 return "%s-%s" % (self.id, self.build_id)
43
44 def score(self):
45- return 900
46+ return 2405 + self.build.archive.relative_build_score
47
48=== modified file 'lib/lp/code/model/tests/test_sourcepackagerecipe.py'
49--- lib/lp/code/model/tests/test_sourcepackagerecipe.py 2010-07-22 08:39:05 +0000
50+++ lib/lp/code/model/tests/test_sourcepackagerecipe.py 2010-07-29 18:36:51 +0000
51@@ -265,24 +265,36 @@
52 ppa.owner, distroseries, PackagePublishingPocket.RELEASE)
53
54 def test_requestBuildScore(self):
55- """Normal build requests have a relatively low queue score (900)."""
56+ """Normal build requests have a relatively low queue score (2405)."""
57 recipe = self.factory.makeSourcePackageRecipe()
58 build = recipe.requestBuild(recipe.daily_build_archive,
59 recipe.owner, list(recipe.distroseries)[0],
60 PackagePublishingPocket.RELEASE)
61 queue_record = build.buildqueue_record
62 queue_record.score()
63- self.assertEqual(900, queue_record.lastscore)
64+ self.assertEqual(2405, queue_record.lastscore)
65
66 def test_requestBuildManualScore(self):
67- """Normal build requests have a higher queue score (1000)."""
68+ """Normal build requests have a score equivalent to binary builds."""
69 recipe = self.factory.makeSourcePackageRecipe()
70 build = recipe.requestBuild(recipe.daily_build_archive,
71 recipe.owner, list(recipe.distroseries)[0],
72 PackagePublishingPocket.RELEASE, manual=True)
73 queue_record = build.buildqueue_record
74 queue_record.score()
75- self.assertEqual(1000, queue_record.lastscore)
76+ self.assertEqual(2505, queue_record.lastscore)
77+
78+ def test_requestBuild_relative_build_score(self):
79+ """Offsets for archives are respected."""
80+ recipe = self.factory.makeSourcePackageRecipe()
81+ archive = recipe.daily_build_archive
82+ removeSecurityProxy(archive).relative_build_score = 100
83+ build = recipe.requestBuild(
84+ archive, recipe.owner, list(recipe.distroseries)[0],
85+ PackagePublishingPocket.RELEASE, manual=True)
86+ queue_record = build.buildqueue_record
87+ queue_record.score()
88+ self.assertEqual(2605, queue_record.lastscore)
89
90 def test_requestBuildHonoursConfig(self):
91 recipe = self.factory.makeSourcePackageRecipe()
92
93=== modified file 'lib/lp/code/templates/sourcepackagerecipebuild-index.pt'
94--- lib/lp/code/templates/sourcepackagerecipebuild-index.pt 2010-07-21 10:48:23 +0000
95+++ lib/lp/code/templates/sourcepackagerecipebuild-index.pt 2010-07-29 18:36:51 +0000
96@@ -116,7 +116,10 @@
97 <tal:pending condition="context/buildqueue_record/job/status/enumvalue:WAITING">
98 <li tal:define="eta context/buildqueue_record/getEstimatedJobStartTime">
99 Start <tal:eta
100- replace="eta/fmt:approximatedate">in 3 hours</tal:eta>
101+ replace="eta/fmt:approximatedate">in 3 hours</tal:eta>
102+ (<span tal:replace="context/buildqueue_record/lastscore"/>)
103+ <a href="https://help.launchpad.net/Packaging/BuildScores"
104+ target="_blank">What's this?</a>
105 </li>
106 </tal:pending>
107 </tal:reallypending>