code: def test_feature_metadata(
      feature_store_session,
      role,
      feature_group_name,
      offline_store_s3_uri,
      pandas_data_frame,
  ):
      feature_group = FeatureGroup(
          name=feature_group_name,
          sagemaker_session=feature_store_session,
      )
      feature_group.load_feature_definitions(
          data_frame=pandas_data_frame
      )
  
      with cleanup_feature_group(feature_group):
          feature_group.create(
              s3_uri=offline_store_s3_uri,
              record_identifier_name="feature1",
              event_time_feature_name="feature3",
              role_arn=role,
              enable_online_store=True,
          )
          _wait_for_feature_group_create(feature_group)
  
          parameter_additions = [
              FeatureParameter(key="key1", value="value1"),
              FeatureParameter(key="key2", value="value2"),
          ]
          description = "test description"
          feature_name = "feature1"
          feature_group.update_feature_metadata(
              feature_name=feature_name,
              description=description,
              parameter_additions=parameter_additions,
          )
          describe_feature_metadata = (
              feature_group.describe_feature_metadata(
                  feature_name=feature_name
              )
          )
          print(describe_feature_metadata)
          assert description == describe_feature_metadata.get(
              "Description"
          )
          assert 2 == len(describe_feature_metadata.get("Parameters"))
          assert [
              {"Key": "key1", "Value": "value1"},
              {"Key": "key2", "Value": "value2"},
          ] == feature_group.list_parameters_for_feature_metadata(
              feature_name=feature_name
          )
  
          parameter_removals = ["key1"]
          feature_group.update_feature_metadata(
              feature_name=feature_name,
              parameter_removals=parameter_removals,
          )
          describe_feature_metadata = (
              feature_group.describe_feature_metadata(
                  feature_name=feature_name
              )
          )
          assert description == describe_feature_metadata.get(
              "Description"
          )
          assert 1 == len(describe_feature_metadata.get("Parameters"))
          assert [
              {"Key": "key2", "Value": "value2"}
          ] == feature_group.list_parameters_for_feature_metadata(
              feature_name=feature_name
          )
  
imports: from __future__ import absolute_import
  import datetime
  import json
  import time
  import dateutil.parser
  from contextlib import contextmanager
  import boto3
  import numpy
  import pandas
  import pytest
  from pandas import DataFrame
  from sagemaker.feature_store.feature_utils import get_feature_group_as_dataframe
  from sagemaker.feature_store.feature_definition import FractionalFeatureDefinition, StringFeatureDefinition, ListCollectionType
  from sagemaker.feature_store.feature_group import FeatureGroup
  from sagemaker.feature_store.feature_store import FeatureStore
  from sagemaker.feature_store.inputs import FeatureValue, FeatureParameter, TableFormatEnum, Filter, ResourceEnum, Identifier, DeletionModeEnum, TtlDuration, OnlineStoreConfigUpdate, OnlineStoreStorageTypeEnum
  from sagemaker.feature_store.dataset_builder import JoinTypeEnum
  from sagemaker.session import get_execution_role, Session
  from tests.integ.timeout import timeout
  from urllib.parse import urlparse
label_desc: Use image node_id 28 for calling a global function with example usage: test_feature_metadata(feature_store_session, role, feature_group_name, offline_store_s3_uri, pandas_data_frame) without return types