code: def test_cloudwatch_dashboard_creation(
      cloudwatch_client_stub, ssm_client_stub
  ):
      # create test cluster node IDs and an associated cloudwatch helper
      node_id = "i-abc"
      cloudwatch_helper = helpers.get_cloudwatch_helper(node_id)
  
      # given a directive to create a cluster CloudWatch Dashboard...
      # expect to make a call to create a dashboard for each node in the cluster
      stubs.put_cluster_dashboard_success(
          cloudwatch_client_stub,
          cloudwatch_helper,
      )
  
      # given our mocks and the example CloudWatch Dashboard config as input...
      # expect a cluster CloudWatch Dashboard to be created successfully
      cloudwatch_helper._put_cloudwatch_dashboard()
      # expect no pending responses left in the CloudWatch client stub queue
      cloudwatch_client_stub.assert_no_pending_responses()
  
imports: import copy
  from unittest.mock import Mock, patch
  import pytest
  from click.exceptions import ClickException
  import ray.tests.aws.utils.helpers
  import ray.tests.aws.utils.stubs
  from ray.autoscaler._private.aws.config import DEFAULT_AMI, _configure_subnet, _get_subnets_or_die, bootstrap_aws, log_to_cli
  from ray.autoscaler._private.aws.node_provider import AWSNodeProvider
  from ray.autoscaler._private.providers import _get_node_provider
  from ray.tests.aws.utils.constants import AUX_SG, AUX_SUBNET, CUSTOM_IN_BOUND_RULES, DEFAULT_CLUSTER_NAME, DEFAULT_INSTANCE_PROFILE, DEFAULT_KEY_PAIR, DEFAULT_LT, DEFAULT_SG, DEFAULT_SG_AUX_SUBNET, DEFAULT_SG_DUAL_GROUP_RULES, DEFAULT_SG_WITH_NAME, DEFAULT_SG_WITH_NAME_AND_RULES, DEFAULT_SG_WITH_RULES, DEFAULT_SG_WITH_RULES_AUX_SUBNET, DEFAULT_SUBNET
label_desc: Use image node_id 17 for calling a global function with example usage: test_cloudwatch_dashboard_creation(cloudwatch_client_stub, ssm_client_stub) without return types