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)
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)
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)
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)