def test_http_matches_local(self): # Test that local and http submission produce identical results from sigasync import views oldview = views.get_spoolqueue httpqueue = MockSpoolQueue() views.get_spoolqueue = httpqueue from sigasync import sigasync_handler oldhandler = sigasync_handler.get_spoolqueue person = Person() try: send_async(print_handler, 'test_http', sender=Person, instance=person, created=True) localqueue = MockSpoolQueue() sigasync_handler.get_spoolqueue = localqueue send_async(print_handler, 'test', sender=Person, instance=person, created=True) httpdata = httpqueue.spoolqueue[-1].data localdata = localqueue.spoolqueue[-1].data # remove legitimate differences httpdata['spooler'] = 'test' httpdata['create_time'] = 0 localdata['create_time'] = 0 try: assert httpdata == localdata except AssertionError: pprint.pprint(httpdata) pprint.pprint(localdata) raise finally: views.get_spoolqueue = oldview sigasync_handler.get_spoolqueue = oldhandler
def test_list_submission_in_kwargs(self): person = Person() from sigasync import views oldview = views.get_spoolqueue spoolqueue = MockSpoolQueue() views.get_spoolqueue = spoolqueue try: send_async(print_handler, 'test_http', Person, instance=person, contacts_id=[1,2,3,4]) expected_data = simplejson.loads('{"contacts_id": [1, 2, 3, 4]}') data = simplejson.loads(spoolqueue.spoolqueue[-1].data['kwargs']) assert expected_data['contacts_id'] == data['contacts_id'] finally: views.get_spoolqueue = oldview
def test_view_params(self): data = {} def testview(request, spooler): data.update({ 'spooler': spooler, 'data': request.POST.copy(), }) from django.http import HttpResponse return HttpResponse('OK') person = Person() with URLOverride((r'^spooler/(?P<spooler>.+)/$', testview)): send_async(pass_handler, 'test_http', sender=Person, instance=person, created=True) assert data['spooler'] == 'test_http' assert data['data']['instance'] == str(person.id)
def test_affinity_passed_to_spooler(self): logger = logging.getLogger( 'sigasync.tests.test_affinity_passed_to_spooler') from django.db import connection if not hasattr(connection, 'mapper'): logger.warning('MDB backend required for affinity test') return # Set regular affinity table = 'test1230487' connection.mapper._set_affinity(table) assert connection.mapper._has_affinity(table) # Run a spool job send_async(check_affinity, 'test', sender=None, table=table) # Wait for it to finish # This will raise an error if the job fails self.wait_for_job()
def test_submitted_datum(self): person = Person() from sigasync import views oldview = views.get_spoolqueue spoolqueue = MockSpoolQueue() views.get_spoolqueue = spoolqueue try: send_async(print_handler, 'test_http', sender=Person, instance=person, created=True) assert len(spoolqueue.spoolqueue) == 1 sq = spoolqueue.spoolqueue[-1] assert sq.spooler == 'test_http' assert sq.data['func_name'] == 'print_handler' assert sq.data['func_module'] == 'sigasync.tests' assert sq.data['sender'] == 'webapp__Person' assert sq.data['instance'] == str(person.id) assert sq.data['kwargs'] == '{"created": true}' except AssertionError, err: try: print "Data:" pprint.pprint(spoolqueue.spoolqueue[-1].data) except: pass raise err
def helper(): send_async(pass_handler, 'test', sender=Person, instance=person) assert not hasattr(spoolqueue, 'spoolqueue') transaction.commit() assert len(spoolqueue.spoolqueue) == 1 send_async(pass_handler, 'test_http', sender=Person, instance=person) transaction.commit() assert len(spoolqueue.spoolqueue) == 2 send_async(pass_handler, 'test', sender=Person, instance=person) transaction.rollback() transaction.commit() assert len(spoolqueue.spoolqueue) == 2 send_async(pass_handler, 'test', sender=Person, instance=person)