コード例 #1
0
    def test_read_with_empty_metadata(self):
        ts = pendulum.now()
        logs, metadatas = self.es_task_handler.read(self.ti, 1, {})
        self.assertEqual(1, len(logs))
        self.assertEqual(len(logs), len(metadatas))
        self.assertEqual(self.test_message, logs[0])
        self.assertFalse(metadatas[0]['end_of_log'])
        # offset should be initialized to 0 if not provided.
        self.assertEqual(1, metadatas[0]['offset'])
        # last_log_timestamp will be initialized using log reading time
        # if not last_log_timestamp is provided.
        self.assertTrue(
            timezone.parse(metadatas[0]['last_log_timestamp']) > ts)

        # case where offset is missing but metadata not empty.
        self.es.delete(index=self.index_name, doc_type=self.doc_type, id=1)
        logs, metadatas = self.es_task_handler.read(self.ti, 1,
                                                    {'end_of_log': False})
        self.assertEqual(1, len(logs))
        self.assertEqual(len(logs), len(metadatas))
        self.assertEqual([''], logs)
        self.assertFalse(metadatas[0]['end_of_log'])
        # offset should be initialized to 0 if not provided.
        self.assertEqual(0, metadatas[0]['offset'])
        # last_log_timestamp will be initialized using log reading time
        # if not last_log_timestamp is provided.
        self.assertTrue(
            timezone.parse(metadatas[0]['last_log_timestamp']) > ts)
コード例 #2
0
 def test_read_with_none_meatadata(self):
     logs, metadatas = self.es_task_handler.read(self.ti, 1)
     self.assertEqual(1, len(logs))
     self.assertEqual(len(logs), len(metadatas))
     self.assertEqual(self.test_message, logs[0])
     self.assertFalse(metadatas[0]['end_of_log'])
     self.assertEqual(1, metadatas[0]['offset'])
     self.assertTrue(
         timezone.parse(metadatas[0]['last_log_timestamp']) <
         pendulum.now())
コード例 #3
0
 def test_read(self):
     ts = pendulum.now()
     logs, metadatas = self.es_task_handler.read(
         self.ti, 1, {
             'offset': 0,
             'last_log_timestamp': str(ts),
             'end_of_log': False
         })
     self.assertEqual(1, len(logs))
     self.assertEqual(len(logs), len(metadatas))
     self.assertEqual(self.test_message, logs[0])
     self.assertFalse(metadatas[0]['end_of_log'])
     self.assertEqual(1, metadatas[0]['offset'])
     self.assertTrue(
         timezone.parse(metadatas[0]['last_log_timestamp']) > ts)
コード例 #4
0
    def test_read_timeout(self):
        ts = pendulum.now().subtract(minutes=5)

        self.es.delete(index=self.index_name, doc_type=self.doc_type, id=1)
        logs, metadatas = self.es_task_handler.read(
            self.ti, 1, {
                'offset': 0,
                'last_log_timestamp': str(ts),
                'end_of_log': False
            })
        self.assertEqual(1, len(logs))
        self.assertEqual(len(logs), len(metadatas))
        self.assertEqual([''], logs)
        self.assertTrue(metadatas[0]['end_of_log'])
        # offset should be initialized to 0 if not provided.
        self.assertEqual(0, metadatas[0]['offset'])
        self.assertTrue(
            timezone.parse(metadatas[0]['last_log_timestamp']) == ts)
コード例 #5
0
ファイル: test_cli.py プロジェクト: fengzhongzhu1621/xAirflow
    def test_local_run(self):
        args = create_mock_args(
            task_id='print_the_context',
            dag_id='example_python_operator',
            subdir='/root/dags/example_python_operator.py',
            interactive=True,
            execution_date=timezone.parse('2018-04-27T08:39:51.298439+00:00'))

        reset(args.dag_id)

        with patch('argparse.Namespace', args) as mock_args:
            run(mock_args)
            dag = get_dag(mock_args)
            task = dag.get_task(task_id=args.task_id)
            ti = TaskInstance(task, args.execution_date)
            ti.refresh_from_db()
            state = ti.current_state()
            self.assertEqual(state, State.SUCCESS)
コード例 #6
0
 def test_read_nonexistent_log(self):
     ts = pendulum.now()
     # In ElasticMock, search is going to return all documents with matching index
     # and doc_type regardless of match filters, so we delete the log entry instead
     # of making a new TaskInstance to query.
     self.es.delete(index=self.index_name, doc_type=self.doc_type, id=1)
     logs, metadatas = self.es_task_handler.read(
         self.ti, 1, {
             'offset': 0,
             'last_log_timestamp': str(ts),
             'end_of_log': False
         })
     self.assertEqual(1, len(logs))
     self.assertEqual(len(logs), len(metadatas))
     self.assertEqual([''], logs)
     self.assertFalse(metadatas[0]['end_of_log'])
     self.assertEqual(0, metadatas[0]['offset'])
     # last_log_timestamp won't change if no log lines read.
     self.assertTrue(
         timezone.parse(metadatas[0]['last_log_timestamp']) == ts)
コード例 #7
0
ファイル: test_cli.py プロジェクト: fengzhongzhu1621/xAirflow
    def test_test(self):
        """Test the `airflow test` command"""
        args = create_mock_args(task_id='print_the_context',
                                dag_id='example_python_operator',
                                subdir=None,
                                execution_date=timezone.parse('2018-01-01'))

        saved_stdout = sys.stdout
        try:
            sys.stdout = out = StringIO()
            cli.test(args)

            output = out.getvalue()
            # Check that prints, and log messages, are shown
            self.assertIn(
                'Done. Returned value was: Whatever you return gets printed in the logs',
                output)
            self.assertIn(
                "'example_python_operator__print_the_context__20180101'",
                output)
        finally:
            sys.stdout = saved_stdout
コード例 #8
0
def parse_execution_date(execution_date_str):
    """
    Parse execution date string to datetime object.
    """
    return timezone.parse(execution_date_str)