code: def test_pause_resume_trial(
      ray_start_4_cpus_2_gpus_extra, resource_manager_cls, tmpdir
  ):
      """Test that trial that is paused and resumed picks up its last checkpoint.
  
      Legacy test: test_trial_runner_2.py::TrialRunnerTest::testPauseThenResume
      """
      runner = TuneController(
          resource_manager_factory=lambda: resource_manager_cls(),
          storage=STORAGE,
      )
      kwargs = {
          "stopping_criterion": {"training_iteration": 2},
          "placement_group_factory": PlacementGroupFactory(
              [{"CPU": 1, "GPU": 1}]
          ),
          "checkpoint_config": CheckpointConfig(checkpoint_frequency=1),
          "storage": STORAGE,
      }
      runner.add_trial(Trial("__fake", **kwargs))
      trials = runner.get_trials()
  
      while trials[0].status != Trial.RUNNING:
          runner.step()
  
      assert (
          ray.get(trials[0].temporary_state.ray_actor.get_info.remote())
          is None
      )
      assert (
          ray.get(
              trials[0].temporary_state.ray_actor.set_info.remote(1)
          )
          == 1
      )
  
      runner._schedule_trial_pause(trials[0], should_checkpoint=True)
  
      while trials[0].status != Trial.PAUSED:
          runner.step()
  
      assert trials[0].has_checkpoint()
      assert not trials[0].last_result.get(DONE), trials[0].last_result
  
      # Start again
      runner._set_trial_status(trials[0], Trial.PENDING)
  
      while trials[0].status != Trial.RUNNING:
          runner.step()
  
      assert (
          ray.get(trials[0].temporary_state.ray_actor.get_info.remote())
          == 1
      )
  
      while trials[0].status != Trial.TERMINATED:
          runner.step()
  
      assert trials[0].checkpoint
      assert trials[0].last_result[TRAINING_ITERATION] == 2
      assert trials[0].last_result["iterations_since_restore"] == 1
      assert trials[0].last_result["time_since_restore"] > 0
  
imports: import json
  import logging
  import os
  import tempfile
  from unittest import mock
  import pytest
  import sys
  import time
  from functools import partial
  import ray
  from freezegun import freeze_time
  from ray.train import CheckpointConfig
  from ray.air.execution import FixedResourceManager, PlacementGroupResourceManager
  from ray.air.constants import TRAINING_ITERATION
  from ray.train import Checkpoint
  from ray.train._internal.session import _TrainingResult
  from ray.train._internal.storage import StorageContext
  from ray.tune import PlacementGroupFactory
  from ray.tune.execution.tune_controller import TuneController
  from ray.tune.experiment import Trial
  from ray.tune.result import DONE
  from ray.tune.schedulers import FIFOScheduler
  from ray.tune.search import BasicVariantGenerator
  from ray.train.tests.util import mock_storage_context
  from ray.tune.tests.tune_test_util import TrialResultObserver
label_desc: Use image node_id 5 for calling a global function with example usage: test_pause_resume_trial(ray_start_4_cpus_2_gpus_extra, resource_manager_cls, tmpdir) without return types