| Index: tools/metrics/rappor/pretty_print.py
|
| diff --git a/tools/metrics/rappor/pretty_print.py b/tools/metrics/rappor/pretty_print.py
|
| deleted file mode 100755
|
| index 7430479acf4713d65548434d140c6d0acbc13c34..0000000000000000000000000000000000000000
|
| --- a/tools/metrics/rappor/pretty_print.py
|
| +++ /dev/null
|
| @@ -1,167 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright 2015 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import logging
|
| -import sys
|
| -import os
|
| -
|
| -# Import the metrics/common module for pretty print xml.
|
| -sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
|
| -import models
|
| -import presubmit_util
|
| -
|
| -
|
| -# Model definitions for rappor.xml content
|
| -_SUMMARY_TYPE = models.TextNodeType('summary')
|
| -
|
| -_PARAMETERS_TYPE = models.ObjectNodeType('parameters',
|
| - int_attributes=[
|
| - 'num-cohorts',
|
| - 'bytes',
|
| - 'hash-functions',
|
| - ],
|
| - float_attributes=[
|
| - 'fake-prob',
|
| - 'fake-one-prob',
|
| - 'one-coin-prob',
|
| - 'zero-coin-prob',
|
| - ],
|
| - string_attributes=[
|
| - 'reporting-level'
|
| - ])
|
| -
|
| -_RAPPOR_PARAMETERS_TYPE = models.ObjectNodeType('rappor-parameters',
|
| - extra_newlines=(1, 1, 1),
|
| - string_attributes=['name'],
|
| - children=[
|
| - models.ChildType('summary', _SUMMARY_TYPE, False),
|
| - models.ChildType('parameters', _PARAMETERS_TYPE, False),
|
| - ])
|
| -
|
| -_RAPPOR_PARAMETERS_TYPES_TYPE = models.ObjectNodeType('rappor-parameter-types',
|
| - extra_newlines=(1, 1, 1),
|
| - dont_indent=True,
|
| - children=[
|
| - models.ChildType('types', _RAPPOR_PARAMETERS_TYPE, True),
|
| - ])
|
| -
|
| -_OWNER_TYPE = models.TextNodeType('owner', single_line=True)
|
| -
|
| -_RAPPOR_METRIC_TYPE = models.ObjectNodeType('rappor-metric',
|
| - extra_newlines=(1, 1, 1),
|
| - string_attributes=['name', 'type'],
|
| - children=[
|
| - models.ChildType('owners', _OWNER_TYPE, True),
|
| - models.ChildType('summary', _SUMMARY_TYPE, False),
|
| - ])
|
| -
|
| -_RAPPOR_METRICS_TYPE = models.ObjectNodeType('rappor-metrics',
|
| - extra_newlines=(1, 1, 1),
|
| - dont_indent=True,
|
| - children=[
|
| - models.ChildType('metrics', _RAPPOR_METRIC_TYPE, True),
|
| - ])
|
| -
|
| -_RAPPOR_CONFIGURATION_TYPE = models.ObjectNodeType('rappor-configuration',
|
| - extra_newlines=(1, 1, 1),
|
| - dont_indent=True,
|
| - children=[
|
| - models.ChildType('parameterTypes', _RAPPOR_PARAMETERS_TYPES_TYPE, False),
|
| - models.ChildType('metrics', _RAPPOR_METRICS_TYPE, False),
|
| - ])
|
| -
|
| -RAPPOR_XML_TYPE = models.DocumentType(_RAPPOR_CONFIGURATION_TYPE)
|
| -
|
| -
|
| -def GetTypeNames(config):
|
| - return set(p['name'] for p in config['parameterTypes']['types'])
|
| -
|
| -
|
| -def HasMissingOwners(metrics):
|
| - """Check that all of the metrics have owners.
|
| -
|
| - Args:
|
| - metrics: A list of rappor metric description objects.
|
| -
|
| - Returns:
|
| - True iff some metrics are missing owners.
|
| - """
|
| - missing_owners = [m for m in metrics if not m['owners']]
|
| - for metric in missing_owners:
|
| - logging.error('Rappor metric "%s" is missing an owner.', metric['name'])
|
| - print metric
|
| - return bool(missing_owners)
|
| -
|
| -
|
| -def HasInvalidTypes(type_names, metrics):
|
| - """Check that all of the metrics have valid types.
|
| -
|
| - Args:
|
| - type_names: The set of valid type names.
|
| - metrics: A list of rappor metric description objects.
|
| -
|
| - Returns:
|
| - True iff some metrics have invalid types.
|
| - """
|
| - invalid_types = [m for m in metrics if m['type'] not in type_names]
|
| - for metric in invalid_types:
|
| - logging.error('Rappor metric "%s" has invalid type "%s"',
|
| - metric['name'], metric['type'])
|
| - return bool(invalid_types)
|
| -
|
| -
|
| -def HasErrors(config):
|
| - """Check that rappor.xml passes some basic validation checks.
|
| -
|
| - Args:
|
| - config: The parsed rappor.xml contents.
|
| -
|
| - Returns:
|
| - True iff there are validation errors.
|
| - """
|
| - metrics = config['metrics']['metrics']
|
| - type_names = GetTypeNames(config)
|
| - return (HasMissingOwners(metrics) or
|
| - HasInvalidTypes(type_names, metrics))
|
| -
|
| -
|
| -def Cleanup(config):
|
| - """Preform cleanup on description contents, such as sorting metrics.
|
| -
|
| - Args:
|
| - config: The parsed rappor.xml contents.
|
| - """
|
| - types = config['parameterTypes']['types']
|
| - types.sort(key=lambda x: x['name'])
|
| - metrics = config['metrics']['metrics']
|
| - metrics.sort(key=lambda x: x['name'])
|
| -
|
| -
|
| -def UpdateXML(original_xml):
|
| - """Parse the original xml and return a pretty printed version.
|
| -
|
| - Args:
|
| - original_xml: A string containing the original xml file contents.
|
| -
|
| - Returns:
|
| - A Pretty printed xml string.
|
| - """
|
| - comments, config = RAPPOR_XML_TYPE.Parse(original_xml)
|
| -
|
| - if HasErrors(config):
|
| - return None
|
| -
|
| - Cleanup(config)
|
| -
|
| - return RAPPOR_XML_TYPE.PrettyPrint(comments, config)
|
| -
|
| -
|
| -def main(argv):
|
| - presubmit_util.DoPresubmitMain(argv, 'rappor.xml', 'rappor.old.xml',
|
| - 'pretty_print.py', UpdateXML)
|
| -
|
| -
|
| -if '__main__' == __name__:
|
| - sys.exit(main(sys.argv))
|
|
|