You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_model.py 4.3 kB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. # Copyright 2020 Huawei Technologies Co., Ltd
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. # ============================================================================
  15. """Test the model module."""
  16. from unittest import TestCase, mock
  17. from unittest.mock import MagicMock
  18. from mindinsight.lineagemgr.model import filter_summary_lineage, get_flattened_lineage
  19. from mindinsight.lineagemgr.common.exceptions.exceptions import LineageSummaryParseException, \
  20. LineageQuerierParamException, LineageQuerySummaryDataError, LineageSearchConditionParamError, LineageParamTypeError
  21. from mindinsight.lineagemgr.common.path_parser import SummaryPathParser
  22. from ...st.func.lineagemgr.test_model import LINEAGE_FILTRATION_RUN1, LINEAGE_FILTRATION_RUN2
  23. class TestFilterAPI(TestCase):
  24. """Test the function of filter_summary_lineage."""
  25. _MOCK_DATA_MANAGER = MagicMock()
  26. @mock.patch('mindinsight.lineagemgr.model.Querier')
  27. @mock.patch('mindinsight.lineagemgr.lineage_parser.SummaryPathParser.get_lineage_summaries')
  28. def test_filter_summary_lineage(self, latest_summary_mock, qurier_mock):
  29. """Test the function of filter_summary_lineage."""
  30. latest_summary_mock.return_value = ['/path/to/summary_base_dir/summary_dir']
  31. mock_querier = MagicMock()
  32. qurier_mock.return_value = mock_querier
  33. mock_querier.filter_summary_lineage.return_value = [{'loss': 3.0}]
  34. result = filter_summary_lineage(self._MOCK_DATA_MANAGER)
  35. self.assertEqual(result, [{'loss': 3.0}])
  36. @mock.patch('mindinsight.lineagemgr.model.validate_condition')
  37. def test_invalid_search_condition(self, mock_valid):
  38. """Test filter_summary_lineage with invalid invalid param."""
  39. mock_valid.side_effect = LineageParamTypeError(
  40. 'Invalid search_condition type.')
  41. self.assertRaisesRegex(
  42. LineageSearchConditionParamError,
  43. 'Invalid search_condition type.',
  44. filter_summary_lineage,
  45. self._MOCK_DATA_MANAGER,
  46. 'invalid_condition'
  47. )
  48. def test_failed_to_get_summary_files(self):
  49. """Test filter_summary_lineage with invalid invalid param."""
  50. default_result = {
  51. 'customized': {},
  52. 'object': [],
  53. 'count': 0
  54. }
  55. assert default_result == filter_summary_lineage(self._MOCK_DATA_MANAGER)
  56. @mock.patch('mindinsight.lineagemgr.model.validate_search_model_condition')
  57. @mock.patch('mindinsight.lineagemgr.model.validate_condition')
  58. @mock.patch.object(SummaryPathParser, 'get_lineage_summaries')
  59. @mock.patch('mindinsight.lineagemgr.model.Querier')
  60. def test_failed_to_querier(self, mock_query, *args):
  61. """Test filter_summary_lineage with invalid invalid param."""
  62. mock_query.side_effect = LineageSummaryParseException()
  63. args[0].return_value = None
  64. res = filter_summary_lineage(self._MOCK_DATA_MANAGER)
  65. assert res == {'object': [], 'count': 0}
  66. mock_query.side_effect = LineageQuerierParamException(['keys'], 'key')
  67. self.assertRaisesRegex(
  68. LineageQuerySummaryDataError,
  69. 'Filter summary lineage failed.',
  70. filter_summary_lineage,
  71. self._MOCK_DATA_MANAGER
  72. )
  73. @mock.patch('mindinsight.lineagemgr.model.filter_summary_lineage')
  74. def test_get_lineage_table(self, mock_filter_summary_lineage):
  75. """Test get_flattened_lineage with valid param."""
  76. mock_data = {
  77. 'object': [LINEAGE_FILTRATION_RUN1, LINEAGE_FILTRATION_RUN2]
  78. }
  79. mock_data_manager = MagicMock()
  80. mock_filter_summary_lineage.return_value = mock_data
  81. result = get_flattened_lineage(mock_data_manager)
  82. assert result.get('[U]info') == ['info1', None]