code: def test_validate_fg_lineage_resources_happy_case():
      with patch.object(
          SAGEMAKER_SESSION_MOCK,
          "describe_feature_group",
          return_value=FEATURE_GROUP,
      ) as fg_describe_method:
          with patch.object(
              Context,
              "load",
              side_effect=[
                  CONTEXT_MOCK_01,
                  CONTEXT_MOCK_02,
                  CONTEXT_MOCK_03,
              ],
          ) as context_load:
              type(CONTEXT_MOCK_01).context_arn = "context-arn"
              type(CONTEXT_MOCK_02).context_arn = "context-arn-fep"
              type(CONTEXT_MOCK_03).context_arn = "context-arn-fep-ver"
              _validate_fg_lineage_resources(
                  feature_group_name="some_fg",
                  sagemaker_session=SAGEMAKER_SESSION_MOCK,
              )
      fg_describe_method.assert_called_once_with(
          feature_group_name="some_fg"
      )
      context_load.assert_has_calls(
          [
              call(
                  context_name=f'{"some_fg"}-{FEATURE_GROUP["CreationTime"].strftime("%s")}'
                  f"-feature-group-pipeline",
                  sagemaker_session=SAGEMAKER_SESSION_MOCK,
              ),
              call(
                  context_name=f'{"some_fg"}-{FEATURE_GROUP["CreationTime"].strftime("%s")}'
                  f"-feature-group-pipeline-version",
                  sagemaker_session=SAGEMAKER_SESSION_MOCK,
              ),
          ]
      )
      assert 3 == context_load.call_count
  
imports: from __future__ import absolute_import
  from datetime import datetime
  from typing import Callable
  import pytest
  import json
  from botocore.exceptions import ClientError
  from mock import Mock, patch, call
  from sagemaker.feature_store.feature_processor.feature_scheduler import FeatureProcessorLineageHandler
  from sagemaker.feature_store.feature_processor import FeatureProcessorPipelineEvents, FeatureProcessorPipelineExecutionStatus
  from sagemaker.lineage.context import Context
  from sagemaker.remote_function.spark_config import SparkConfig
  from sagemaker import Session
  from sagemaker.feature_store.feature_processor._enums import FeatureProcessorMode
  from sagemaker.feature_store.feature_processor._constants import FEATURE_PROCESSOR_TAG_KEY, FEATURE_PROCESSOR_TAG_VALUE, EXECUTION_TIME_PIPELINE_PARAMETER_FORMAT, PIPELINE_NAME_MAXIMUM_LENGTH
  from sagemaker.feature_store.feature_processor.feature_scheduler import schedule, to_pipeline, execute, delete_schedule, describe, list_pipelines, put_trigger, enable_trigger, disable_trigger, delete_trigger, _validate_fg_lineage_resources, _validate_pipeline_lineage_resources
  from sagemaker.remote_function.job import _JobSettings, SPARK_APP_SCRIPT_PATH, RUNTIME_SCRIPTS_CHANNEL_NAME, REMOTE_FUNCTION_WORKSPACE, ENTRYPOINT_SCRIPT_NAME, SPARK_CONF_CHANNEL_NAME
  from sagemaker.workflow.parameters import Parameter, ParameterTypeEnum
  from sagemaker.workflow.retry import StepRetryPolicy, StepExceptionTypeEnum, SageMakerJobStepRetryPolicy, SageMakerJobExceptionTypeEnum
  import test_data_helpers
label_desc: Use image node_id 21 for calling a global function with example usage: test_validate_fg_lineage_resources_happy_case() without return types