code: def test_parquet_read_random_shuffle(
      ray_start_regular_shared, restore_data_context, fs, data_path
  ):
      # NOTE: set preserve_order to True to allow consistent output behavior.
      context = ray.data.DataContext.get_current()
      context.execution_options.preserve_order = True
  
      input_list = list(range(10))
      df1 = pd.DataFrame({"one": input_list[: len(input_list) // 2]})
      table = pa.Table.from_pandas(df1)
      setup_data_path = _unwrap_protocol(data_path)
      path1 = os.path.join(setup_data_path, "test1.parquet")
      pq.write_table(table, path1, filesystem=fs)
      df2 = pd.DataFrame({"one": input_list[len(input_list) // 2 :]})
      table = pa.Table.from_pandas(df2)
      path2 = os.path.join(setup_data_path, "test2.parquet")
      pq.write_table(table, path2, filesystem=fs)
  
      ds = ray.data.read_parquet(
          data_path, filesystem=fs, shuffle="files"
      )
  
      # Execute 10 times to get a set of output results.
      output_results_list = []
      for _ in range(10):
          result = [row["one"] for row in ds.take_all()]
          output_results_list.append(result)
      all_rows_matched = [
          input_list == output_list
          for output_list in output_results_list
      ]
  
      # Check when shuffle is enabled, output order has at least one different
      # case.
      assert not all(all_rows_matched)
  
imports: import os
  import shutil
  from typing import Any
  import numpy
  import pandas
  import pyarrow
  import pyarrow.parquet
  import pytest
  from pytest_lazyfixture import lazy_fixture
  import ray
  from ray.data.block import BlockAccessor
  from ray.data.context import DataContext
  from ray.data.datasource import DefaultFileMetadataProvider, DefaultParquetMetadataProvider
  from ray.data.datasource.parquet_base_datasource import ParquetBaseDatasource
  from ray.data.datasource.parquet_datasource import NUM_CPUS_FOR_META_FETCH_TASK, PARALLELIZE_META_FETCH_THRESHOLD, RETRY_EXCEPTIONS_FOR_META_FETCH_TASK, ParquetDatasource, _deserialize_fragments_with_retry, _SerializedFragment
  from ray.data.datasource.path_util import _unwrap_protocol
  from ray.data.tests.conftest import *
  from ray.data.tests.mock_http_server import *
  from ray.tests.conftest import *
label_desc: Use image node_id 6 for calling a global function with example usage: test_parquet_read_random_shuffle(ray_start_regular_shared, restore_data_context, fs, data_path) without return types