class_docstr: Class for e2e local testing of BatchingNodeProvider.
  Recycles parts of the implementation of FakeMultiNodeProvider without inheriting it.
  
  This node provider requires the "available_node_types" section of the
  autoscaling config to be copied into the "provider" section.
  That's needed so that node resources can be accessed as
  provider_config["available_node_types"][node_type]["resources"].
  
  See the create_node_with_resources call in submit_scale_request.
  See class BatchingAutoscaler below.
code: def __init__(self, provider_config, cluster_name):
      BatchingNodeProvider.__init__(self, provider_config, cluster_name)
      FakeMultiNodeProvider.__init__(
          self, provider_config, cluster_name
      )
  
imports: from copy import deepcopy
  import sys
  import pytest
  import ray
  from ray._private.test_utils import wait_for_condition
  from ray.autoscaler.batching_node_provider import BatchingNodeProvider, NodeData, ScaleRequest
  from ray.autoscaler._private.fake_multi_node.node_provider import FakeMultiNodeProvider
  from ray.autoscaler._private.constants import FOREGROUND_NODE_LAUNCH_KEY
  from ray.autoscaler.tags import NODE_KIND_WORKER, STATUS_UP_TO_DATE, TAG_RAY_NODE_KIND, TAG_RAY_NODE_STATUS, TAG_RAY_USER_NODE_TYPE
  from ray.cluster_utils import AutoscalingCluster
  import logging
label_desc: Use image node_id 1 to create a new FakeBatchingNodeProvider object from inherited base classes: BatchingNodeProvider with example: obj = FakeBatchingNodeProvider(provider_config, cluster_name)