def test_get_pyt_set_correctly(self, command, get_pty_in, get_pty_out): task = SSHOperator(task_id="test", ssh_hook=self.hook, command=command, timeout=TIMEOUT, get_pty=get_pty_in, dag=self.dag) try: task.execute(None) except Exception: pass self.assertEqual(task.get_pty, get_pty_out)
def test_hook_created_correctly(self): TIMEOUT = 20 SSH_ID = "ssh_default" task = SSHOperator(task_id="test", command="echo -n airflow", dag=self.dag, timeout=TIMEOUT, ssh_conn_id="ssh_default") self.assertIsNotNone(task) task.execute(None) self.assertEqual(TIMEOUT, task.ssh_hook.timeout) self.assertEqual(SSH_ID, task.ssh_hook.ssh_conn_id)
def test_hook_created_correctly(self): timeout = 20 ssh_id = "ssh_default" task = SSHOperator(task_id="test", command=COMMAND, dag=self.dag, timeout=timeout, ssh_conn_id="ssh_default") self.assertIsNotNone(task) task.execute(None) self.assertEqual(timeout, task.ssh_hook.timeout) self.assertEqual(ssh_id, task.ssh_hook.ssh_conn_id)
def test_arg_checking(self): import os from airflow.exceptions import AirflowException conn_id = "conn_id_for_testing" TIMEOUT = 5 os.environ['AIRFLOW_CONN_' + conn_id.upper()] = "ssh://test_id@localhost" # Exception should be raised if neither ssh_hook nor ssh_conn_id is provided if six.PY2: self.assertRaisesRegex = self.assertRaisesRegexp with self.assertRaisesRegex( AirflowException, "Cannot operate without ssh_hook or ssh_conn_id."): task_0 = SSHOperator(task_id="test", command="echo -n airflow", timeout=TIMEOUT, dag=self.dag) task_0.execute(None) # if ssh_hook is invalid/not provided, use ssh_conn_id to create SSHHook task_1 = SSHOperator( task_id="test_1", ssh_hook="string_rather_than_SSHHook", # invalid ssh_hook ssh_conn_id=conn_id, command="echo -n airflow", timeout=TIMEOUT, dag=self.dag) try: task_1.execute(None) except Exception: pass self.assertEqual(task_1.ssh_hook.ssh_conn_id, conn_id) task_2 = SSHOperator( task_id="test_2", ssh_conn_id=conn_id, # no ssh_hook provided command="echo -n airflow", timeout=TIMEOUT, dag=self.dag) try: task_2.execute(None) except Exception: pass self.assertEqual(task_2.ssh_hook.ssh_conn_id, conn_id) # if both valid ssh_hook and ssh_conn_id are provided, ignore ssh_conn_id task_3 = SSHOperator(task_id="test_3", ssh_hook=self.hook, ssh_conn_id=conn_id, command="echo -n airflow", timeout=TIMEOUT, dag=self.dag) try: task_3.execute(None) except Exception: pass self.assertEqual(task_3.ssh_hook.ssh_conn_id, self.hook.ssh_conn_id)
def test_arg_checking(self): import os from airflow.exceptions import AirflowException conn_id = "conn_id_for_testing" TIMEOUT = 5 os.environ['AIRFLOW_CONN_' + conn_id.upper()] = "ssh://test_id@localhost" # Exception should be raised if neither ssh_hook nor ssh_conn_id is provided if six.PY2: self.assertRaisesRegex = self.assertRaisesRegexp with self.assertRaisesRegex(AirflowException, "Cannot operate without ssh_hook or ssh_conn_id."): task_0 = SSHOperator(task_id="test", command="echo -n airflow", timeout=TIMEOUT, dag=self.dag) task_0.execute(None) # if ssh_hook is invalid/not provided, use ssh_conn_id to create SSHHook task_1 = SSHOperator( task_id="test_1", ssh_hook="string_rather_than_SSHHook", # invalid ssh_hook ssh_conn_id=conn_id, command="echo -n airflow", timeout=TIMEOUT, dag=self.dag ) try: task_1.execute(None) except Exception: pass self.assertEqual(task_1.ssh_hook.ssh_conn_id, conn_id) task_2 = SSHOperator( task_id="test_2", ssh_conn_id=conn_id, # no ssh_hook provided command="echo -n airflow", timeout=TIMEOUT, dag=self.dag ) try: task_2.execute(None) except Exception: pass self.assertEqual(task_2.ssh_hook.ssh_conn_id, conn_id) # if both valid ssh_hook and ssh_conn_id are provided, ignore ssh_conn_id task_3 = SSHOperator( task_id="test_3", ssh_hook=self.hook, ssh_conn_id=conn_id, command="echo -n airflow", timeout=TIMEOUT, dag=self.dag ) try: task_3.execute(None) except Exception: pass self.assertEqual(task_3.ssh_hook.ssh_conn_id, self.hook.ssh_conn_id)
def test_hook_created_correctly(self): TIMEOUT = 20 SSH_ID = "ssh_default" task = SSHOperator( task_id="test", command="echo -n airflow", dag=self.dag, timeout=TIMEOUT, ssh_conn_id="ssh_default" ) self.assertIsNotNone(task) task.execute(None) self.assertEquals(TIMEOUT, task.ssh_hook.timeout) self.assertEquals(SSH_ID, task.ssh_hook.ssh_conn_id)
def test_arg_checking(self): # Exception should be raised if neither ssh_hook nor ssh_conn_id is provided with self.assertRaisesRegex(AirflowException, "Cannot operate without ssh_hook or ssh_conn_id."): task_0 = SSHOperator(task_id="test", command=COMMAND, timeout=TIMEOUT, dag=self.dag) task_0.execute(None) # if ssh_hook is invalid/not provided, use ssh_conn_id to create SSHHook task_1 = SSHOperator( task_id="test_1", ssh_hook="string_rather_than_SSHHook", # invalid ssh_hook ssh_conn_id=TEST_CONN_ID, command=COMMAND, timeout=TIMEOUT, dag=self.dag ) try: task_1.execute(None) except Exception: pass self.assertEqual(task_1.ssh_hook.ssh_conn_id, TEST_CONN_ID) task_2 = SSHOperator( task_id="test_2", ssh_conn_id=TEST_CONN_ID, # no ssh_hook provided command=COMMAND, timeout=TIMEOUT, dag=self.dag ) try: task_2.execute(None) except Exception: pass self.assertEqual(task_2.ssh_hook.ssh_conn_id, TEST_CONN_ID) # if both valid ssh_hook and ssh_conn_id are provided, ignore ssh_conn_id task_3 = SSHOperator( task_id="test_3", ssh_hook=self.hook, ssh_conn_id=TEST_CONN_ID, command=COMMAND, timeout=TIMEOUT, dag=self.dag ) try: task_3.execute(None) except Exception: pass self.assertEqual(task_3.ssh_hook.ssh_conn_id, self.hook.ssh_conn_id)
def _actual_execution(self, context): SSHOperator.execute(self, context)