class_docstr: DistGraphTest
      
code: def test_sample_successor(self):
      nodes = [98, 7, 17]
  
      g_neighs = [[247], [222, 234], []]
      g_weights = [[0.31], [0.91, 0.09], []]
  
      g_flat_neighs = [247, 222, 234]
      g_flat_weights = [0.31, 0.91, 0.09]
  
      g_edges = [[98, 247], [7, 222], [7, 234]]
  
      neighs = self.c1.sample_successor(nodes, 10, "u2e2t")
      for a, b in zip(neighs, g_neighs):
          self.assertEqual(set(a), set(b))
  
      # return weights and splited
      neighs, weights = self.c1.sample_successor(
          nodes, 10, "u2e2t", return_weight=True, split=True
      )
      for a, b in zip(neighs, g_neighs):
          self.assertEqual(set(a), set(b))
      for a, b in zip(weights, g_weights):
          for i, j in zip(a, b):
              self.assertAlmostEqual(i, j)
  
      # return weights without splited
      neighs, weights = self.c1.sample_successor(
          nodes, 10, "u2e2t", return_weight=True, split=False
      )
      self.assertEqual(set(neighs), set(g_flat_neighs))
      for a, b in zip(sorted(weights), sorted(g_flat_weights)):
          self.assertAlmostEqual(a, b)
  
      # return edges and weights
      edges, weights = self.c1.sample_successor(
          nodes, 10, "u2e2t", return_weight=True, return_edges=True
      )
      for a, b in zip(edges.tolist(), g_edges):
          self.assertListEqual(a, b)
      for a, b in zip(sorted(weights), sorted(g_flat_weights)):
          self.assertAlmostEqual(a, b)
  
      # return edges only
      edges = self.c1.sample_successor(
          nodes, 10, "u2e2t", return_edges=True
      )
      for a, b in zip(edges.tolist(), g_edges):
          self.assertListEqual(a, b)
  
imports: import os
  import sys
  import re
  import time
  import tqdm
  import argparse
  import unittest
  import shutil
  import numpy
  from collections import defaultdict
  from pgl.utils.logger import log
  from pgl.distributed import DistGraphClient, DistGraphServer
label_desc: Use image node_id 6 for calling the DistGraphTest obj's underlying member method code with example usage: obj.test_sample_successor() without return types