code: def s3_base(endpoint_ip, endpoint_port):
      """
      Fixture to set up moto server in separate process
      """
      with ensure_safe_environment_variables():
          # Fake aws credentials exported to prevent botocore looking for
          # system aws credentials, https://github.com/spulec/moto/issues/1793
          os.environ["AWS_ACCESS_KEY_ID"] = "foobar_key"
          os.environ["AWS_SECRET_ACCESS_KEY"] = "foobar_secret"
          os.environ["S3FS_LOGGING_LEVEL"] = "DEBUG"
          os.environ["AWS_SECURITY_TOKEN"] = "foobar_security_token"
          os.environ["AWS_SESSION_TOKEN"] = "foobar_session_token"
          os.environ["AWS_DEFAULT_REGION"] = "us-east-1"
  
          # Launching moto in server mode, i.e., as a separate process
          # with an S3 endpoint on localhost
  
          endpoint_uri = f"http://{endpoint_ip}:{endpoint_port}/"
  
          server = ThreadedMotoServer(
              ip_address=endpoint_ip, port=endpoint_port
          )
          server.start()
          yield endpoint_uri
          server.stop()
  
imports: import os
  import socket
  from contextlib import contextmanager
  from io import BytesIO
  import numpy
  import pandas
  import pyarrow.fs
  import pytest
  from fsspec.core import get_fs_token_paths
  import cudf
  from cudf.testing._utils import assert_eq
label_desc: Use image node_id 4 for calling a global function with example usage: s3_base(endpoint_ip, endpoint_port) without return types