Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
  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)
Пример #5
0
  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)
Пример #6
0
 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)
Пример #7
0
 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)