code: def testBuildOrthogonalAllReduceRings(self):
      core_locations = [
          tpu_util._CoreLocation(0, 0, 0, 0),
          tpu_util._CoreLocation(0, 0, 0, 1),
          tpu_util._CoreLocation(0, 1, 0, 0),
          tpu_util._CoreLocation(0, 1, 0, 1),
          tpu_util._CoreLocation(1, 0, 0, 0),
          tpu_util._CoreLocation(1, 0, 0, 1),
          tpu_util._CoreLocation(1, 1, 0, 0),
          tpu_util._CoreLocation(1, 1, 0, 1),
          tpu_util._CoreLocation(0, 2, 0, 0),
          tpu_util._CoreLocation(0, 2, 0, 1),
          tpu_util._CoreLocation(0, 3, 0, 0),
          tpu_util._CoreLocation(0, 3, 0, 1),
          tpu_util._CoreLocation(1, 2, 0, 0),
          tpu_util._CoreLocation(1, 2, 0, 1),
          tpu_util._CoreLocation(1, 3, 0, 0),
          tpu_util._CoreLocation(1, 3, 0, 1),
          tpu_util._CoreLocation(2, 0, 0, 0),
          tpu_util._CoreLocation(2, 0, 0, 1),
          tpu_util._CoreLocation(2, 1, 0, 0),
          tpu_util._CoreLocation(2, 1, 0, 1),
          tpu_util._CoreLocation(3, 0, 0, 0),
          tpu_util._CoreLocation(3, 0, 0, 1),
          tpu_util._CoreLocation(3, 1, 0, 0),
          tpu_util._CoreLocation(3, 1, 0, 1),
          tpu_util._CoreLocation(2, 2, 0, 0),
          tpu_util._CoreLocation(2, 2, 0, 1),
          tpu_util._CoreLocation(2, 3, 0, 0),
          tpu_util._CoreLocation(2, 3, 0, 1),
          tpu_util._CoreLocation(3, 2, 0, 0),
          tpu_util._CoreLocation(3, 2, 0, 1),
          tpu_util._CoreLocation(3, 3, 0, 0),
          tpu_util._CoreLocation(3, 3, 0, 1),
      ]
      expected = [
          tpu_util._CoreLocation(0, 0, 0, 0),
          tpu_util._CoreLocation(0, 0, 0, 1),
          tpu_util._CoreLocation(1, 0, 0, 0),
          tpu_util._CoreLocation(1, 0, 0, 1),
          tpu_util._CoreLocation(1, 1, 0, 0),
          tpu_util._CoreLocation(1, 1, 0, 1),
          tpu_util._CoreLocation(0, 1, 0, 0),
          tpu_util._CoreLocation(0, 1, 0, 1),
          tpu_util._CoreLocation(2, 0, 0, 0),
          tpu_util._CoreLocation(2, 0, 0, 1),
          tpu_util._CoreLocation(3, 0, 0, 0),
          tpu_util._CoreLocation(3, 0, 0, 1),
          tpu_util._CoreLocation(3, 1, 0, 0),
          tpu_util._CoreLocation(3, 1, 0, 1),
          tpu_util._CoreLocation(2, 1, 0, 0),
          tpu_util._CoreLocation(2, 1, 0, 1),
          tpu_util._CoreLocation(2, 2, 0, 0),
          tpu_util._CoreLocation(2, 2, 0, 1),
          tpu_util._CoreLocation(3, 2, 0, 0),
          tpu_util._CoreLocation(3, 2, 0, 1),
          tpu_util._CoreLocation(3, 3, 0, 0),
          tpu_util._CoreLocation(3, 3, 0, 1),
          tpu_util._CoreLocation(2, 3, 0, 0),
          tpu_util._CoreLocation(2, 3, 0, 1),
          tpu_util._CoreLocation(0, 2, 0, 0),
          tpu_util._CoreLocation(0, 2, 0, 1),
          tpu_util._CoreLocation(1, 2, 0, 0),
          tpu_util._CoreLocation(1, 2, 0, 1),
          tpu_util._CoreLocation(1, 3, 0, 0),
          tpu_util._CoreLocation(1, 3, 0, 1),
          tpu_util._CoreLocation(0, 3, 0, 0),
          tpu_util._CoreLocation(0, 3, 0, 1),
      ]
      result = tpu_util._build_orthogonal_rings(
          core_locations, ring_size=8, rotate_ring_across_rings=False
      )
      self.assertAllEqual(result, expected)
  
imports: from tensorflow.dtensor.python import accelerator_util
  from tensorflow.dtensor.python import layout
  from tensorflow.dtensor.python import numpy_util
  from tensorflow.dtensor.python import tpu_util
  from tensorflow.dtensor.python.tests import test_util
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.ops import math_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 9 for calling the DeviceAssignmentTest obj's underlying member method code with example usage: obj.testBuildOrthogonalAllReduceRings() without return types