# 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. # ============================================================================ """Test the path_parser module.""" from datetime import datetime from unittest import TestCase, mock from mindinsight.datavisual.data_transform.summary_watcher import SummaryWatcher from mindinsight.lineagemgr.common.path_parser import SummaryPathParser MOCK_SUMMARY_DIRS = [ { 'relative_path': './relative_path0' }, { 'relative_path': './' }, { 'relative_path': './relative_path1' } ] MOCK_SUMMARIES = [ { 'file_name': 'file0.summary.1', 'create_time': datetime.fromtimestamp(1582031970) }, { 'file_name': 'file0.summary.1_lineage', 'create_time': datetime.fromtimestamp(1582031970) }, { 'file_name': 'file1.summary.2', 'create_time': datetime.fromtimestamp(1582031971) }, { 'file_name': 'file1.summary.2_lineage', 'create_time': datetime.fromtimestamp(1582031971) } ] class TestSummaryPathParser(TestCase): """Test the class of SummaryPathParser.""" @mock.patch.object(SummaryWatcher, 'list_summaries') def test_get_lineage_summaries(self, *args): """Test the function of get_lineage_summaries.""" args[0].return_value = MOCK_SUMMARIES exp_result = ['file0.summary.1_lineage', 'file1.summary.2_lineage'] summary_dir = '/path/to/summary_dir' result = SummaryPathParser.get_lineage_summaries(summary_dir) self.assertEqual(exp_result, result) args[0].return_value = [ { 'file_name': 'file0.summary.1', 'create_time': datetime.fromtimestamp(1582031970) } ] result = SummaryPathParser.get_lineage_summaries(summary_dir) self.assertEqual([], result) args[0].return_value = [ { 'file_name': 'file0.summary.1_lineage', 'create_time': datetime.fromtimestamp(1582031970) } ] result = SummaryPathParser.get_lineage_summaries(summary_dir) self.assertEqual(['file0.summary.1_lineage'], result) args[0].return_value = [ { 'file_name': 'file0.summary.3_lineage', 'create_time': datetime.fromtimestamp(1582031970) }, { 'file_name': 'file0.summary.2_lineage_lineage', 'create_time': datetime.fromtimestamp(1582031970) }, { 'file_name': 'file1.summary.1_lineage', 'create_time': datetime.fromtimestamp(1582031971) }, { 'file_name': 'file1.summary.7_lineage_lineage', 'create_time': datetime.fromtimestamp(1582031971) } ] exp_result = ['file1.summary.1_lineage', 'file0.summary.2_lineage_lineage', 'file0.summary.3_lineage', 'file1.summary.7_lineage_lineage'] result = SummaryPathParser.get_lineage_summaries(summary_dir, is_sorted=True) self.assertEqual(exp_result, result)