Fix updating relative priority
This code path was untested and had some typos. Correct them and ensure the path is tested. Change-Id: Ib4a283f739b12295f480684b9b93ad8a60abf350
This commit is contained in:
parent
c996adcb5e
commit
505c32e4b2
|
@ -5149,6 +5149,7 @@ For CI problems and help debugging, contact ci@example.org"""
|
||||||
self.fake_nodepool.unpause()
|
self.fake_nodepool.unpause()
|
||||||
self.waitUntilSettled()
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
@simple_layout('layouts/two-projects-integrated.yaml')
|
||||||
def test_nodepool_relative_priority_check(self):
|
def test_nodepool_relative_priority_check(self):
|
||||||
"Test that nodes are requested at the relative priority"
|
"Test that nodes are requested at the relative priority"
|
||||||
|
|
||||||
|
@ -5182,6 +5183,24 @@ For CI problems and help debugging, contact ci@example.org"""
|
||||||
self.assertEqual(reqs[2]['_oid'], '200-0000000001')
|
self.assertEqual(reqs[2]['_oid'], '200-0000000001')
|
||||||
self.assertEqual(reqs[2]['relative_priority'], 1)
|
self.assertEqual(reqs[2]['relative_priority'], 1)
|
||||||
|
|
||||||
|
# Fulfill only the first request
|
||||||
|
self.fake_nodepool.fulfillRequest(reqs[0])
|
||||||
|
for x in iterate_timeout(30, 'fulfill request'):
|
||||||
|
self.log.debug(len(self.sched.nodepool.requests))
|
||||||
|
if len(self.sched.nodepool.requests) < 3:
|
||||||
|
break
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
reqs = self.fake_nodepool.getNodeRequests()
|
||||||
|
|
||||||
|
# Change B, now first change for project, equal priority.
|
||||||
|
self.assertEqual(reqs[0]['_oid'], '200-0000000001')
|
||||||
|
self.assertEqual(reqs[0]['relative_priority'], 0)
|
||||||
|
|
||||||
|
# Change C, now first change for project1, equal priority.
|
||||||
|
self.assertEqual(reqs[1]['_oid'], '200-0000000002')
|
||||||
|
self.assertEqual(reqs[1]['relative_priority'], 0)
|
||||||
|
|
||||||
self.fake_nodepool.unpause()
|
self.fake_nodepool.unpause()
|
||||||
self.waitUntilSettled()
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,10 @@ class PipelineManager(object):
|
||||||
def getNodePriority(self, item):
|
def getNodePriority(self, item):
|
||||||
items = self.pipeline.getAllItems()
|
items = self.pipeline.getAllItems()
|
||||||
items = [i for i in items if i.change.project == item.change.project]
|
items = [i for i in items if i.change.project == item.change.project]
|
||||||
return items.index(item)
|
for idx, val in enumerate(items):
|
||||||
|
if item == val:
|
||||||
|
return idx
|
||||||
|
return len(items)
|
||||||
|
|
||||||
def isChangeAlreadyInPipeline(self, change):
|
def isChangeAlreadyInPipeline(self, change):
|
||||||
# Checks live items in the pipeline
|
# Checks live items in the pipeline
|
||||||
|
@ -700,7 +703,7 @@ class PipelineManager(object):
|
||||||
priority = item.getNodePriority()
|
priority = item.getNodePriority()
|
||||||
for node_request in item.current_build_set.node_requests.values():
|
for node_request in item.current_build_set.node_requests.values():
|
||||||
if node_request.relative_priority != priority:
|
if node_request.relative_priority != priority:
|
||||||
self.sched.nodepool.reviseNodeRequest(
|
self.sched.nodepool.reviseRequest(
|
||||||
node_request, priority)
|
node_request, priority)
|
||||||
return (changed, nnfi)
|
return (changed, nnfi)
|
||||||
|
|
||||||
|
|
|
@ -217,7 +217,7 @@ class ZooKeeper(object):
|
||||||
:param NodeRequest node_request: The request to update.
|
:param NodeRequest node_request: The request to update.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
path = '%s/%s' % (self.NODE_REQUEST_ROOT, node_request.id)
|
path = '%s/%s' % (self.REQUEST_ROOT, node_request.id)
|
||||||
self.client.set(path, self._dictToStr(node_request.toDict()))
|
self.client.set(path, self._dictToStr(node_request.toDict()))
|
||||||
|
|
||||||
def updateNodeRequest(self, node_request, data=None):
|
def updateNodeRequest(self, node_request, data=None):
|
||||||
|
|
Loading…
Reference in New Issue