code: def test_get_model_times(self) -> None:
      exp = get_robust_branin_experiment(num_sobol_trials=2)
      fit_times, gen_times = get_model_trace_of_times(exp)
      total_fit_time, total_gen_time = get_model_times(exp)
      fit_times_not_none = [none_throws(elt) for elt in fit_times]
      gen_times_not_none = [none_throws(elt) for elt in gen_times]
      self.assertTrue(all(elt >= 0 for elt in fit_times_not_none))
      self.assertTrue(all(elt >= 0 for elt in gen_times_not_none))
      self.assertEqual(sum(fit_times_not_none), total_fit_time)
      self.assertEqual(sum(gen_times_not_none), total_gen_time)
  
imports: from copy import deepcopy
  from unittest.mock import patch
  import numpy
  import pandas
  from ax.core.arm import Arm
  from ax.core.base_trial import TrialStatus
  from ax.core.data import Data
  from ax.core.generator_run import GeneratorRun
  from ax.core.metric import Metric
  from ax.core.objective import Objective
  from ax.core.observation import ObservationFeatures
  from ax.core.optimization_config import OptimizationConfig
  from ax.core.outcome_constraint import OutcomeConstraint
  from ax.core.types import ComparisonOp
  from ax.core.utils import best_feasible_objective, extract_pending_observations, get_missing_metrics, get_missing_metrics_by_name, get_model_times, get_model_trace_of_times, get_pending_observation_features, get_pending_observation_features_based_on_trial_status, MissingMetrics
  from ax.utils.common.constants import Keys
  from ax.utils.common.testutils import TestCase
  from ax.utils.testing.core_stubs import get_experiment, get_hierarchical_search_space_experiment, get_robust_branin_experiment
  from pyre_extensions import none_throws
label_desc: Use image node_id 5 for calling the UtilsTest obj's underlying member method code with example usage: obj.test_get_model_times() without return types