code: def test_device_stats_cpu(cpu_stats_mock, tmpdir, cpu_stats):
      """Test CPU stats are logged when no accelerator is used."""
      model = BoringModel()
      CPU_METRIC_KEYS = (
          _CPU_VM_PERCENT,
          _CPU_SWAP_PERCENT,
          _CPU_PERCENT,
      )
  
      class DebugLogger(CSVLogger):
          def log_metrics(
              self,
              metrics: Dict[str, float],
              step: Optional[int] = None,
          ) -> None:
              enabled = cpu_stats is not False
              for f in CPU_METRIC_KEYS:
                  has_cpu_metrics = any(f in h for h in metrics)
                  assert (
                      has_cpu_metrics
                      if enabled
                      else not has_cpu_metrics
                  )
  
      device_stats = DeviceStatsMonitor(cpu_stats=cpu_stats)
      trainer = Trainer(
          default_root_dir=tmpdir,
          max_epochs=1,
          limit_train_batches=2,
          limit_val_batches=0,
          log_every_n_steps=1,
          callbacks=device_stats,
          logger=DebugLogger(tmpdir),
          enable_checkpointing=False,
          enable_progress_bar=False,
          accelerator="cpu",
      )
      trainer.fit(model)
  
      expected = (
          4 if cpu_stats is not False else 0
      )  # (batch_start + batch_end) * train_batches
      assert cpu_stats_mock.call_count == expected
  
imports: import csv
  import os
  import re
  from typing import Dict, Optional
  from unittest import mock
  from unittest.mock import Mock
  import pytest
  import torch
  from lightning.pytorch import Trainer
  from lightning.pytorch.accelerators.cpu import _CPU_PERCENT, _CPU_SWAP_PERCENT, _CPU_VM_PERCENT, get_cpu_stats
  from lightning.pytorch.callbacks import DeviceStatsMonitor
  from lightning.pytorch.callbacks.device_stats_monitor import _prefix_metric_keys
  from lightning.pytorch.demos.boring_classes import BoringModel
  from lightning.pytorch.loggers import CSVLogger
  from lightning.pytorch.utilities.exceptions import MisconfigurationException
  from lightning.pytorch.utilities.rank_zero import rank_zero_only
  from tests_pytorch.helpers.runif import RunIf
label_desc: Use image node_id 2 for calling a global function with example usage: test_device_stats_cpu(cpu_stats_mock, tmpdir, cpu_stats) without return types