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

Side by Side Diff: appengine/swarming/server/task_queues_test.py

Issue 2926713004: Add support for repeated keys in TaskRequest. (Closed)
Patch Set: rebase Created 3 years, 6 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 | « appengine/swarming/server/task_queues.py ('k') | appengine/swarming/server/task_request.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 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2017 The LUCI Authors. All rights reserved. 2 # Copyright 2017 The LUCI Authors. All rights reserved.
3 # Use of this source code is governed under the Apache License, Version 2.0 3 # Use of this source code is governed under the Apache License, Version 2.0
4 # that can be found in the LICENSE file. 4 # that can be found in the LICENSE file.
5 5
6 import datetime 6 import datetime
7 import hashlib 7 import hashlib
8 import logging 8 import logging
9 import os 9 import os
10 import sys 10 import sys
(...skipping 28 matching lines...) Expand all
39 bot_management.bot_event( 39 bot_management.bot_event(
40 'bot_connected', u'bot1', '1.2.3.4', 'bot1', bot_dimensions, {}, 40 'bot_connected', u'bot1', '1.2.3.4', 'bot1', bot_dimensions, {},
41 '1234', False, None, None) 41 '1234', False, None, None)
42 task_queues.assert_bot(bot_dimensions) 42 task_queues.assert_bot(bot_dimensions)
43 43
44 44
45 def _gen_request(properties=None): 45 def _gen_request(properties=None):
46 """Creates a TaskRequest that expires in 24h.""" 46 """Creates a TaskRequest that expires in 24h."""
47 props = { 47 props = {
48 'command': [u'command1'], 48 'command': [u'command1'],
49 'dimensions': { 49 'dimensions_flat': [
50 u'cpu': u'x86-64', 50 u'cpu:x86-64',
51 u'os': u'Ubuntu-16.04', 51 u'os:Ubuntu-16.04',
52 u'pool': u'default', 52 u'pool:default',
53 }, 53 ],
54 'env': {}, 54 'env': {},
55 'execution_timeout_secs': 24*60*60, 55 'execution_timeout_secs': 24*60*60,
56 'io_timeout_secs': None, 56 'io_timeout_secs': None,
57 } 57 }
58 props.update(properties or {}) 58 props.update(properties or {})
59 props['dimensions_dict'] = props.pop('dimensions')
60 now = utils.utcnow() 59 now = utils.utcnow()
61 args = { 60 args = {
62 'created_ts': now, 61 'created_ts': now,
63 'name': 'Request name', 62 'name': 'Request name',
64 'priority': 50, 63 'priority': 50,
65 'properties': task_request.TaskProperties(**props), 64 'properties': task_request.TaskProperties(**props),
66 'expiration_ts': now + datetime.timedelta(seconds=60), 65 'expiration_ts': now + datetime.timedelta(seconds=60),
67 'tags': [u'tag:1'], 66 'tags': [u'tag:1'],
68 'user': 'Jesus', 67 'user': 'Jesus',
69 } 68 }
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 _assert_bot() 230 _assert_bot()
232 self.assert_count(1, task_queues.BotDimensions) 231 self.assert_count(1, task_queues.BotDimensions)
233 self.assert_count(1, task_queues.BotTaskDimensions) 232 self.assert_count(1, task_queues.BotTaskDimensions)
234 self.assert_count(1, task_queues.TaskDimensions) 233 self.assert_count(1, task_queues.TaskDimensions)
235 self.assertEqual([2980491642], task_queues.get_queues(u'bot1')) 234 self.assertEqual([2980491642], task_queues.get_queues(u'bot1'))
236 235
237 def test_assert_bot_then_task_with_id(self): 236 def test_assert_bot_then_task_with_id(self):
238 # Assert a task that includes an 'id' dimension. No task queue is triggered 237 # Assert a task that includes an 'id' dimension. No task queue is triggered
239 # in this case, rebuild_task_cache() is called inlined. 238 # in this case, rebuild_task_cache() is called inlined.
240 _assert_bot() 239 _assert_bot()
241 request = _gen_request(properties={u'dimensions': {u'id': u'bot1'}}) 240 request = _gen_request(properties={u'dimensions_flat': [u'id:bot1']})
242 task_request.init_new_request(request, True, None) 241 task_request.init_new_request(request, True, None)
243 task_queues.assert_task(request) 242 task_queues.assert_task(request)
244 self.assertEqual(0, self.execute_tasks()) 243 self.assertEqual(0, self.execute_tasks())
245 self.assert_count(1, bot_management.BotInfo) 244 self.assert_count(1, bot_management.BotInfo)
246 self.assert_count(1, task_queues.BotDimensions) 245 self.assert_count(1, task_queues.BotDimensions)
247 self.assert_count(1, task_queues.BotTaskDimensions) 246 self.assert_count(1, task_queues.BotTaskDimensions)
248 self.assert_count(1, task_queues.TaskDimensions) 247 self.assert_count(1, task_queues.TaskDimensions)
249 248
250 def test_cleanup_after_bot(self): 249 def test_cleanup_after_bot(self):
251 _assert_bot() 250 _assert_bot()
(...skipping 29 matching lines...) Expand all
281 280
282 # TaskDimension expired. The fact that the bot changed dimensions after an 281 # TaskDimension expired. The fact that the bot changed dimensions after an
283 # hour didn't impact BotTaskDimensions expiration. 282 # hour didn't impact BotTaskDimensions expiration.
284 self.mock_now(now, exp.total_seconds() + 1) 283 self.mock_now(now, exp.total_seconds() + 1)
285 _assert_bot() 284 _assert_bot()
286 self.assert_count(1, task_queues.BotTaskDimensions) 285 self.assert_count(1, task_queues.BotTaskDimensions)
287 self.assert_count(1, task_queues.TaskDimensions) 286 self.assert_count(1, task_queues.TaskDimensions)
288 self.assertEqual([], task_queues.get_queues(u'bot1')) 287 self.assertEqual([], task_queues.get_queues(u'bot1'))
289 288
290 def test_hash_dimensions(self): 289 def test_hash_dimensions(self):
291 with self.assertRaises(AttributeError): 290 with self.assertRaises(AssertionError):
292 task_queues.hash_dimensions('this is not json') 291 task_queues.hash_dimensions('this is not json')
293 # Assert it doesn't return 0. 292 # Assert it doesn't return 0.
294 self.assertEqual(3649838548, task_queues.hash_dimensions({})) 293 self.assertEqual(3649838548, task_queues.hash_dimensions([]))
295 294
296 def test_tidy_stale(self): 295 def test_tidy_stale(self):
297 now = datetime.datetime(2010, 1, 2, 3, 4, 5) 296 now = datetime.datetime(2010, 1, 2, 3, 4, 5)
298 self.mock_now(now) 297 self.mock_now(now)
299 _assert_bot() 298 _assert_bot()
300 request = self._assert_task() 299 request = self._assert_task()
301 exp = (request.expiration_ts-request.created_ts) + task_queues._ADVANCE 300 exp = (request.expiration_ts-request.created_ts) + task_queues._ADVANCE
302 self.assert_count(1, task_queues.BotTaskDimensions) 301 self.assert_count(1, task_queues.BotTaskDimensions)
303 self.assert_count(1, task_queues.TaskDimensions) 302 self.assert_count(1, task_queues.TaskDimensions)
304 self.assertEqual([2980491642], task_queues.get_queues(u'bot1')) 303 self.assertEqual([2980491642], task_queues.get_queues(u'bot1'))
(...skipping 18 matching lines...) Expand all
323 self.assert_count(0, task_queues.TaskDimensions) 322 self.assert_count(0, task_queues.TaskDimensions)
324 self.assertEqual([], task_queues.get_queues(u'bot1')) 323 self.assertEqual([], task_queues.get_queues(u'bot1'))
325 324
326 325
327 if __name__ == '__main__': 326 if __name__ == '__main__':
328 if '-v' in sys.argv: 327 if '-v' in sys.argv:
329 unittest.TestCase.maxDiff = None 328 unittest.TestCase.maxDiff = None
330 logging.basicConfig( 329 logging.basicConfig(
331 level=logging.DEBUG if '-v' in sys.argv else logging.ERROR) 330 level=logging.DEBUG if '-v' in sys.argv else logging.ERROR)
332 unittest.main() 331 unittest.main()
OLDNEW
« no previous file with comments | « appengine/swarming/server/task_queues.py ('k') | appengine/swarming/server/task_request.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698