Source code for florist.tests.unit.api.servers.test_config_parsers

import json
from pytest import raises

from florist.api.servers.config_parsers import ConfigParser, IncompleteConfigError


[docs] def test_parse_basic_config_success() -> None: test_config = {"n_server_rounds": 123, "batch_size": 456, "local_epochs": 789} config_parser = ConfigParser.class_for_parser(ConfigParser.BASIC) result = config_parser.parse(json.dumps(test_config)) assert result == test_config
[docs] def test_parse_basic_config_fail_missing_required_field() -> None: test_config = {"n_server_rounds": 123, "local_epochs": 789} with raises(IncompleteConfigError, match="Server config does not contain 'batch_size'"): config_parser = ConfigParser.class_for_parser(ConfigParser.BASIC) config_parser.parse(json.dumps(test_config))
[docs] def test_parse_basic_config_fail_not_json() -> None: with raises(json.JSONDecodeError): config_parser = ConfigParser.class_for_parser(ConfigParser.BASIC) config_parser.parse("not_json")
[docs] def test_parse_fedprox_config_success() -> None: test_config = { "n_server_rounds": 123, "batch_size": 456, "local_epochs": 789, "adapt_proximal_weight": True, "initial_proximal_weight": 0.0, "proximal_weight_delta": 0.1, "proximal_weight_patience": 5, "n_clients": 3, } config_parser = ConfigParser.class_for_parser(ConfigParser.FEDPROX) result = config_parser.parse(json.dumps(test_config)) assert result == test_config
[docs] def test_parse_fedprox_config_fail() -> None: test_config = { "n_server_rounds": 123, "batch_size": 456, "local_epochs": 789, "adapt_proximal_weight": True, "proximal_weight_delta": 0.1, "proximal_weight_patience": 5, "n_clients": 3, } with raises(IncompleteConfigError, match="Server config does not contain 'initial_proximal_weight'"): config_parser = ConfigParser.class_for_parser(ConfigParser.FEDPROX) config_parser.parse(json.dumps(test_config))