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, )
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)
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], )
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)