Coverage for mlos_bench/mlos_bench/tests/optimizers/mlos_core_opt_df_test.py: 100%
17 statements
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-06 00:35 +0000
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-06 00:35 +0000
1#
2# Copyright (c) Microsoft Corporation.
3# Licensed under the MIT License.
4#
5"""
6Unit tests for internal methods of the `MlosCoreOptimizer`.
7"""
9from typing import List
11import pandas
12import pytest
14from mlos_bench.optimizers.mlos_core_optimizer import MlosCoreOptimizer
15from mlos_bench.tunables.tunable_groups import TunableGroups
17from mlos_bench.tests import SEED
19# pylint: disable=redefined-outer-name, protected-access
22@pytest.fixture
23def mlos_core_optimizer(tunable_groups: TunableGroups) -> MlosCoreOptimizer:
24 """
25 An instance of a mlos_core optimizer (FLAML-based).
26 """
27 test_opt_config = {
28 'optimizer_type': 'FLAML',
29 'max_suggestions': 10,
30 'seed': SEED,
31 }
32 return MlosCoreOptimizer(tunable_groups, test_opt_config)
35def test_df(mlos_core_optimizer: MlosCoreOptimizer, mock_configs: List[dict]) -> None:
36 """
37 Test `MlosCoreOptimizer._to_df()` method on tunables that have special values.
38 """
39 df_config = mlos_core_optimizer._to_df(mock_configs)
40 assert isinstance(df_config, pandas.DataFrame)
41 assert df_config.shape == (4, 6)
42 assert set(df_config.columns) == {
43 'kernel_sched_latency_ns',
44 'kernel_sched_migration_cost_ns',
45 'kernel_sched_migration_cost_ns!type',
46 'kernel_sched_migration_cost_ns!special',
47 'idle',
48 'vmSize',
49 }
50 assert df_config.to_dict(orient='records') == [
51 {
52 'idle': 'halt',
53 'kernel_sched_latency_ns': 1000000,
54 'kernel_sched_migration_cost_ns': 50000,
55 'kernel_sched_migration_cost_ns!special': None,
56 'kernel_sched_migration_cost_ns!type': 'range',
57 'vmSize': 'Standard_B4ms',
58 },
59 {
60 'idle': 'halt',
61 'kernel_sched_latency_ns': 2000000,
62 'kernel_sched_migration_cost_ns': 40000,
63 'kernel_sched_migration_cost_ns!special': None,
64 'kernel_sched_migration_cost_ns!type': 'range',
65 'vmSize': 'Standard_B4ms',
66 },
67 {
68 'idle': 'mwait',
69 'kernel_sched_latency_ns': 3000000,
70 'kernel_sched_migration_cost_ns': None, # The value is special!
71 'kernel_sched_migration_cost_ns!special': -1,
72 'kernel_sched_migration_cost_ns!type': 'special',
73 'vmSize': 'Standard_B4ms',
74 },
75 {
76 'idle': 'mwait',
77 'kernel_sched_latency_ns': 4000000,
78 'kernel_sched_migration_cost_ns': 200000,
79 'kernel_sched_migration_cost_ns!special': None,
80 'kernel_sched_migration_cost_ns!type': 'range',
81 'vmSize': 'Standard_B2s',
82 },
83 ]