code: def make_root_symbols_info(self):
      return pd.DataFrame(
          {
              "root_symbol": ["FO", "BZ", "MA", "DF"],
              "root_symbol_id": [1, 2, 3, 4],
              "exchange": ["CME", "CME", "CME", "CME"],
          }
      )
  
imports: from collections import deque
  from functools import partial
  from textwrap import dedent
  from numpy import arange, array, int64, full, repeat, tile
  from numpy.testing import assert_almost_equal
  import pandas
  from pandas import Timestamp, DataFrame
  from catalyst import TradingAlgorithm
  from catalyst.assets.continuous_futures import OrderedContracts, delivery_predicate
  from catalyst.data.minute_bars import FUTURES_MINUTES_PER_DAY
  from catalyst.errors import SymbolNotFound
  from catalyst.testing.fixtures import WithAssetFinder, WithCreateBarData, WithDataPortal, WithBcolzFutureMinuteBarReader, WithSimParams, CatalystTestCase
label_desc: Use image node_id 1 for calling the ContinuousFuturesTestCase obj's underlying member method code with example usage: obj.make_root_symbols_info() and returns: pd