code: def test_server_client():
      reset_envs()
      os.environ["DGL_DIST_MODE"] = "distributed"
      check_server_client_hierarchy(False, 1, 4)
      check_server_client_empty(True, 1, 1)
      check_server_client_hetero(True, 1, 1)
      check_server_client_hetero(False, 1, 1)
      check_server_client(True, 1, 1)
      check_server_client(False, 1, 1)
  
imports: import os
  import math
  import multiprocessing
  import pickle
  import socket
  import sys
  import time
  import unittest
  from multiprocessing import Condition, Manager, Process, Value
  import backend
  import dgl
  import numpy
  import pytest
  import torch
  from dgl.data.utils import load_graphs, save_graphs
  from dgl.distributed import DistEmbedding, DistGraph, DistGraphServer, edge_split, load_partition, load_partition_book, node_split, partition_graph
  from dgl.distributed.optim import SparseAdagrad
  from dgl.heterograph_index import create_unitgraph_from_coo
  from numpy.testing import assert_almost_equal, assert_array_equal
  from scipy import sparse
  from utils import create_random_graph, generate_ip_config, reset_envs
label_desc: Use image node_id 21 for calling a global function with example usage: test_server_client() without return types