code: def test_dump_compile_times(self, records):
      fn_opt = torch._dynamo.optimize("inductor")(example_fn)
      fn_opt(torch.ones(1000, 1000))
      # explicitly invoke the atexit registered functions
      atexit._run_exitfuncs()
      self.assertEqual(
          len(
              [
                  r
                  for r in records
                  if "TorchDynamo compilation metrics" in str(r.msg)
              ]
          ),
          1,
      )
  
imports: import atexit
  import contextlib
  import functools
  import logging
  import os
  import re
  import unittest.mock
  import torch
  import torch._dynamo.test_case
  import torch._dynamo.testing
  import torch.distributed
  from torch._dynamo.testing import skipIfNotPy311
  from torch.nn.parallel import DistributedDataParallel
  from torch.testing._internal.common_utils import find_free_port, munge_exc
  from torch.testing._internal.inductor_utils import HAS_CUDA
  from torch.testing._internal.logging_utils import LoggingTestCase, make_logging_test, make_settings_test
label_desc: Use image node_id 13 for calling the LoggingTests obj's underlying member method code with example usage: obj.test_dump_compile_times(records) without return types