code: def _test_fileset(
      self,
      container: MetadataContainer,
      large_file_size: int,
      small_files_no: int,
  ):
      key = self.gen_key()
      large_filename = fake.file_name()
      small_files = [
          (
              f"{uuid.uuid4()}.{fake.file_extension()}",
              fake.sentence().encode("utf-8"),
          )
          for _ in range(small_files_no)
      ]
  
      with tmp_context():
          # create single large file (multipart) and a lot of very small files
          with open(large_filename, "wb") as file:
              file.write(b"\0" * large_file_size)
          for filename, contents in small_files:
              with open(filename, "wb") as file:
                  file.write(contents)
  
          small_filenames = [filename for filename, _ in small_files]
          # make sure there are no duplicates
          assert (
              len({large_filename, *small_filenames})
              == len(small_files) + 1
          )
  
          # when one file as fileset uploaded
          container[key].upload_files([large_filename])
  
          # then check if will be downloaded
          container.sync()
          container[key].download("downloaded1.zip")
  
          with ZipFile("downloaded1.zip") as zipped:
              assert set(zipped.namelist()) == {large_filename, "/"}
              with zipped.open(large_filename, "r") as file:
                  content = file.read()
                  assert len(content) == large_file_size
                  assert content == b"\0" * large_file_size
  
          # when small files as fileset uploaded
          container[key].upload_files(small_filenames)
  
          # then check if everything will be downloaded
          container.sync()
          container[key].download("downloaded2.zip")
  
          with ZipFile("downloaded2.zip") as zipped:
              assert set(zipped.namelist()) == {
                  large_filename,
                  "/",
                  *small_filenames,
              }
              with zipped.open(large_filename, "r") as file:
                  content = file.read()
                  assert len(content) == large_file_size
                  assert content == b"\0" * large_file_size
              for filename, expected_content in small_files:
                  with zipped.open(filename, "r") as file:
                      content = file.read()
                      assert len(content) == len(expected_content)
                      assert content == expected_content
  
          # when first file is removed
          container[key].delete_files([large_filename])
  
          # then check if the rest will be downloaded
          container.sync()
          container[key].download("downloaded3.zip")
  
          with ZipFile("downloaded3.zip") as zipped:
              assert set(zipped.namelist()) == {"/", *small_filenames}
              for filename, expected_content in small_files:
                  with zipped.open(filename, "r") as file:
                      content = file.read()
                      assert len(content) == len(expected_content)
                      assert content == expected_content
  
imports: import io
  import os
  import random
  import uuid
  from itertools import product
  from typing import Set
  from unittest.mock import Mock
  from zipfile import ZipFile
  import pytest
  from neptune.internal.backends import hosted_file_operations
  from neptune.internal.backends.api_model import MultipartConfig, OptionalFeatures
  from neptune.internal.backends.hosted_neptune_backend import HostedNeptuneBackend
  from neptune.internal.types.file_types import FileType
  from neptune.metadata_containers import MetadataContainer
  from neptune.types import File, FileSet
  from tests.e2e.base import AVAILABLE_CONTAINERS, BaseE2ETest, fake
  from tests.e2e.plot_utils import generate_altair_chart, generate_brokeh_figure, generate_matplotlib_figure, generate_pil_image, generate_plotly_figure, generate_seaborn_figure
  from tests.e2e.utils import SIZE_1KB, SIZE_1MB, initialize_container, preserve_cwd, tmp_context
label_desc: Use image node_id 1 for calling the TestFileSet obj's underlying member method code with example usage: obj._test_fileset(container, large_file_size, small_files_no) without return types