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)
Exemplo n.º 2
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)