code: def test_merge_left(
      left_nrows, right_nrows, left_nkeys, right_nkeys, how="left"
  ):
      chunksize = 3
  
      np.random.seed(0)
  
      # cuDF
      left = cudf.DataFrame(
          {
              "x": np.random.randint(0, left_nkeys, size=left_nrows),
              "y": np.random.randint(0, left_nkeys, size=left_nrows),
              "a": np.arange(left_nrows, dtype=np.float64),
          }
      )
      right = cudf.DataFrame(
          {
              "x": np.random.randint(0, right_nkeys, size=right_nrows),
              "y": np.random.randint(0, right_nkeys, size=right_nrows),
              "a": 1000 * np.arange(right_nrows, dtype=np.float64),
          }
      )
  
      expect = left.merge(right, on=("x", "y"), how=how)
  
      def normalize(df):
          return (
              df.to_pandas()
              .sort_values(["x", "y", "a_x", "a_y"])
              .reset_index(drop=True)
          )
  
      # dask_cudf
      left = dgd.from_cudf(left, chunksize=chunksize)
      right = dgd.from_cudf(right, chunksize=chunksize)
  
      result = left.merge(right, on=("x", "y"), how=how).compute(
          scheduler="single-threaded"
      )
  
      dd.assert_eq(normalize(expect), normalize(result))
  
file_path: cudf/python/dask_cudf/dask_cudf/tests/test_join.py
imports: from functools import partial
  import numpy
  import pandas
  import pytest
  from dask import dataframe
  import cudf
  import dask_cudf
label_desc: Use image node_id 3 for calling a global function with example usage: test_merge_left(left_nrows, right_nrows, left_nkeys, right_nkeys, how) and returns: df