Example #1
0
 def test_failure_scheduled(self):
     """
     Scheduled queries that fail have their failure recorded.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info",
                     {'routing_key': 'test'})
     q = self.factory.create_query(query_text="SELECT 1, 2", schedule=300)
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.exception = ValueError("broken")
         execute_query("SELECT 1, 2", self.factory.data_source.id, {}, scheduled_query_id=q.id)
         self.assertEqual(q.schedule_failures, 1)
         execute_query("SELECT 1, 2", self.factory.data_source.id, {}, scheduled_query_id=q.id)
         q = models.Query.get_by_id(q.id)
         self.assertEqual(q.schedule_failures, 2)
Example #2
0
 def test_failure_scheduled(self):
     """
     Scheduled queries that fail have their failure recorded.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info",
                     {'routing_key': 'test'})
     q = self.factory.create_query(query_text="SELECT 1, 2", schedule=300)
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.exception = ValueError("broken")
         execute_query("SELECT 1, 2",
                       self.factory.data_source.id, {},
                       scheduled_query_id=q.id)
         self.assertEqual(q.schedule_failures, 1)
         execute_query("SELECT 1, 2",
                       self.factory.data_source.id, {},
                       scheduled_query_id=q.id)
         q = models.Query.get_by_id(q.id)
         self.assertEqual(q.schedule_failures, 2)
Example #3
0
 def test_success(self):
     """
     ``execute_query`` invokes the query runner and stores a query result.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info", {'routing_key': 'test'})
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.return_value = ([1, 2], None)
         result_id = execute_query("SELECT 1, 2", self.factory.data_source.id, {})
         self.assertEqual(1, qr.call_count)
         result = models.QueryResult.query.get(result_id)
         self.assertEqual(result.data, '{1,2}')
Example #4
0
 def test_success(self):
     """
     ``execute_query`` invokes the query runner and stores a query result.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info", {'routing_key': 'test'})
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.return_value = ([1, 2], None)
         result_id = execute_query("SELECT 1, 2", self.factory.data_source.id, {})
         self.assertEqual(1, qr.call_count)
         result = models.QueryResult.query.get(result_id)
         self.assertEqual(result.data, '{1,2}')
Example #5
0
 def test_success_after_failure(self):
     """
     Query execution success resets the failure counter.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info",
                     {'routing_key': 'test'})
     q = self.factory.create_query(query_text="SELECT 1, 2", schedule=300)
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.exception = ValueError("broken")
         execute_query("SELECT 1, 2",
                       self.factory.data_source.id, {},
                       scheduled_query_id=q.id)
         models.db.session.refresh(q)
         self.assertEqual(q.schedule_failures, 1)
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.return_value = ([1, 2], None)
         execute_query("SELECT 1, 2",
                       self.factory.data_source.id, {},
                       scheduled_query_id=q.id)
         models.db.session.refresh(q)
         self.assertEqual(q.schedule_failures, 0)
Example #6
0
 def test_success_after_failure(self):
     """
     Query execution success resets the failure counter.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info",
                     {'routing_key': 'test'})
     q = self.factory.create_query(query_text="SELECT 1, 2", schedule=300)
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.exception = ValueError("broken")
         execute_query("SELECT 1, 2",
                       self.factory.data_source.id, {},
                       scheduled_query_id=q.id)
         models.db.session.refresh(q)
         self.assertEqual(q.schedule_failures, 1)
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.return_value = ([1, 2], None)
         execute_query("SELECT 1, 2",
                       self.factory.data_source.id, {},
                       scheduled_query_id=q.id)
         models.db.session.refresh(q)
         self.assertEqual(q.schedule_failures, 0)
Example #7
0
    def test_success_after_failure(self):
        """
        Query execution success resets the failure counter.
        """
        cm = mock.patch("celery.app.task.Context.delivery_info",
                        {'routing_key': 'test'})
        q = self.factory.create_query(query_text="SELECT 1, 2", schedule={"interval": 300})
        with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
            qr.side_effect = ValueError("broken")
            with self.assertRaises(QueryExecutionError):
                execute_query("SELECT 1, 2",
                              self.factory.data_source.id, {},
                              scheduled_query_id=q.id)
            q = models.Query.get_by_id(q.id)
            self.assertEqual(q.schedule_failures, 1)

        with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
            qr.return_value = ([1, 2], None)
            execute_query("SELECT 1, 2",
                          self.factory.data_source.id, {},
                          scheduled_query_id=q.id)
            q = models.Query.get_by_id(q.id)
            self.assertEqual(q.schedule_failures, 0)
Example #8
0
    def test_success_after_failure(self):
        """
        Query execution success resets the failure counter.
        """
        cm = mock.patch("celery.app.task.Context.delivery_info",
                        {'routing_key': 'test'})
        q = self.factory.create_query(query_text="SELECT 1, 2", schedule={"interval": 300})
        with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
            qr.side_effect = ValueError("broken")
            with self.assertRaises(QueryExecutionError):
                execute_query("SELECT 1, 2",
                              self.factory.data_source.id, {},
                              scheduled_query_id=q.id)
            q = models.Query.get_by_id(q.id)
            self.assertEqual(q.schedule_failures, 1)

        with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
            qr.return_value = ([1, 2], None)
            execute_query("SELECT 1, 2",
                          self.factory.data_source.id, {},
                          scheduled_query_id=q.id)
            q = models.Query.get_by_id(q.id)
            self.assertEqual(q.schedule_failures, 0)
Example #9
0
 def test_success_scheduled(self):
     """
     Scheduled queries remember their latest results.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info",
                     {'routing_key': 'test'})
     q = self.factory.create_query(query_text="SELECT 1, 2", schedule=300)
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.return_value = ([1, 2], None)
         result_id = execute_query("SELECT 1, 2",
                                   self.factory.data_source.id, {},
                                   scheduled_query_id=q.id)
         q = models.Query.get_by_id(q.id)
         self.assertEqual(q.schedule_failures, 0)
         result = models.QueryResult.query.get(result_id)
         self.assertEqual(q.latest_query_data, result)
Example #10
0
 def test_success_scheduled(self):
     """
     Scheduled queries remember their latest results.
     """
     cm = mock.patch("celery.app.task.Context.delivery_info",
                     {'routing_key': 'test'})
     q = self.factory.create_query(query_text="SELECT 1, 2", schedule={"interval": 300})
     with cm, mock.patch.object(PostgreSQL, "run_query") as qr:
         qr.return_value = ([1, 2], None)
         result_id = execute_query(
             "SELECT 1, 2",
             self.factory.data_source.id, {},
             scheduled_query_id=q.id)
         q = models.Query.get_by_id(q.id)
         self.assertEqual(q.schedule_failures, 0)
         result = models.QueryResult.query.get(result_id)
         self.assertEqual(q.latest_query_data, result)