chromium/tools/metrics/dwa/validate_format.py

#!/usr/bin/env python3
# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Verifies that the DWA XML file is well-formatted."""

import os
import sys
import dwa_xml_validations

sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
import path_util

from xml.dom import minidom

_DWA_XML = path_util.GetInputFile('tools/metrics/dwa/dwa.xml')


def main():
  with open(_DWA_XML, 'r') as config_file:
    document = minidom.parse(config_file)
    [config] = document.getElementsByTagName('dwa-configuration')
    validator = dwa_xml_validations.DwaXmlValidation(config)

    owner_check_success, owner_check_errors = validator.checkEventsHaveOwners()
    metric_check_success, metric_check_errors = (
        validator.checkMetricTypeIsSpecified())

    results = dict()

    if (not owner_check_success or not metric_check_success):
      results['Errors'] = (owner_check_errors + metric_check_errors)

    if 'Errors' in results:
      return results


if __name__ == '__main__':
  sys.exit(main())