You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
4.4 KiB
Python
137 lines
4.4 KiB
Python
# 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.
|
|
"""Test the telemetry config."""
|
|
|
|
from . import config
|
|
import configparser
|
|
import pathlib
|
|
import tempfile
|
|
import unittest
|
|
|
|
|
|
class ConfigTest(unittest.TestCase):
|
|
"""Test Config class."""
|
|
|
|
def test_create_missing_config_file(self) -> None:
|
|
"""Test Config to create missing config file."""
|
|
|
|
with tempfile.TemporaryDirectory() as temp:
|
|
path = pathlib.Path(temp) / "telemetry.cfg"
|
|
cfg = config.Config(path)
|
|
|
|
with open(path, 'r') as f:
|
|
self.assertEqual(
|
|
f.read(), "[root]\nnotice_countdown = 10\n\n[trace]\n\n")
|
|
self.assertFalse(cfg.trace_config.enabled)
|
|
self.assertFalse(cfg.trace_config.has_enabled())
|
|
self.assertEqual("AUTO", cfg.trace_config.enabled_reason)
|
|
self.assertEqual(10, cfg.root_config.notice_countdown)
|
|
|
|
def test_load_config_file(self) -> None:
|
|
"""Test Config to load config file."""
|
|
|
|
with tempfile.TemporaryDirectory() as temp:
|
|
path = pathlib.Path(temp) / "telemetry.cfg"
|
|
with open(path, 'w') as f:
|
|
f.write(
|
|
"[root]\nnotice_countdown = 3\n\n[trace]\nenabled = True\n\n"
|
|
)
|
|
|
|
cfg = config.Config(path)
|
|
|
|
self.assertTrue(cfg.trace_config.enabled)
|
|
self.assertEqual(3, cfg.root_config.notice_countdown)
|
|
|
|
def test_flush_config_file_with_updates(self) -> None:
|
|
"""Test Config to write the config changes to file."""
|
|
|
|
with tempfile.TemporaryDirectory() as temp:
|
|
path = pathlib.Path(temp) / "telemetry.cfg"
|
|
with open(path, 'w') as f:
|
|
f.write(
|
|
"[root]\nnotice_countdown = 7\n\n[trace]\nenabled = True\n\n"
|
|
)
|
|
|
|
cfg = config.Config(path)
|
|
|
|
cfg.trace_config.update(enabled=False, reason="AUTO")
|
|
cfg.root_config.update(notice_countdown=9)
|
|
cfg.flush()
|
|
|
|
with open(path, 'r') as f:
|
|
self.assertEqual(
|
|
f.read(),
|
|
"\n".join([
|
|
"[root]",
|
|
"notice_countdown = 9",
|
|
"",
|
|
"[trace]",
|
|
"enabled = False",
|
|
"enabled_reason = AUTO",
|
|
"",
|
|
"",
|
|
]),
|
|
)
|
|
|
|
|
|
def test_default_trace_config() -> None:
|
|
"""Test TraceConfig to load default values."""
|
|
cfg = configparser.ConfigParser()
|
|
cfg[config.TRACE_SECTION_KEY] = {}
|
|
trace_config = config.TraceConfig(cfg)
|
|
|
|
assert not trace_config.has_enabled()
|
|
|
|
|
|
def test_trace_config_update() -> None:
|
|
"""Test TraceConfig to update values."""
|
|
cfg = configparser.ConfigParser()
|
|
cfg[config.TRACE_SECTION_KEY] = {config.ENABLED_KEY: True}
|
|
trace_config = config.TraceConfig(cfg)
|
|
trace_config.update(enabled=False, reason="AUTO")
|
|
assert not trace_config.enabled
|
|
assert trace_config.enabled_reason == "AUTO"
|
|
|
|
|
|
def test_trace_config() -> None:
|
|
"""Test TraceConfig to instantiate from passed dict."""
|
|
cfg = configparser.ConfigParser()
|
|
cfg[config.TRACE_SECTION_KEY] = {config.ENABLED_KEY: True}
|
|
trace_config = config.TraceConfig(cfg)
|
|
|
|
assert trace_config.enabled
|
|
assert trace_config.has_enabled()
|
|
assert trace_config.enabled_reason == "AUTO"
|
|
|
|
|
|
def test_default_root_config() -> None:
|
|
"""Test RootConfig to load default values."""
|
|
cfg = configparser.ConfigParser()
|
|
cfg[config.ROOT_SECTION_KEY] = {}
|
|
root_config = config.RootConfig(cfg)
|
|
|
|
assert root_config.notice_countdown == 10
|
|
|
|
|
|
def test_root_config_update() -> None:
|
|
"""Test RootConfig to update values."""
|
|
cfg = configparser.ConfigParser()
|
|
cfg[config.ROOT_SECTION_KEY] = {config.NOTICE_COUNTDOWN_KEY: True}
|
|
root_config = config.RootConfig(cfg)
|
|
root_config.update(notice_countdown=8)
|
|
assert root_config.notice_countdown == 8
|
|
|
|
|
|
def test_root_config() -> None:
|
|
"""Test RootConfig to instantiate from passed dict."""
|
|
cfg = configparser.ConfigParser()
|
|
cfg[config.ROOT_SECTION_KEY] = {config.NOTICE_COUNTDOWN_KEY: 9}
|
|
root_config = config.RootConfig(cfg)
|
|
|
|
assert root_config.notice_countdown == 9
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|