code: def test_prepare_and_upload_callable(
      mock_stored_function, config_uploader, wrapped_func
  ):
      mock_stored_function.save(wrapped_func).return_value = None
      config_uploader._prepare_and_upload_callable(
          wrapped_func, "s3_base_uri", sagemaker_session
      )
      assert mock_stored_function.called_once_with(
          s3_base_uri="s3_base_uri",
          s3_kms_key=config_uploader.remote_decorator_config.s3_kms_key,
          hmac_key="some_secret_key",
          sagemaker_session=sagemaker_session,
      )
  
imports: from __future__ import absolute_import
  import pytest
  from mock import Mock, patch
  from sagemaker.feature_store.feature_processor._config_uploader import ConfigUploader
  from sagemaker.feature_store.feature_processor._constants import SPARK_JAR_FILES_PATH, SPARK_FILES_PATH, SPARK_PY_FILES_PATH, SAGEMAKER_WHL_FILE_S3_PATH
  from sagemaker.remote_function.job import _JobSettings, RUNTIME_SCRIPTS_CHANNEL_NAME, REMOTE_FUNCTION_WORKSPACE, SPARK_CONF_CHANNEL_NAME
  from sagemaker.remote_function.spark_config import SparkConfig
  from sagemaker.session import Session
label_desc: Use image node_id 8 for calling a global function with example usage: test_prepare_and_upload_callable(mock_stored_function, config_uploader, wrapped_func) without return types