code: def test_put_and_get_collection_type_record(
      feature_store_session,
      role,
      feature_group_name,
      pandas_data_frame,
      collection_type_record,
  ):
      feature_group = FeatureGroup(
          name=feature_group_name,
          sagemaker_session=feature_store_session,
      )
      feature_definition_with_collection = [
          StringFeatureDefinition(feature_name="feature1"),
          StringFeatureDefinition(feature_name="feature2"),
          StringFeatureDefinition(feature_name="feature3"),
          StringFeatureDefinition(
              feature_name="feature4",
              collection_type=ListCollectionType(),
          ),
      ]
      feature_group.feature_definitions = (
          feature_definition_with_collection
      )
      record_identifier_value_as_string = collection_type_record[
          0
      ].value_as_string
      with cleanup_feature_group(feature_group):
          feature_group.create(
              s3_uri=False,
              record_identifier_name="feature1",
              event_time_feature_name="feature3",
              role_arn=role,
              enable_online_store=True,
              online_store_storage_type=OnlineStoreStorageTypeEnum.IN_MEMORY,
          )
          _wait_for_feature_group_create(feature_group)
          # Ingest data
          feature_group.put_record(record=collection_type_record)
          # Retrieve data
          retrieved_record = feature_group.get_record(
              record_identifier_value_as_string=record_identifier_value_as_string,
          )
  
          assert retrieved_record is not None
          record_names = list(
              map(lambda r: r.feature_name, collection_type_record)
          )
          assert len(retrieved_record) == len(record_names)
  
          retrieved_feature_map = {}
          for feature in retrieved_record:
              assert feature["FeatureName"] in record_names
              retrieved_feature_map[feature["FeatureName"]] = (
                  feature.get("ValueAsStringList")
                  if feature.get("ValueAsString") is None
                  else feature.get("ValueAsString")
              )
  
          assert collection_type_record[
              0
          ].value_as_string == retrieved_feature_map.get("feature1")
          assert collection_type_record[
              1
          ].value_as_string == retrieved_feature_map.get("feature2")
          assert collection_type_record[
              2
          ].value_as_string == retrieved_feature_map.get("feature3")
          assert collection_type_record[
              3
          ].value_as_string_list == retrieved_feature_map.get(
              "feature4"
          )
  
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 23 for calling a global function with example usage: test_put_and_get_collection_type_record(feature_store_session, role, feature_group_name, pandas_data_frame, collection_type_record) without return types