tools/metrics/ukm/xml_validations.py
def _isMetricValidAsIndexField(metric_node):
  """Checks if a given metric node can be used as a field in an index tag.

  Has the following requirements:
    * 'history' is the only aggregation target (no others are considered)
    * there will be at most 1 'aggregation', 1 'history', and 1 'statistic'
      element in a metric element
    * enumerations are the only metric types that are valid

  Args:
    metric_node: A metric node to check.

  Returns: True or False, depending on whethere the given node is valid as an
    index field.
  """
  aggregation_nodes = metric_node.getElementsByTagName('aggregation')
  if aggregation_nodes.length != 1:
    return False

  history_nodes = aggregation_nodes[0].getElementsByTagName('history')
  if history_nodes.length != 1:
    return False

  statistic_nodes = history_nodes[0].getElementsByTagName('statistics')
  if statistic_nodes.length != 1:
    return False

  # Only enumeration type metrics are supported as index fields.
  enumeration_nodes = statistic_nodes[0].getElementsByTagName('enumeration')
  return bool(enumeration_nodes)
Checks if a given metric node can be used as a field in an index tag.

  Has the following requirements:
    * 'history' is the only aggregation target (no others are considered)
    * there will be at most 1 'aggregation', 1 'history', and 1 'statistic'
      element in a metric element
    * enumerations are the only metric types that are valid

  Args:
    metric_node: A metric node to check.

  Returns: True or False, depending on whethere the given node is valid as an
    index field.
  
Checks if a given metric node can be used as a field in an index tag.
Checks if a given metric node can be used as a field in an index tag .
def _isMetricValidAsIndexField(metric_node):
  aggregation_nodes = metric_node.getElementsByTagName('aggregation')
  if aggregation_nodes.length != 1:
    return False
  history_nodes = aggregation_nodes[0].getElementsByTagName('history')
  if history_nodes.length != 1:
    return False
  statistic_nodes = history_nodes[0].getElementsByTagName('statistics')
  if statistic_nodes.length != 1:
    return False
  enumeration_nodes = statistic_nodes[0].getElementsByTagName('enumeration')
  return bool(enumeration_nodes)
def _isMetricValidAsIndexField ( metric_node ) : aggregation_nodes = metric_node . getElementsByTagName ( 'aggregation' ) if aggregation_nodes . length != 1 : return False history_nodes = aggregation_nodes [ 0 ] . getElementsByTagName ( 'history' ) if history_nodes . length != 1 : return False statistic_nodes = history_nodes [ 0 ] . getElementsByTagName ( 'statistics' ) if statistic_nodes . length != 1 : return False enumeration_nodes = statistic_nodes [ 0 ] . getElementsByTagName ( 'enumeration' ) return bool ( enumeration_nodes )
Checks if a given metric node can be used as a field in an index tag.
Checks if a given metric node can be used as a field in an index tag .
"""Checks if a given metric node can be used as a field in an index tag.

  Has the following requirements:
    * 'history' is the only aggregation target (no others are considered)
    * there will be at most 1 'aggregation', 1 'history', and 1 'statistic'
      element in a metric element
    * enumerations are the only metric types that are valid

  Args:
    metric_node: A metric node to check.

  Returns: True or False, depending on whethere the given node is valid as an
    index field.
  """ # Only enumeration type metrics are supported as index fields.
metric_node
A metric node to check.
A metric node to check .