code: def setUp(self) -> None:
      self.gr = GeneratorRun(arms=[Arm(parameters={"x1": 1, "x2": 2})])
  
      # Mock out slow GPEI.
      self.torch_model_bridge_patcher = patch(
          f"{TorchModelBridge.__module__}.TorchModelBridge", spec=True
      )
      self.mock_torch_model_bridge = (
          self.torch_model_bridge_patcher.start()
      )
      mock_mb = self.mock_torch_model_bridge.return_value
      mock_mb.gen.return_value = self.gr
      mock_mb._process_and_transform_data.return_value = (None, None)
  
      # Mock out slow TS.
      self.discrete_model_bridge_patcher = patch(
          f"{DiscreteModelBridge.__module__}.DiscreteModelBridge",
          spec=True,
      )
      self.mock_discrete_model_bridge = (
          self.discrete_model_bridge_patcher.start()
      )
      self.mock_discrete_model_bridge.return_value.gen.return_value = (
          self.gr
      )
  
      # Mock in `Models` registry
      self.registry_setup_dict_patcher = patch.dict(
          f"{Models.__module__}.MODEL_KEY_TO_MODEL_SETUP",
          {
              "Factorial": MODEL_KEY_TO_MODEL_SETUP[
                  "Factorial"
              ]._replace(bridge_class=self.mock_discrete_model_bridge),
              "Thompson": MODEL_KEY_TO_MODEL_SETUP["Thompson"]._replace(
                  bridge_class=self.mock_discrete_model_bridge
              ),
              "GPEI": MODEL_KEY_TO_MODEL_SETUP["GPEI"]._replace(
                  bridge_class=self.mock_torch_model_bridge
              ),
          },
      )
      self.mock_in_registry = self.registry_setup_dict_patcher.start()
  
      # model bridges are mocked, which makes kwargs' validation difficult,
      # so for now we will skip it in the generation strategy tests.
      # NOTE: Starting with Python3.8 this is not a problem as `autospec=True`
      # ensures that the mocks have correct signatures, but in earlier
      # versions kwarg validation on mocks does not really work.
      self.step_model_kwargs = {"silently_filter_kwargs": True}
      self.hss_experiment = get_hierarchical_search_space_experiment()
      self.sobol_GPEI_GS = GenerationStrategy(
          name="Sobol+GPEI",
          steps=[
              GenerationStep(
                  model=Models.SOBOL,
                  num_trials=5,
                  model_kwargs=self.step_model_kwargs,
              ),
              GenerationStep(
                  model=Models.GPEI,
                  num_trials=2,
                  model_kwargs=self.step_model_kwargs,
              ),
          ],
      )
      self.sobol_GS = GenerationStrategy(
          steps=[
              GenerationStep(
                  Models.SOBOL,
                  num_trials=-1,
                  should_deduplicate=True,
              )
          ]
      )
  
imports: import logging
  from typing import cast, List
  from unittest import mock
  from unittest.mock import MagicMock, patch
  from ax.core.arm import Arm
  from ax.core.base_trial import TrialStatus
  from ax.core.experiment import Experiment
  from ax.core.generator_run import GeneratorRun
  from ax.core.observation import ObservationFeatures
  from ax.core.parameter import ChoiceParameter, FixedParameter, Parameter, ParameterType
  from ax.core.search_space import SearchSpace
  from ax.core.utils import get_pending_observation_features_based_on_trial_status
  from ax.exceptions.core import DataRequiredError, UnsupportedError, UserInputError
  from ax.exceptions.generation_strategy import GenerationStrategyCompleted, GenerationStrategyMisconfiguredException, GenerationStrategyRepeatedPoints, MaxParallelismReachedException
  from ax.modelbridge.discrete import DiscreteModelBridge
  from ax.modelbridge.factory import get_sobol
  from ax.modelbridge.generation_node import GenerationNode
  from ax.modelbridge.generation_strategy import GenerationStep, GenerationStrategy
  from ax.modelbridge.model_spec import ModelSpec
  from ax.modelbridge.random import RandomModelBridge
  from ax.modelbridge.registry import Cont_X_trans, MODEL_KEY_TO_MODEL_SETUP, Models
  from ax.modelbridge.torch import TorchModelBridge
  from ax.modelbridge.transition_criterion import MaxGenerationParallelism, MaxTrials, MinTrials
  from ax.models.random.sobol import SobolGenerator
  from ax.utils.common.equality import same_elements
  from ax.utils.common.mock import mock_patch_method_original
  from ax.utils.common.testutils import TestCase
  from ax.utils.common.typeutils import not_none
  from ax.utils.testing.core_stubs import get_branin_data, get_branin_experiment, get_choice_parameter, get_data, get_experiment_with_multi_objective, get_hierarchical_search_space_experiment
label_desc: Use image node_id 1 for calling the TestGenerationStrategy obj's underlying member method code with example usage: obj.setUp() without return types