code: def testSaveMirroredRestoreNormal(self, distribution):
      if context.num_gpus() < 1 and context.executing_eagerly():
          # Graph mode can work without GPU because the Placer "moves" the
          # variable to a CPU. In other words, if there is no GPU available, but
          # user requested to create a variable on GPU, Placer will ignore the
          # user request and assign the VarHandleOp to CPU. This requires
          # soft_placement, which is on by default.
          self.skipTest(
              "A GPU is not available for this test in eager mode."
          )
  
      save_path = self._save_mirrored(distribution)
      self._restore_normal(save_path)
  
imports: import os
  from absl.testing import parameterized
  from tensorflow.core.protobuf import config_pb2
  from tensorflow.python.distribute import combinations
  from tensorflow.python.distribute import strategy_combinations
  from tensorflow.python.distribute import strategy_test_lib
  from tensorflow.python.distribute import test_util
  from tensorflow.python.distribute import tpu_values
  from tensorflow.python.distribute import values
  from tensorflow.python.eager import context
  from tensorflow.python.eager import test
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import variable_scope
  from tensorflow.python.training import saver
label_desc: Use image node_id 10 for calling the MirroredVariableSaveRestoreTest obj's underlying member method code with example usage: obj.testSaveMirroredRestoreNormal(distribution) without return types