code: def setUp(self) -> None:
      self.best_plan: List[ShardingOption] = []
      for i in range(10):
          shard_size = [100 * i, 8]
          shard_offsets = [[0, 0], [0, 8]]
          self.best_plan.append(
              ShardingOption(
                  name=f"table_{i}",
                  tensor=MagicMock(),
                  module=MagicMock(),
                  input_lengths=MagicMock(),
                  batch_size=MagicMock(),
                  sharding_type=ShardingType.COLUMN_WISE.value,
                  partition_by=MagicMock(),
                  compute_kernel=MagicMock(),
                  shards=[
                      Shard(size=shard_size, offset=offset)
                      for offset in shard_offsets
                  ],
              )
          )
  
file_path: torchrec/torchrec/distributed/planner/tests/test_utils.py
imports: import unittest
  from typing import Callable, List
  from unittest.mock import MagicMock
  from torchrec.distributed.planner.types import Perf, Shard, ShardingOption, Storage
  from torchrec.distributed.planner.utils import _find_imbalance_tables, BinarySearchPredicate, reset_shard_rank
  from torchrec.distributed.types import ShardingType
label_desc: Use image node_id 1 for calling the TestFindImbalanceTables obj's underlying member method code with example usage: obj.setUp() without return types