示例#1
0
    def test_execute_bteq_runcmd_return_last_line(self, mock_tmpfile,
                                                  mock_tmpdir, mock_popen):
        # Givens
        mock_subprocess = MockSubProcess(output=self._bteq_subprocess_output)
        mock_subprocess.returncode = 0
        mock_popen.return_value = mock_subprocess
        mock_tmpdir.return_value.__enter__.return_value = '/tmp/airflowtmp_ttu_bteq'
        mock_tmpfile.return_value.__enter__.return_value.name = 'test.bteq'

        # When
        hook = TtuHook(ttu_conn_id='ttu_default')

        # Then
        res = hook.execute_bteq(bteq="", xcom_push_flag=True)
        self.assertEqual(
            "*** RC (return code) = 0",
            res,
        )
示例#2
0
    def test_execute_bteq_runcmd(self, mock_tmpfile, mock_tmpdir, mock_popen):
        # Given
        mock_subprocess = MockSubProcess()
        mock_subprocess.returncode = 0
        mock_popen.return_value = mock_subprocess
        mock_tmpdir.return_value.__enter__.return_value = '/tmp/airflowtmp_ttu_bteq'
        mock_tmpfile.return_value.__enter__.return_value.name = 'test.bteq'
        # When
        hook = TtuHook(ttu_conn_id='ttu_default')
        hook.execute_bteq(bteq="")

        # Then
        mock_popen.assert_called_with(['bteq'],
                                      stdin=mock.ANY,
                                      stdout=mock_subprocess.PIPE,
                                      stderr=mock_subprocess.STDOUT,
                                      cwd='/tmp/airflowtmp_ttu_bteq',
                                      preexec_fn=mock.ANY)
示例#3
0
    def test_execute_bteq_runcmd_error_noraise(self, mock_tmpfile, mock_tmpdir,
                                               mock_popen):
        # Givens
        mock_subprocess = MockSubProcess(
            output=self._bteq_error_no_failure_subprocess_output)
        mock_subprocess.returncode = 0
        mock_popen.return_value = mock_subprocess
        mock_tmpdir.return_value.__enter__.return_value = '/tmp/airflowtmp_ttu_bteq'
        mock_tmpfile.return_value.__enter__.return_value.name = 'test.bteq'

        # When
        hook = TtuHook(ttu_conn_id='ttu_default')

        # Then
        with self.assertLogs(level="INFO") as cm:
            hook.execute_bteq(bteq="")
        self.assertEqual(
            "INFO:airflow.providers.teradata.hooks.ttu.TtuHook:BTEQ command exited with return code 0",
            cm.output[-1],
        )
示例#4
0
    def test_execute_bteq_runcmd_error_raise(self, mock_tmpfile, mock_tmpdir,
                                             mock_popen):
        # Given
        mock_subprocess = MockSubProcess(
            output=self._bteq_failure_subprocess_output)
        mock_subprocess.returncode = 311
        mock_popen.return_value = mock_subprocess
        mock_tmpdir.return_value.__enter__.return_value = '/tmp/airflowtmp_ttu_bteq'
        mock_tmpfile.return_value.__enter__.return_value.name = 'test.bteq'

        # When
        hook = TtuHook(ttu_conn_id='ttu_default')

        # Then
        with self.assertRaises(AirflowException) as cm:
            hook.execute_bteq(bteq="")
        msg = (
            "BTEQ command exited with return code 311 because of "
            "*** Failure 3706 Syntax error: expected something between '(' and the string 'test'"
        )
        self.assertEqual(str(cm.exception), msg)