aboutsummaryrefslogtreecommitdiff
path: root/tests/test_core_context.py
diff options
context:
space:
mode:
authorRaul Farkas <raul.farkas@arm.com>2022-11-29 13:29:04 +0000
committerRaul Farkas <raul.farkas@arm.com>2023-01-10 10:46:07 +0000
commit5800fc990ed1e36ce7d06670f911fbb12a0ec771 (patch)
tree294605295cd2624ba63e6ad3df335a2a4b2700ab /tests/test_core_context.py
parentdcd0bd31985c27e1d07333351b26cf8ad12ad1fd (diff)
downloadmlia-5800fc990ed1e36ce7d06670f911fbb12a0ec771.tar.gz
MLIA-650 Implement new CLI changes
Breaking change in the CLI and API: Sub-commands "optimization", "operators", and "performance" were replaced by "check", which incorporates compatibility and performance checks, and "optimize" which is used for optimization. "get_advice" API was adapted to these CLI changes. API changes: * Remove previous advice category "all" that would perform all three operations (when possible). Replace them with the ability to pass a set of the advice categories. * Update api.get_advice method docstring to reflect new changes. * Set default advice category to COMPATIBILITY * Update core.common.AdviceCategory by changing the "OPERATORS" advice category to "COMPATIBILITY" and removing "ALL" enum type. Update all subsequent methods that previously used "OPERATORS" to use "COMPATIBILITY". * Update core.context.ExecutionContext to have "COMPATIBILITY" as default advice_category instead of "ALL". * Remove api.generate_supported_operators_report and all related functions from cli.commands, cli.helpers, cli.main, cli.options, core.helpers * Update tests to reflect new API changes. CLI changes: * Update README.md to contain information on the new CLI * Remove the ability to generate supported operators support from MLIA CLI * Replace `mlia ops` and `mlia perf` with the new `mlia check` command that can be used to perform both operations. * Replace `mlia opt` with the new `mlia optimize` command. * Replace `--evaluate-on` flag with `--backend` flag * Replace `--verbose` flag with `--debug` flag (no behaviour change). * Remove the ability for the user to select MLIA working directory. Create and use a temporary directory in /temp instead. * Change behaviour of `--output` flag to not format the content automatically based on file extension anymore. Instead it will simply redirect to a file. * Add the `--json` flag to specfy that the format of the output should be json. * Add command validators that are used to validate inter-dependent flags (e.g. backend validation based on target_profile). * Add support for selecting built-in backends for both `check` and `optimize` commands. * Add new unit tests and update old ones to test the new CLI changes. * Update RELEASES.md * Update copyright notice Change-Id: Ia6340797c7bee3acbbd26601950e5a16ad5602db
Diffstat (limited to 'tests/test_core_context.py')
-rw-r--r--tests/test_core_context.py46
1 files changed, 41 insertions, 5 deletions
diff --git a/tests/test_core_context.py b/tests/test_core_context.py
index 44eb976..dcdbef3 100644
--- a/tests/test_core_context.py
+++ b/tests/test_core_context.py
@@ -1,17 +1,53 @@
-# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
+# SPDX-FileCopyrightText: Copyright 2022-2023, Arm Limited and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0
"""Tests for the module context."""
+from __future__ import annotations
+
from pathlib import Path
+import pytest
+
from mlia.core.common import AdviceCategory
from mlia.core.context import ExecutionContext
from mlia.core.events import DefaultEventPublisher
+@pytest.mark.parametrize(
+ "context_advice_category, expected_enabled_categories",
+ [
+ [
+ {
+ AdviceCategory.COMPATIBILITY,
+ },
+ [AdviceCategory.COMPATIBILITY],
+ ],
+ [
+ {
+ AdviceCategory.PERFORMANCE,
+ },
+ [AdviceCategory.PERFORMANCE],
+ ],
+ [
+ {AdviceCategory.COMPATIBILITY, AdviceCategory.PERFORMANCE},
+ [AdviceCategory.PERFORMANCE, AdviceCategory.COMPATIBILITY],
+ ],
+ ],
+)
+def test_execution_context_category_enabled(
+ context_advice_category: set[AdviceCategory],
+ expected_enabled_categories: list[AdviceCategory],
+) -> None:
+ """Test category enabled method of execution context."""
+ for category in expected_enabled_categories:
+ assert ExecutionContext(
+ advice_category=context_advice_category
+ ).category_enabled(category)
+
+
def test_execution_context(tmpdir: str) -> None:
"""Test execution context."""
publisher = DefaultEventPublisher()
- category = AdviceCategory.OPERATORS
+ category = {AdviceCategory.COMPATIBILITY}
context = ExecutionContext(
advice_category=category,
@@ -35,13 +71,13 @@ def test_execution_context(tmpdir: str) -> None:
assert str(context) == (
f"ExecutionContext: "
f"working_dir={tmpdir}, "
- "advice_category=OPERATORS, "
+ "advice_category={'COMPATIBILITY'}, "
"config_parameters={'param': 'value'}, "
"verbose=True"
)
context_with_default_params = ExecutionContext(working_dir=tmpdir)
- assert context_with_default_params.advice_category is AdviceCategory.ALL
+ assert context_with_default_params.advice_category == {AdviceCategory.COMPATIBILITY}
assert context_with_default_params.config_parameters is None
assert context_with_default_params.event_handlers is None
assert isinstance(
@@ -55,7 +91,7 @@ def test_execution_context(tmpdir: str) -> None:
expected_str = (
f"ExecutionContext: working_dir={tmpdir}, "
- "advice_category=ALL, "
+ "advice_category={'COMPATIBILITY'}, "
"config_parameters=None, "
"verbose=False"
)