123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- # 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()
|