def test_full_report_create_and_result(self): # Make the request desired_responses = [{ 'name': 'Edits - test', 'cohort': { 'id': self.cohort.id, 'name': self.cohort.name, }, 'metric': { 'name': 'NamespaceEdits', 'namespaces': [0, 1, 2], 'start_date': '2013-06-01 00:00:00', 'end_date': '2013-09-01 00:00:00', 'individualResults': True, 'aggregateResults': True, 'aggregateSum': True, 'aggregateAverage': True, 'aggregateStandardDeviation': True, }, }] json_to_post = json.dumps(desired_responses) response = self.client.post('/reports/create/', data=dict( responses=json_to_post )) assert_equal(response.status_code, 200) assert_true(response.data.find('isRedirect') >= 0) assert_true(response.data.find('/reports/') >= 0) # Wait a second for the task to get processed time.sleep(1) response = self.client.get('/reports/list/') parsed = json.loads(response.data) result_key = parsed['reports'][-1]['result_key'] task, report = get_celery_task(result_key) assert_true(task is not None) # Get the result directly result = get_celery_task_result(task, report) assert_true(result is not None) # Check the status via get response = self.client.get('/reports/status/{0}'.format(result_key)) assert_true(response.data.find('SUCCESS') >= 0) # Check the csv result response = self.client.get('/reports/result/{0}.csv'.format(result_key)) assert_true(response.data.find('Average') >= 0) # Check the json result response = self.client.get('/reports/result/{0}.json'.format(result_key)) assert_true(response.data.find('Average') >= 0)
def test_full_report_create_and_result(self): # Make the request desired_responses = [{ 'name': 'Edits - test', 'cohort': { 'id': self.test_cohort_id, }, 'metric': { 'name': 'NamespaceEdits', 'namespaces': [0, 1, 2], 'start_date': '2013-06-01', 'end_date': '2013-09-01', 'individualResults': True, 'aggregateResults': True, 'aggregateSum': True, 'aggregateAverage': True, 'aggregateStandardDeviation': True, }, }] json_to_post = json.dumps(desired_responses) response = self.app.post('/reports/create/', data=dict(responses=json_to_post)) assert_equal(response.status_code, 200) assert_true(response.data.find('isRedirect') >= 0) assert_true(response.data.find('/reports/') >= 0) # Wait a second for the task to get processed time.sleep(1) # Check that the task has been created response = self.app.get('/reports/list/') parsed = json.loads(response.data) result_key = parsed['reports'][-1]['result_key'] task, report = get_celery_task(result_key) assert_true(task is not None) # Get the result directly result = get_celery_task_result(task, report) assert_true(result is not None) # Check the status via get response = self.app.get('/reports/status/{0}'.format(result_key)) assert_true(response.data.find('SUCCESS') >= 0) # Check the csv result response = self.app.get('/reports/result/{0}.csv'.format(result_key)) assert_true(response.data.find('Average') >= 0) # Check the json result response = self.app.get('/reports/result/{0}.json'.format(result_key)) assert_true(response.data.find('Average') >= 0) # Purposefully change the report status to make sure update_status works report.status = celery.states.STARTED self.session.add(report) self.session.commit() report_new = self.session.query(PersistentReport).get(report.id) self.session.expunge(report_new) report_new.update_status() assert_equal(report_new.status, celery.states.SUCCESS) # Change this report to look like the old style, to test that still works # TODO: delete this test on October 1st report.result_key = report.queue_result_key self.session.commit() result = get_celery_task_result(task, report) assert_true(result is not None)
def test_get_celery_task_result_when_empty(self): mock_task = MockTask(False) mock_report = MockReport() failure = get_celery_task_result(mock_task, mock_report) assert_true(failure['failure'], 'result not available')
def test_full_report_create_and_result(self): # Make the request desired_responses = [{ 'name': 'Edits - test', 'cohort': { 'id': self.test_cohort_id, }, 'metric': { 'name': 'NamespaceEdits', 'namespaces': [0, 1, 2], 'start_date': '2013-06-01', 'end_date': '2013-09-01', 'individualResults': True, 'aggregateResults': True, 'aggregateSum': True, 'aggregateAverage': True, 'aggregateStandardDeviation': True, }, }] json_to_post = json.dumps(desired_responses) response = self.app.post('/reports/create/', data=dict( responses=json_to_post )) assert_equal(response.status_code, 200) assert_true(response.data.find('isRedirect') >= 0) assert_true(response.data.find('/reports/') >= 0) # Wait a second for the task to get processed time.sleep(1) # Check that the task has been created response = self.app.get('/reports/list/') parsed = json.loads(response.data) result_key = parsed['reports'][-1]['result_key'] task, report = get_celery_task(result_key) assert_true(task is not None) # Get the result directly result = get_celery_task_result(task, report) assert_true(result is not None) # Check the status via get response = self.app.get('/reports/status/{0}'.format(result_key)) assert_true(response.data.find('SUCCESS') >= 0) # Check the csv result response = self.app.get('/reports/result/{0}.csv'.format(result_key)) assert_true(response.data.find('Average') >= 0) # Check the json result response = self.app.get('/reports/result/{0}.json'.format(result_key)) assert_true(response.data.find('Average') >= 0) # Purposefully change the report status to make sure update_status works report.status = celery.states.STARTED self.session.add(report) self.session.commit() report_new = self.session.query(PersistentReport).get(report.id) self.session.expunge(report_new) report_new.update_status() assert_equal(report_new.status, celery.states.SUCCESS) # Change this report to look like the old style, to test that still works # TODO: delete this test on October 1st report.result_key = report.queue_result_key self.session.commit() result = get_celery_task_result(task, report) assert_true(result is not None)