code: def test_ipu(test_settings):
      with mock.patch.object(
          wandb.sdk.internal.system.assets.ipu,
          "gcipuinfo",
          MockGcIpuInfo(),
      ):
          interface = AssetInterface()
          settings = SettingsStatic(
              test_settings(
                  dict(
                      _stats_sample_rate_seconds=0.1,
                      _stats_samples_to_average=2,
                  )
              ).to_proto()
          )
          shutdown_event = threading.Event()
  
          ipu = IPU(
              interface=interface,
              settings=settings,
              shutdown_event=shutdown_event,
          )
  
          assert ipu.is_available()
          ipu.metrics[0]._pid = CURRENT_PID
          ipu.start()
          ipu_info = ipu.probe()["ipu"]
          devices = ipu_info.pop("devices")
          assert ipu_info == {"device_count": 3, "vendor": "Graphcore"}
          assert devices == [
              {"id": "0", "board ipu index": "1", "board type": "C2"},
              {"id": "1", "board ipu index": "1", "board type": "C2"},
              {"id": "2", "board ipu index": "1", "board type": "C2"},
          ]
          time.sleep(1)
          shutdown_event.set()
          ipu.finish()
  
          assert not interface.metrics_queue.empty()
  
file_path: wandb/tests/pytest_tests/unit_tests/test_system_metrics/test_ipu.py
imports: import threading
  import time
  from unittest import mock
  import wandb
  from wandb.sdk.internal.settings_static import SettingsStatic
  from wandb.sdk.internal.system.assets import IPU
  from wandb.sdk.internal.system.assets.ipu import IPUStats
  from wandb.sdk.internal.system.system_monitor import AssetInterface
label_desc: Use image node_id 2 for calling a global function with example usage: test_ipu(test_settings) without return types