def test_make_request_clone(self): # Compare with test_make_request(). parent = task_request.make_request(_gen_request_data()) # Hack: Would need to know about TaskResultSummary. parent_id = task_pack.pack_request_key(parent.key) + '1' data = _gen_request_data( properties=dict(idempotent=True), parent_task_id=parent_id) request = task_request.make_request_clone(task_request.make_request(data)) # Differences from make_request() are: # - idempotent was reset to False. # - parent_task_id was reset to None. expected_properties = { 'commands': [[u'command1', u'arg1']], 'data': [ # Items were sorted. [u'http://localhost/bar', u'bar.zip'], [u'http://localhost/foo', u'foo.zip'], ], 'dimensions': {u'OS': u'Windows-3.1.1', u'hostname': u'localhost'}, 'env': {u'foo': u'bar', u'joe': u'2'}, 'execution_timeout_secs': 30, 'extra_args': None, 'grace_period_secs': 30, 'idempotent': False, 'io_timeout_secs': None, 'isolated': None, 'isolatedserver': None, 'namespace': None, } # Differences from make_request() are: # - parent_task_id was reset to None. # - tag 'user:'******'authenticated': auth_testing.DEFAULT_MOCKED_IDENTITY, 'name': u'Request name (Retry #1)', 'parent_task_id': None, 'priority': 49, 'properties': expected_properties, 'properties_hash': None, 'tags': [ u'OS:Windows-3.1.1', u'hostname:localhost', u'priority:49', u'tag:1', u'user:[email protected]', ], 'user': u'*****@*****.**', } actual = request.to_dict() # expiration_ts - created_ts == deadline_to_run. created = actual.pop('created_ts') expiration = actual.pop('expiration_ts') self.assertEqual( int(round((expiration - created).total_seconds())), data['scheduling_expiration_secs']) self.assertEqual(expected_request, actual) self.assertEqual( data['scheduling_expiration_secs'], request.scheduling_expiration_secs)
def test_make_request_clone(self): # Compare with test_make_request(). parent = mkreq(_gen_request()) # Hack: Would need to know about TaskResultSummary. parent_id = task_pack.pack_request_key(parent.key) + '1' data = _gen_request( properties=dict(idempotent=True), parent_task_id=parent_id) request = task_request.make_request_clone(mkreq(data)) # Differences from make_request() are: # - idempotent was reset to False. # - parent_task_id was reset to None. expected_properties = { 'command': [u'command1', u'arg1'], 'dimensions': { u'OS': u'Windows-3.1.1', u'hostname': u'localhost', u'pool': u'default', }, 'env': {u'foo': u'bar', u'joe': u'2'}, 'execution_timeout_secs': 30, 'extra_args': [], 'grace_period_secs': 30, 'idempotent': False, 'inputs_ref': None, 'io_timeout_secs': None, 'packages': [{'package_name': 'rm', 'version': PINNED_PACKAGE_VERSION}], } # Differences from make_request() are: # - parent_task_id was reset to None. # - tag 'user:'******'authenticated': auth_testing.DEFAULT_MOCKED_IDENTITY, 'name': u'Request name (Retry #1)', 'parent_task_id': None, 'priority': 49, 'properties': expected_properties, 'properties_hash': None, 'pubsub_topic': None, 'pubsub_userdata': None, 'tags': [ u'OS:Windows-3.1.1', u'hostname:localhost', u'pool:default', u'priority:49', u'tag:1', u'user:[email protected]', ], 'user': u'*****@*****.**', } actual = request.to_dict() # expiration_ts - created_ts == deadline_to_run. actual.pop('created_ts') actual.pop('expiration_ts') self.assertEqual(expected_request, actual) self.assertEqual(30, request.expiration_secs)
def test_make_request_clone(self): # Compare with test_make_request(). parent = task_request.make_request(_gen_request(), True) # Hack: Would need to know about TaskResultSummary. parent_id = task_pack.pack_request_key(parent.key) + "1" data = _gen_request(properties=dict(idempotent=True), parent_task_id=parent_id) request = task_request.make_request_clone(task_request.make_request(data, True)) # Differences from make_request() are: # - idempotent was reset to False. # - parent_task_id was reset to None. expected_properties = { "commands": [[u"command1", u"arg1"]], "data": [ # Items were sorted. [u"http://localhost/bar", u"bar.zip"], [u"http://localhost/foo", u"foo.zip"], ], "dimensions": {u"OS": u"Windows-3.1.1", u"hostname": u"localhost"}, "env": {u"foo": u"bar", u"joe": u"2"}, "execution_timeout_secs": 30, "extra_args": [], "grace_period_secs": 30, "idempotent": False, "inputs_ref": None, "io_timeout_secs": None, } # Differences from make_request() are: # - parent_task_id was reset to None. # - tag 'user:' was replaced # - user was replaced. expected_request = { "authenticated": auth_testing.DEFAULT_MOCKED_IDENTITY, "name": u"Request name (Retry #1)", "parent_task_id": None, "priority": 49, "properties": expected_properties, "properties_hash": None, "pubsub_topic": None, "pubsub_userdata": None, "tags": [u"OS:Windows-3.1.1", u"hostname:localhost", u"priority:49", u"tag:1", u"user:[email protected]"], "user": u"*****@*****.**", } actual = request.to_dict() # expiration_ts - created_ts == deadline_to_run. actual.pop("created_ts") actual.pop("expiration_ts") self.assertEqual(expected_request, actual) self.assertEqual(30, request.expiration_secs)
def post(self, task_id): try: key = task_pack.unpack_result_summary_key(task_id) request_key = task_pack.result_summary_key_to_request_key(key) except ValueError: try: key = task_pack.unpack_run_result_key(task_id) request_key = task_pack.result_summary_key_to_request_key( task_pack.run_result_key_to_result_summary_key(key)) except (NotImplementedError, ValueError): self.abort(404, 'Invalid key format.') # Retrying a task is essentially reusing the same task request as the # original one, but with new parameters. original_request = request_key.get() if not original_request: self.abort(404, 'Invalid request key.') new_request = task_request.make_request_clone(original_request) result_summary = task_scheduler.schedule_request(new_request) self.redirect('/user/task/%s' % result_summary.task_id)
def test_make_request_clone(self): # Compare with test_make_request(). parent = mkreq(_gen_request()) # Hack: Would need to know about TaskResultSummary. parent_id = task_pack.pack_request_key(parent.key) + '1' data = _gen_request(properties=dict(idempotent=True), parent_task_id=parent_id) request = task_request.make_request_clone(mkreq(data)) # Differences from make_request() are: # - idempotent was reset to False. # - parent_task_id was reset to None. expected_properties = { 'command': [u'command1', u'arg1'], 'dimensions': { u'OS': u'Windows-3.1.1', u'hostname': u'localhost', u'pool': u'default', }, 'env': { u'foo': u'bar', u'joe': u'2' }, 'execution_timeout_secs': 30, 'extra_args': [], 'grace_period_secs': 30, 'idempotent': False, 'inputs_ref': None, 'io_timeout_secs': None, 'packages': [{ 'package_name': 'rm', 'version': PINNED_PACKAGE_VERSION }], } # Differences from make_request() are: # - parent_task_id was reset to None. # - tag 'user:'******'authenticated': auth_testing.DEFAULT_MOCKED_IDENTITY, 'name': u'Request name (Retry #1)', 'parent_task_id': None, 'priority': 49, 'properties': expected_properties, 'properties_hash': None, 'pubsub_topic': None, 'pubsub_userdata': None, 'tags': [ u'OS:Windows-3.1.1', u'hostname:localhost', u'pool:default', u'priority:49', u'tag:1', u'user:[email protected]', ], 'user': u'*****@*****.**', } actual = request.to_dict() # expiration_ts - created_ts == deadline_to_run. actual.pop('created_ts') actual.pop('expiration_ts') self.assertEqual(expected_request, actual) self.assertEqual(30, request.expiration_secs)
def test_make_request_clone(self): # Compare with test_make_request(). parent = task_request.make_request(_gen_request_data()) # Hack: Would need to know about TaskResultSummary. parent_id = task_pack.pack_request_key(parent.key) + '1' data = _gen_request_data(properties=dict(idempotent=True), parent_task_id=parent_id) request = task_request.make_request_clone( task_request.make_request(data)) # Differences from make_request() are: # - idempotent was reset to False. # - parent_task_id was reset to None. expected_properties = { 'commands': [[u'command1', u'arg1']], 'data': [ # Items were sorted. [u'http://localhost/bar', u'bar.zip'], [u'http://localhost/foo', u'foo.zip'], ], 'dimensions': { u'OS': u'Windows-3.1.1', u'hostname': u'localhost' }, 'env': { u'foo': u'bar', u'joe': u'2' }, 'execution_timeout_secs': 30, 'grace_period_secs': 30, 'idempotent': False, 'io_timeout_secs': None, } # Differences from make_request() are: # - parent_task_id was reset to None. # - tag 'user:'******'authenticated': auth_testing.DEFAULT_MOCKED_IDENTITY, 'name': u'Request name (Retry #1)', 'parent_task_id': None, 'priority': 49, 'properties': expected_properties, 'properties_hash': None, 'tags': [ u'OS:Windows-3.1.1', u'hostname:localhost', u'priority:49', u'tag:1', u'user:[email protected]', ], 'user': u'*****@*****.**', } actual = request.to_dict() # expiration_ts - created_ts == deadline_to_run. created = actual.pop('created_ts') expiration = actual.pop('expiration_ts') self.assertEqual(int(round((expiration - created).total_seconds())), data['scheduling_expiration_secs']) self.assertEqual(expected_request, actual) self.assertEqual(data['scheduling_expiration_secs'], request.scheduling_expiration_secs)