def test_run_twice(self): self.setUpContext() self.context.dispatch('ok', self.obj) self.assertEqual(1, ResultModel.get_by_key_name('test').total) self.assertEqual(2, _FantasmTaskSemaphore.all().count()) self.setUpContext(retryCount=1) # assumes retry count is set correctly self.context.dispatch('ok', self.obj) self.assertEqual(1, ResultModel.get_by_key_name('test').total) self.assertEqual(2, _FantasmTaskSemaphore.all().count())
def test_writeRunOnceSemaphore(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all(namespace='').count()) success, payload = sem.writeRunOnceSemaphore('payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all(namespace='').count()) self.assertEqual('payload', _FantasmTaskSemaphore.all(namespace='').get().payload)
def test_writeRunOnceSemaphore(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all().count()) success, payload = sem.writeRunOnceSemaphore( 'payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual('payload', _FantasmTaskSemaphore.all().get().payload)
def test(self): self.context.initialize() # queues the first task self.assertEqual(0, _FantasmTaskSemaphore.all().count()) self.assertEqual(0, SimpleModel.all().count()) tq = apiproxy_stub_map.apiproxy.GetStub('taskqueue') tasks = tq.GetTasks('default') runQueuedTasks(tasksOverride=tasks) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual(1, SimpleModel.all().count()) runQueuedTasks(tasksOverride=tasks) logging.info([e.key().name() for e in _FantasmTaskSemaphore.all().fetch(100)]) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual(1, SimpleModel.all().count())
def test(self): self.context.initialize() # queues the first task self.assertEqual(0, _FantasmTaskSemaphore.all().count()) self.assertEqual(0, SimpleModel.all().count()) tq = apiproxy_stub_map.apiproxy.GetStub('taskqueue') tasks = tq.GetTasks('default') runQueuedTasks(tasksOverride=tasks) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual(1, SimpleModel.all().count()) runQueuedTasks(tasksOverride=tasks) logging.info( [e.key().name() for e in _FantasmTaskSemaphore.all().fetch(100)]) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual(1, SimpleModel.all().count())
def test_writeRunOnceSemaphore_second_time_False_memcache_expired(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all().count()) success, payload = sem.writeRunOnceSemaphore('payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual('payload', _FantasmTaskSemaphore.all().get().payload) memcache.delete('foo') success, payload = sem.writeRunOnceSemaphore('payload', transactional=self.TRANSACTIONAL) self.assertFalse(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual('payload', _FantasmTaskSemaphore.all().get().payload)
def test_writeRunOnceSemaphore_second_time_wrong_payload_memcache(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all().count()) success, payload = sem.writeRunOnceSemaphore('payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual('payload', _FantasmTaskSemaphore.all().get().payload) memcache.set('foo', 'bar') success, payload = sem.writeRunOnceSemaphore('payload', transactional=self.TRANSACTIONAL) self.assertEqual(["Run-once semaphore memcache payload write error."], self.loggingDouble.messages['critical']) self.assertFalse(success) self.assertEqual('bar', payload) self.assertEqual('bar', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual('payload', _FantasmTaskSemaphore.all().get().payload)
def test_writeRunOnceSemaphore_second_time_wrong_payload_memcache(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all().count()) success, payload = sem.writeRunOnceSemaphore( 'payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual('payload', _FantasmTaskSemaphore.all().get().payload) memcache.set('foo', 'bar') success, payload = sem.writeRunOnceSemaphore( 'payload', transactional=self.TRANSACTIONAL) self.assertEqual(["Run-once semaphore memcache payload write error."], self.loggingDouble.messages['critical']) self.assertFalse(success) self.assertEqual('bar', payload) self.assertEqual('bar', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all().count()) self.assertEqual('payload', _FantasmTaskSemaphore.all().get().payload)
def test_writeRunOnceSemaphore_second_time_False_memcache_expired(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all(namespace='').count()) success, payload = sem.writeRunOnceSemaphore( 'payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all(namespace='').count()) self.assertEqual('payload', _FantasmTaskSemaphore.all(namespace='').get().payload) memcache.delete('foo') success, payload = sem.writeRunOnceSemaphore( 'payload', transactional=self.TRANSACTIONAL) self.assertFalse(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all(namespace='').count()) self.assertEqual('payload', _FantasmTaskSemaphore.all(namespace='').get().payload)
def test_writeRunOnceSemaphore_second_time_wrong_payload_datastore(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all(namespace='').count()) success, payload = sem.writeRunOnceSemaphore( 'payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all(namespace='').count()) self.assertEqual('payload', _FantasmTaskSemaphore.all(namespace='').get().payload) e = _FantasmTaskSemaphore.all(namespace='').get() e.payload = 'bar' e.put() memcache.delete('foo') success, payload = sem.writeRunOnceSemaphore( 'payload', transactional=self.TRANSACTIONAL) self.assertEqual(1, len(self.loggingDouble.messages['critical'])) self.assertTrue(self.loggingDouble.messages['critical'][0]\ .startswith("Run-once semaphore datastore payload write error.")) self.assertFalse(success) self.assertEqual('bar', payload) self.assertEqual('bar', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all(namespace='').count()) self.assertEqual('bar', _FantasmTaskSemaphore.all(namespace='').get().payload)
def test_writeRunOnceSemaphore_second_time_wrong_payload_datastore(self): sem = RunOnceSemaphore('foo', None) self.assertEqual(None, memcache.get('foo')) self.assertEqual(0, _FantasmTaskSemaphore.all(namespace='').count()) success, payload = sem.writeRunOnceSemaphore('payload', transactional=self.TRANSACTIONAL) self.assertTrue(success) self.assertEqual('payload', payload) self.assertEqual('payload', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all(namespace='').count()) self.assertEqual('payload', _FantasmTaskSemaphore.all(namespace='').get().payload) e = _FantasmTaskSemaphore.all(namespace='').get() e.payload = 'bar' e.put() memcache.delete('foo') success, payload = sem.writeRunOnceSemaphore('payload', transactional=self.TRANSACTIONAL) self.assertEqual(1, len(self.loggingDouble.messages['critical'])) self.assertTrue(self.loggingDouble.messages['critical'][0]\ .startswith("Run-once semaphore datastore payload write error.")) self.assertFalse(success) self.assertEqual('bar', payload) self.assertEqual('bar', memcache.get('foo')) self.assertEqual(1, _FantasmTaskSemaphore.all(namespace='').count()) self.assertEqual('bar', _FantasmTaskSemaphore.all(namespace='').get().payload)