code: def test_storage(self) -> None:
      problem = get_single_objective_benchmark_problem()
      res = benchmark_replication(
          problem=problem, method=get_sobol_benchmark_method(), seed=0
      )
      # Experiment is not in storage yet
      self.assertTrue(res.experiment is not None)
      self.assertEqual(res.experiment_storage_id, None)
      experiment = res.experiment
  
      # test saving to temporary file
      with tempfile.NamedTemporaryFile(
          mode="w", delete=True, suffix=".json"
      ) as f:
          save_experiment(not_none(res.experiment), f.name)
          res.experiment_storage_id = f.name
          res.experiment = None
          self.assertIsNone(res.experiment)
          self.assertEqual(res.experiment_storage_id, f.name)
  
          # load it back
          experiment = load_experiment(f.name)
          self.assertEqual(experiment, experiment)
  
imports: import tempfile
  import numpy
  from ax.benchmark.benchmark import benchmark_multiple_problems_methods, benchmark_one_method_problem, benchmark_replication
  from ax.benchmark.benchmark_method import BenchmarkMethod, get_sequential_optimization_scheduler_options
  from ax.benchmark.benchmark_problem import SingleObjectiveBenchmarkProblem
  from ax.benchmark.benchmark_result import BenchmarkResult
  from ax.benchmark.methods.modular_botorch import get_sobol_botorch_modular_acquisition
  from ax.benchmark.problems.registry import get_problem
  from ax.modelbridge.modelbridge_utils import extract_search_space_digest
  from ax.service.utils.scheduler_options import SchedulerOptions
  from ax.storage.json_store.load import load_experiment
  from ax.storage.json_store.save import save_experiment
  from ax.utils.common.testutils import TestCase
  from ax.utils.common.typeutils import not_none
  from ax.utils.testing.benchmark_stubs import get_moo_surrogate, get_multi_objective_benchmark_problem, get_single_objective_benchmark_problem, get_sobol_benchmark_method, get_soo_surrogate
  from ax.utils.testing.core_stubs import get_dataset, get_experiment
  from ax.utils.testing.mock import fast_botorch_optimize
  from botorch.acquisition.logei import qLogNoisyExpectedImprovement
  from botorch.acquisition.multi_objective.monte_carlo import qNoisyExpectedHypervolumeImprovement
  from botorch.models.fully_bayesian import SaasFullyBayesianSingleTaskGP
  from botorch.models.gp_regression import FixedNoiseGP, SingleTaskGP
  from botorch.test_functions.synthetic import Branin
label_desc: Use image node_id 1 for calling the TestBenchmark obj's underlying member method code with example usage: obj.test_storage() without return types