Beispiel #1
0
  def testNoNamespaces(self):
    """Test default namespace case only."""
    TestEntity().put()

    jobs = utils.RunMapForKinds(
        self.operation,
        [TestEntity.kind()],
        'Test job for %(kind)s%(namespace)s',
        '__main__.foo',
        self.reader_class_spec,
        {'test_param': 1})
    testutil.execute_all_tasks(self.taskqueue)

    self.assertEquals(1, len(jobs))
    job = jobs[0]
    state = model.MapreduceState.get_by_job_id(job)
    self.assertTrue(state)

    spec = state.mapreduce_spec
    self.assertTrue(spec)
    self.assertEquals("Test job for TestEntity", spec.name)
    mapper = spec.mapper
    self.assertTrue(mapper)
    self.assertEquals({'test_param': 1,
                       'entity_kind': TestEntity.kind()},
                      mapper.params)
    self.assertEquals('__main__.foo', mapper.handler_spec)
    self.assertEquals(self.reader_class_spec, mapper.input_reader_spec)
Beispiel #2
0
  def testSuccessfulJob(self):
    """Verify that with appropriate request parameters form is constructed."""
    TestEntity().put()
    admin_operation = utils.StartOperation("Test Operation")
    self.mapreduce_id = utils.StartMap(
        admin_operation,
        'test_job',
        '__main__.foo',
        ('google.appengine.ext.mapreduce.input_readers.'
         'DatastoreKeyInputReader'),
        {'entity_kind': 'TestEntity'})
    testutil.execute_all_tasks(self.taskqueue)
    self.assertObjectsExist()

    testutil.execute_until_empty(self.taskqueue)

    self.handler.request.headers['Mapreduce-Id'] = self.mapreduce_id
    self.handler.post()

    self.assertIsNone(model.MapreduceState.get_by_key_name(self.mapreduce_id))
    self.assertListEqual(
        [],
        model.ShardState.find_by_mapreduce_id(self.mapreduce_id))
    admin_operation = admin_operation.get(admin_operation.key())
    self.assertEqual(0, admin_operation.active_jobs)
    self.assertEqual(1, admin_operation.completed_jobs)
    self.assertEqual('Completed', admin_operation.status)
Beispiel #3
0
  def testProcessNamespace(self):
    """Test ProcessNamespace function."""
    namespace_manager.set_namespace("1")
    TestEntity().put()
    namespace_manager.set_namespace(None)

    namespaces_jobs = utils.RunMapForKinds(
        self.operation,
        [TestEntity.kind()],
        'Test job for %(kind)s%(namespace)s',
        '__main__.foo',
        self.reader_class_spec,
        {'test_param': 1})
    testutil.execute_all_tasks(self.taskqueue)

    m = mox.Mox()
    m.StubOutWithMock(context, "get", use_mock_anything=True)

    ctx = context.Context(
        model.MapreduceState.get_by_job_id(namespaces_jobs[0]).mapreduce_spec,
        None)
    context.get().AndReturn(ctx)
    context.get().AndReturn(ctx)

    m.ReplayAll()
    try:
      jobs = utils.ProcessNamespace('1')
      jobs.extend(utils.ProcessNamespace('1'))
      m.VerifyAll()
    finally:
      m.UnsetStubs()
    testutil.execute_all_tasks(self.taskqueue)

    self.assertEquals(1, len(jobs))
    job = jobs[0]
    state = model.MapreduceState.get_by_job_id(job)
    self.assertTrue(state)

    spec = state.mapreduce_spec
    self.assertTrue(spec)
    self.assertEquals("Test job for TestEntity in namespace 1", spec.name)
    mapper = spec.mapper
    self.assertTrue(mapper)
    self.assertEquals({'test_param': 1,
                       'entity_kind': TestEntity.kind(),
                       'namespaces': '1'},
                      mapper.params)
    self.assertEquals('__main__.foo', mapper.handler_spec)
    self.assertEquals(self.reader_class_spec, mapper.input_reader_spec)
Beispiel #4
0
  def testNamespaces(self):
    """Test non-default namespaces present."""
    namespace_manager.set_namespace("1")
    TestEntity().put()
    namespace_manager.set_namespace(None)

    jobs = utils.RunMapForKinds(
        self.operation,
        [TestEntity.kind()],
        'Test job for %(kind)s%(namespace)s',
        '__main__.foo',
        self.reader_class_spec,
        {'test_param': 1})
    testutil.execute_all_tasks(self.taskqueue)

    self.assertEquals(1, len(jobs))
    job = jobs[0]
    state = model.MapreduceState.get_by_job_id(job)
    self.assertTrue(state)

    spec = state.mapreduce_spec
    self.assertTrue(spec)
    self.assertEquals('Test job for TestEntity: discovering namespaces',
                      spec.name)
    mapper = spec.mapper
    self.assertTrue(mapper)
    self.assertEquals({'entity_kind': '__namespace__'},
                      mapper.params)
    self.assertEquals(utils.__name__ + "." + utils.ProcessNamespace.__name__,
                      mapper.handler_spec)
    self.assertEquals(
        'google.appengine.ext.mapreduce.input_readers.NamespaceInputReader',
        mapper.input_reader_spec)
    self.assertEquals({'kinds': [TestEntity.kind()],
                       'reader_spec': self.reader_class_spec,
                       'datastore_admin_operation': str(self.operation.key()),
                       'mapper_params': {'test_param': 1},
                       'handler_spec': '__main__.foo',
                       'done_callback': '/_ah/datastore_admin/mapreduce_done',
                       'job_name': 'Test job for %(kind)s%(namespace)s',
                       },
                      spec.params)