code: def test_nodes_functionality(dask_client, input_combo):
      G = input_combo["MGGraph"]
      ddf = input_combo["input_df"]
  
      # Series has no attributed sort_values so convert the Series
      # to a DataFrame
      nodes = G.nodes().to_frame()
      col_name = nodes.columns[0]
      nodes = nodes.rename(columns={col_name: "result_nodes"})
  
      result_nodes = (
          nodes.compute()
          .sort_values("result_nodes")
          .reset_index(drop=True)
      )
  
      expected_nodes = (
          dask_cudf.concat([ddf["src"], ddf["dst"]])
          .drop_duplicates()
          .to_frame()
          .sort_values(0)
      )
  
      expected_nodes = expected_nodes.compute().reset_index(drop=True)
  
      result_nodes["expected_nodes"] = expected_nodes[0]
  
      compare = result_nodes.query("result_nodes != expected_nodes")
  
      assert len(compare) == 0
  
imports: import gc
  import random
  import pytest
  import copy
  import cupy
  import cudf
  import cugraph
  import dask_cudf
  import cugraph.dask
  import cugraph.dask.comms.comms
  from cugraph.testing import utils
  from dask.distributed import wait
  from pylibcugraph import ResourceHandle
  from pylibcugraph import bfs
  from cudf.testing.testing import assert_frame_equal
  from cugraph.dask.traversal.bfs import convert_to_cudf
  from cugraph.dask.common.input_utils import get_distributed_data
  from pylibcugraph.testing.utils import gen_fixture_params_product
  from cugraph.dask.common.part_utils import persist_dask_df_equal_parts_per_worker
label_desc: Use image node_id 3 for calling a global function with example usage: test_nodes_functionality(dask_client, input_combo) without return types