fune/toolkit/components/telemetry/tests/python/test_parse_scalars.py
Chris H-C 7071b41cd9 Bug 1884526 - Remove GV support from Telemetry r=TravisLong,Dexter,owlish,geckoview-reviewers
This is actually the removal of two different deprecated geckoview adapters:
GV Persistence, and GV Streaming Telemetry.

GVP has been out of use for four years. GVST has had all of its data migrated
to direct Glean use back in February and has been deprecated for two versions.

Differential Revision: https://phabricator.services.mozilla.com/D207475
2024-04-18 17:24:04 +00:00

248 lines
6.2 KiB
Python

# This Source Code Form is subject to the terms of Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import sys
import unittest
from os import path
import mozunit
import yaml
TELEMETRY_ROOT_PATH = path.abspath(
path.join(path.dirname(__file__), path.pardir, path.pardir)
)
sys.path.append(TELEMETRY_ROOT_PATH)
# The parsers live in a subdirectory of "build_scripts", account for that.
# NOTE: if the parsers are moved, this logic will need to be updated.
sys.path.append(path.join(TELEMETRY_ROOT_PATH, "build_scripts"))
from mozparsers import parse_scalars
from mozparsers.shared_telemetry_utils import ParserError
def load_scalar(scalar):
"""Parse the passed Scalar and return a dictionary
:param scalar: Scalar as YAML string
:returns: Parsed Scalar dictionary
"""
return yaml.safe_load(scalar)
class TestParser(unittest.TestCase):
def setUp(self):
def mockexit(x):
raise SystemExit(x)
self.oldexit = os._exit
os._exit = mockexit
def tearDown(self):
os._exit = self.oldexit
def test_valid_email_address(self):
SAMPLE_SCALAR_VALID_ADDRESSES = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
- test02@mozilla.com
products: ["firefox"]
bug_numbers:
- 12345
"""
scalar = load_scalar(SAMPLE_SCALAR_VALID_ADDRESSES)
sclr = parse_scalars.ScalarType(
"CATEGORY", "PROVE", scalar, strict_type_checks=True
)
ParserError.exit_func()
self.assertEqual(
sclr.notification_emails, ["test01@mozilla.com", "test02@mozilla.com"]
)
def test_invalid_email_address(self):
SAMPLE_SCALAR_INVALID_ADDRESSES = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com, test02@mozilla.com
products: ["firefox"]
bug_numbers:
- 12345
"""
scalar = load_scalar(SAMPLE_SCALAR_INVALID_ADDRESSES)
parse_scalars.ScalarType("CATEGORY", "PROVE", scalar, strict_type_checks=True)
self.assertRaises(SystemExit, ParserError.exit_func)
def test_multistore_default(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
products: ["firefox"]
bug_numbers:
- 12345
"""
scalar = load_scalar(SAMPLE_SCALAR)
sclr = parse_scalars.ScalarType(
"CATEGORY", "PROVE", scalar, strict_type_checks=True
)
ParserError.exit_func()
self.assertEqual(sclr.record_into_store, ["main"])
def test_multistore_extended(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
bug_numbers:
- 12345
products: ["firefox"]
record_into_store:
- main
- sync
"""
scalar = load_scalar(SAMPLE_SCALAR)
sclr = parse_scalars.ScalarType(
"CATEGORY", "PROVE", scalar, strict_type_checks=True
)
ParserError.exit_func()
self.assertEqual(sclr.record_into_store, ["main", "sync"])
def test_multistore_empty(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
bug_numbers:
- 12345
products: ["firefox"]
record_into_store: []
"""
scalar = load_scalar(SAMPLE_SCALAR)
parse_scalars.ScalarType("CATEGORY", "PROVE", scalar, strict_type_checks=True)
self.assertRaises(SystemExit, ParserError.exit_func)
def test_operating_systems_default(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
products: ["firefox"]
bug_numbers:
- 12345
"""
scalar = load_scalar(SAMPLE_SCALAR)
sclr = parse_scalars.ScalarType(
"CATEGORY", "PROVE", scalar, strict_type_checks=True
)
ParserError.exit_func()
self.assertEqual(sclr.operating_systems, ["all"])
def test_operating_systems_custom(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
bug_numbers:
- 12345
products: ["firefox"]
operating_systems:
- windows
"""
scalar = load_scalar(SAMPLE_SCALAR)
sclr = parse_scalars.ScalarType(
"CATEGORY", "PROVE", scalar, strict_type_checks=True
)
ParserError.exit_func()
self.assertEqual(sclr.operating_systems, ["windows"])
def test_operating_systems_empty(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
bug_numbers:
- 12345
products: ["firefox"]
operating_systems: []
"""
scalar = load_scalar(SAMPLE_SCALAR)
parse_scalars.ScalarType("CATEGORY", "PROVE", scalar, strict_type_checks=True)
self.assertRaises(SystemExit, ParserError.exit_func)
def test_products_absent(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
bug_numbers:
- 12345
"""
scalar = load_scalar(SAMPLE_SCALAR)
parse_scalars.ScalarType("CATEGORY", "PROVE", scalar, strict_type_checks=True)
self.assertRaises(SystemExit, ParserError.exit_func)
def test_products_empty(self):
SAMPLE_SCALAR = """
description: A nice one-line description.
expires: never
record_in_processes:
- 'main'
kind: uint
notification_emails:
- test01@mozilla.com
products: []
bug_numbers:
- 12345
"""
scalar = load_scalar(SAMPLE_SCALAR)
parse_scalars.ScalarType("CATEGORY", "PROVE", scalar, strict_type_checks=True)
self.assertRaises(SystemExit, ParserError.exit_func)
if __name__ == "__main__":
mozunit.main()