docstr: Test that newly added nodes from autoscaling are not stale.
docstr_tok: ["Test","that","newly","added","nodes","from","autoscaling","are","not","stale","."]
code: def testAutoscalingNewNode(self):
      """Test that newly added nodes from autoscaling are not stale."""
      self.cluster.update_config(
          {
              "provider": {"head_resources": {"CPU": 4, "GPU": 0}},
              "available_node_types": {
                  "ray.worker.cpu": {
                      "resources": {"CPU": 4},
                      "min_workers": 0,  # No minimum nodes
                      "max_workers": 2,
                  },
                  "ray.worker.gpu": {
                      "min_workers": 0,
                      "max_workers": 0,  # No GPU nodes
                  },
              },
          }
      )
      self.cluster.start()
      self.cluster.connect(client=True, timeout=120)
  
      def autoscaling_train(config):
          time.sleep(120)
          train.report({"_metric": 1.0})
  
      tune.run(
          autoscaling_train,
          num_samples=3,
          resources_per_trial={"cpu": 4},
          fail_fast=True,
      )
  
file_path: ray/python/ray/tune/tests/test_multinode_sync.py
imports: import sys
  import time
  import unittest
  import ray
  from ray import train, tune
  from ray.air.util.node import _force_on_node
  from ray.autoscaler._private.fake_multi_node.test_utils import DockerCluster
  from ray.tune.callback import Callback
  from ray.tune.experiment import Trial
  from ray.util.scheduling_strategies import PlacementGroupSchedulingStrategy
label_desc: Use image node_id 4 for calling the MultiNodeSyncTest obj's underlying member method code with example usage: obj.testAutoscalingNewNode() without return types