|
- # Copyright 2020 Huawei Technologies Co., Ltd
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # ============================================================================
- """
- Description: This file is used for testing graph handler.
- """
- import os
-
- import pytest
-
- from ....utils.tools import compare_result_with_file
- from .conftest import init_graph_handler
-
-
- class TestGraphHandler:
- """Test GraphHandler."""
- graph_results_dir = os.path.join(os.path.dirname(__file__), 'expect_results')
- graph_handler = init_graph_handler()
-
- @pytest.mark.level0
- @pytest.mark.env_single
- @pytest.mark.platform_x86_cpu
- @pytest.mark.platform_arm_ascend_training
- @pytest.mark.platform_x86_gpu_training
- @pytest.mark.platform_x86_ascend_training
- @pytest.mark.parametrize("filter_condition, result_file", [
- (None, "graph_handler_get_1_no_filter_condintion.json"),
- ({'name': 'Default'}, "graph_handler_get_2_list_nodes.json"),
- ({'name': 'Default/network-WithLossCell/_backbone-LeNet5/conv1-Conv2d/Cast-op190', 'single_node': True},
- "graph_handler_get_3_single_node.json")
- ])
- def test_get(self, filter_condition, result_file):
- """Test get."""
- result = self.graph_handler.get(filter_condition)
- file_path = os.path.join(self.graph_results_dir, result_file)
- compare_result_with_file(result, file_path)
-
- @pytest.mark.level0
- @pytest.mark.env_single
- @pytest.mark.platform_x86_cpu
- @pytest.mark.platform_arm_ascend_training
- @pytest.mark.platform_x86_gpu_training
- @pytest.mark.platform_x86_ascend_training
- @pytest.mark.parametrize("node_name, result_file", [
- ("Default/network-WithLossCell/_backbone-LeNet5/conv1-Conv2d/Cast-op190",
- "tenor_hist_0.json"),
- ("Default/optimizer-Momentum/ApplyMomentum[8]_1/ApplyMomentum-op22",
- "tensor_hist_1.json")
- ])
- def test_get_tensor_history(self, node_name, result_file):
- """Test get tensor history."""
- result = self.graph_handler.get_tensor_history(node_name)
- file_path = os.path.join(self.graph_results_dir, result_file)
- compare_result_with_file(result, file_path)
-
- @pytest.mark.level0
- @pytest.mark.env_single
- @pytest.mark.platform_x86_cpu
- @pytest.mark.platform_arm_ascend_training
- @pytest.mark.platform_x86_gpu_training
- @pytest.mark.platform_x86_ascend_training
- @pytest.mark.parametrize("pattern, result_file", [
- ("withlogits", "search_nodes_0.json"),
- ("cst", "search_node_1.json")
- ])
- def test_search_nodes(self, pattern, result_file):
- """Test search nodes."""
- result = self.graph_handler.search_nodes(pattern)
- file_path = os.path.join(self.graph_results_dir, result_file)
- compare_result_with_file(result, file_path)
-
- @pytest.mark.level0
- @pytest.mark.env_single
- @pytest.mark.platform_x86_cpu
- @pytest.mark.platform_arm_ascend_training
- @pytest.mark.platform_x86_gpu_training
- @pytest.mark.platform_x86_ascend_training
- @pytest.mark.parametrize("node_name, expect_type", [
- ("Default/network-WithLossCell/_loss_fn-SoftmaxCrossEntropyWithLogits/cst1", 'Const'),
- ("Default/TransData-op99", "TransData")
- ])
- def test_get_node_type(self, node_name, expect_type):
- """Test get node type."""
- node_type = self.graph_handler.get_node_type(node_name)
- assert node_type == expect_type
-
- @pytest.mark.level0
- @pytest.mark.env_single
- @pytest.mark.platform_x86_cpu
- @pytest.mark.platform_arm_ascend_training
- @pytest.mark.platform_x86_gpu_training
- @pytest.mark.platform_x86_ascend_training
- @pytest.mark.parametrize("node_name, expect_full_name", [
- (None, ""),
- ("Default/make_tuple[9]_3/make_tuple-op284", "Default/make_tuple-op284"),
- ("Default/args0", "Default/args0")
- ])
- def test_get_full_name(self, node_name, expect_full_name):
- """Test get full name."""
- full_name = self.graph_handler.get_full_name(node_name)
- assert full_name == expect_full_name
-
- @pytest.mark.level0
- @pytest.mark.env_single
- @pytest.mark.platform_x86_cpu
- @pytest.mark.platform_arm_ascend_training
- @pytest.mark.platform_x86_gpu_training
- @pytest.mark.platform_x86_ascend_training
- @pytest.mark.parametrize("full_name, expect_node_name", [
- (None, ""),
- ("Default/make_tuple-op284", "Default/make_tuple[9]_3/make_tuple-op284"),
- ("Default/args0", "Default/args0")
- ])
- def test_get_node_name_by_full_name(self, full_name, expect_node_name):
- """Test get node name by full name."""
- node_name = self.graph_handler.get_node_name_by_full_name(full_name)
- assert node_name == expect_node_name
-
- @pytest.mark.level0
- @pytest.mark.env_single
- @pytest.mark.platform_x86_cpu
- @pytest.mark.platform_arm_ascend_training
- @pytest.mark.platform_x86_gpu_training
- @pytest.mark.platform_x86_ascend_training
- @pytest.mark.parametrize("node_name, ascend, expect_next", [
- (None, True, "Default/network-WithLossCell/_loss_fn-SoftmaxCrossEntropyWithLogits/OneHot-op0"),
- (None, False, None),
- ("Default/tuple_getitem[10]_0/tuple_getitem-op206", True,
- "Default/network-WithLossCell/_backbone-LeNet5/relu-ReLU/ReLUV2-op89"),
- ("Default/tuple_getitem[10]_0/tuple_getitem-op206", False,
- "Default/network-WithLossCell/_backbone-LeNet5/max_pool2d-MaxPool2d/Cast-op205")
- ])
- def test_get_node_by_bfs_order(self, node_name, ascend, expect_next):
- """Test get node by BFS order."""
- next_node = self.graph_handler.get_node_by_bfs_order(node_name, ascend)
- assert next_node == expect_next
|