code: def test_get_conn_retry_on_connection_error(
      self,
      mock_time,
      mock_ssh_client,
      mock_paramiko,
      mock_os_login_hook,
      mock_compute_hook,
  ):
      del mock_os_login_hook
      del mock_compute_hook
  
      class CustomException(Exception):
          pass
  
      mock_paramiko.SSHException = CustomException
      mock_ssh_client.return_value.connect.side_effect = [
          CustomException,
          CustomException,
          True,
      ]
      hook = ComputeEngineSSHHook(
          instance_name=TEST_INSTANCE_NAME, zone=TEST_ZONE
      )
      hook.get_conn()
  
      assert 3 == mock_ssh_client.return_value.connect.call_count
  
imports: from __future__ import annotations
  import json
  import logging
  from unittest import mock
  import httplib2
  import pytest
  from googleapiclient.errors import HttpError
  from paramiko.ssh_exception import SSHException
  from airflow.exceptions import AirflowException
  from airflow.models import Connection
  from airflow.providers.google.cloud.hooks.compute_ssh import ComputeEngineSSHHook
label_desc: Use image node_id 12 for calling the TestComputeEngineHookWithPassedProjectId obj's underlying member method code with example usage: obj.test_get_conn_retry_on_connection_error(mock_time, mock_ssh_client, mock_paramiko, mock_os_login_hook, mock_compute_hook) without return types