code: def testConcatenateTwoNonEmptyDatasets(self):
      input_dataset = dataset_ops.Dataset.from_tensor_slices([0, 1, 2])
      concatenate_dataset = dataset_ops.Dataset.from_tensor_slices(
          [3, 4]
      )
      concatenated = input_dataset.concatenate(concatenate_dataset)
      for i in range(5):
          self.assertAllEqual(
              random_access.at(concatenated, index=i), i
          )
      with self.assertRaises(errors.OutOfRangeError):
          self.evaluate(random_access.at(concatenated, index=5))
  
imports: from absl.testing import parameterized
  import numpy
  from tensorflow.python.data.experimental.ops import random_access
  from tensorflow.python.data.kernel_tests import checkpoint_test_base
  from tensorflow.python.data.kernel_tests import test_base
  from tensorflow.python.data.ops import dataset_ops
  from tensorflow.python.data.ops import options
  from tensorflow.python.data.util import nest
  from tensorflow.python.framework import combinations
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.platform import test
label_desc: Use image node_id 5 for calling the ConcatenateRandomAccessTest obj's underlying member method code with example usage: obj.testConcatenateTwoNonEmptyDatasets() without return types