code: def test_expire_multiple(tracker: NodeProviderAvailabilityTracker):
      """
      Insert A
      Insert B
      Insert C
      Update A
  
      -- after b's expiration, before c's --
  
      Assert B is evicted, A and C are not.
      """
      global cur_time
      cur_time = 20
  
      exc = NodeLaunchException(
          "DontFeelLikeIt", "This seems like a lot of work.", exc_info
      )
      tracker.update_node_availability("my-node-a", 0, exc)
      tracker.update_node_availability("my-node-b", 10, exc)
      tracker.update_node_availability(
          "my-node-c", 20, node_launch_exception=None
      )
  
      assert len(tracker.summary().node_availabilities) == 3
      cur_time = 30
  
      tracker.update_node_availability("my-node-a", 30, exc)
  
      # This is after B expires
      cur_time = 60 * 30 + 11
      assert len(tracker.summary().node_availabilities) == 2
  
      summary = tracker.summary()
  
      assert "my-node-a" in summary.node_availabilities
      assert "my-node-c" in summary.node_availabilities
      assert "my-node-b" not in summary.node_availabilities
  
      assert (
          summary.node_availabilities["my-node-a"].node_type
          == "my-node-a"
      )
      assert (
          summary.node_availabilities[
              "my-node-a"
          ].last_checked_timestamp
          == 30
      )
  
      assert (
          summary.node_availabilities["my-node-c"].node_type
          == "my-node-c"
      )
      assert (
          summary.node_availabilities[
              "my-node-c"
          ].last_checked_timestamp
          == 20
      )
  
file_path: ray/python/ray/tests/test_node_provider_availability_tracker.py
imports: import datetime
  import dataclasses
  import os
  import sys
  import pytest
  from ray.autoscaler.node_launch_exception import NodeLaunchException
  from ray.autoscaler._private.node_provider_availability_tracker import NodeProviderAvailabilityTracker, NodeAvailabilitySummary, NodeAvailabilityRecord, UnavailableNodeInformation
label_desc: Use image node_id 6 for calling a global function with example usage: test_expire_multiple(tracker) without return types