Browse Source

!10 Break down the exception so that the UI can recognize specific exception scenarios

Merge pull request !10 from ougongchang/fixbug_exception
tags/v0.2.0-alpha
mindspore-ci-bot Gitee 5 years ago
parent
commit
59f0bce673
18 changed files with 144 additions and 66 deletions
  1. +48
    -0
      mindinsight/datavisual/common/exceptions.py
  2. +3
    -3
      mindinsight/datavisual/common/validation.py
  3. +5
    -5
      mindinsight/datavisual/data_transform/data_manager.py
  4. +2
    -2
      mindinsight/datavisual/processors/graph_processor.py
  5. +10
    -3
      mindinsight/datavisual/processors/images_processor.py
  6. +6
    -1
      mindinsight/datavisual/processors/scalars_processor.py
  7. +1
    -1
      mindinsight/datavisual/processors/train_task_manager.py
  8. +1
    -1
      mindinsight/datavisual/utils/tools.py
  9. +5
    -1
      mindinsight/utils/constant.py
  10. +9
    -0
      mindinsight/utils/exceptions.py
  11. +8
    -9
      tests/st/func/datavisual/image/test_single_image_restful_api.py
  12. +2
    -3
      tests/st/func/datavisual/taskmanager/test_plugins_restful_api.py
  13. +3
    -3
      tests/ut/backend/datavisual/test_task_manager_api.py
  14. +3
    -1
      tests/ut/datavisual/data_transform/test_data_manager.py
  15. +8
    -6
      tests/ut/datavisual/processors/test_graph_processor.py
  16. +18
    -15
      tests/ut/datavisual/processors/test_images_processor.py
  17. +7
    -6
      tests/ut/datavisual/processors/test_scalars_processor.py
  18. +5
    -6
      tests/ut/datavisual/processors/test_train_task_manager.py

+ 48
- 0
mindinsight/datavisual/common/exceptions.py View File

@@ -90,3 +90,51 @@ class MaxCountExceededError(MindInsightException):
super(MaxCountExceededError, self).__init__(DataVisualErrors.MAX_COUNT_EXCEEDED_ERROR, super(MaxCountExceededError, self).__init__(DataVisualErrors.MAX_COUNT_EXCEEDED_ERROR,
error_msg, error_msg,
http_code=400) http_code=400)


class TrainJobNotExistError(MindInsightException):
"""Can not find the given train job."""
def __init__(self, error_detail=None):
if error_detail is None:
error_msg = f"Train job is not exist."
else:
error_msg = f"Train job is not exist. Detail: {error_detail}"
super(TrainJobNotExistError, self).__init__(DataVisualErrors.TRAIN_JOB_NOT_EXIST,
error_msg,
http_code=400)


class PluginNotAvailableError(MindInsightException):
"""The given plugin is not available."""
def __init__(self, error_detail):
error_msg = f"Plugin is not available. Detail: {error_detail}"
super(PluginNotAvailableError, self).__init__(DataVisualErrors.PLUGIN_NOT_AVAILABLE,
error_msg,
http_code=400)


class GraphNotExistError(MindInsightException):
"""Can not found the given graph."""
def __init__(self):
error_msg = 'Graph is not exist.'
super(GraphNotExistError, self).__init__(DataVisualErrors.GRAPH_NOT_EXIST,
error_msg,
http_code=400)


class ImageNotExistError(MindInsightException):
"""Unable to get a image based on a given condition."""
def __init__(self, error_detail):
error_msg = f'Image is not exist. Detail: {error_detail}'
super(ImageNotExistError, self).__init__(DataVisualErrors.IMAGE_NOT_EXIST,
error_msg,
http_code=400)


class ScalarNotExistError(MindInsightException):
"""Unable to get scalar values based on a given condition."""
def __init__(self, error_detail):
error_msg = f'Scalar value is not exist. Detail: {error_detail}'
super(ScalarNotExistError, self).__init__(DataVisualErrors.SCALAR_NOT_EXIST,
error_msg,
http_code=400)

+ 3
- 3
mindinsight/datavisual/common/validation.py View File

@@ -16,6 +16,7 @@
from numbers import Number from numbers import Number
from mindinsight.utils.exceptions import ParamValueError from mindinsight.utils.exceptions import ParamValueError
from mindinsight.utils.exceptions import ParamMissError from mindinsight.utils.exceptions import ParamMissError
from mindinsight.datavisual.common.exceptions import PluginNotAvailableError
from mindinsight.datavisual.common.enums import PluginNameEnum from mindinsight.datavisual.common.enums import PluginNameEnum
from mindinsight.datavisual.utils.tools import to_int from mindinsight.datavisual.utils.tools import to_int


@@ -94,9 +95,8 @@ class Validation:
plugin_name (str): The plugin name. plugin_name (str): The plugin name.


Raises: Raises:
ParamValueError: When plugin name is not valid.
PluginNotAvailableError: When plugin name is not valid.
""" """
plugin_name_list = PluginNameEnum.list_members() plugin_name_list = PluginNameEnum.list_members()
if plugin_name not in plugin_name_list: if plugin_name not in plugin_name_list:
raise ParamValueError("'plugin_name' only can be one of {}"
"".format(plugin_name_list))
raise PluginNotAvailableError(f"'plugin_name' only can be one of {plugin_name_list}")

+ 5
- 5
mindinsight/datavisual/data_transform/data_manager.py View File

@@ -30,6 +30,7 @@ from mindinsight.datavisual.common import exceptions
from mindinsight.datavisual.common.log import logger from mindinsight.datavisual.common.log import logger
from mindinsight.datavisual.common.enums import DataManagerStatus from mindinsight.datavisual.common.enums import DataManagerStatus
from mindinsight.datavisual.common.enums import PluginNameEnum from mindinsight.datavisual.common.enums import PluginNameEnum
from mindinsight.datavisual.common.exceptions import TrainJobNotExistError
from mindinsight.datavisual.data_transform.loader_generators.loader_generator import MAX_DATA_LOADER_SIZE from mindinsight.datavisual.data_transform.loader_generators.loader_generator import MAX_DATA_LOADER_SIZE
from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator
from mindinsight.utils.exceptions import MindInsightException from mindinsight.utils.exceptions import MindInsightException
@@ -343,7 +344,7 @@ class DataManager:
self._check_status_valid() self._check_status_valid()
loader_pool = self._get_snapshot_loader_pool() loader_pool = self._get_snapshot_loader_pool()
if not self._is_loader_in_loader_pool(train_id, loader_pool): if not self._is_loader_in_loader_pool(train_id, loader_pool):
raise ParamValueError("Can not find any data in loader pool about the train job.")
raise TrainJobNotExistError("Can not find the given train job in cache.")


data_loader = loader_pool[train_id].data_loader data_loader = loader_pool[train_id].data_loader
events_data = data_loader.get_events_data() events_data = data_loader.get_events_data()
@@ -365,7 +366,7 @@ class DataManager:
loader_pool (dict[str, LoaderStruct]): Refer to self._loader_pool. loader_pool (dict[str, LoaderStruct]): Refer to self._loader_pool.


Raises: Raises:
ParamValueError: Can not found train job in data manager.
TrainJobNotExistError: Can not find train job in data manager.
""" """
is_exist = False is_exist = False
if train_id in loader_pool: if train_id in loader_pool:
@@ -375,7 +376,7 @@ class DataManager:
is_exist = True is_exist = True
break break
if not is_exist: if not is_exist:
raise ParamValueError("Can not find the train job in data manager.")
raise TrainJobNotExistError("Can not find the train job in data manager.")


def _is_loader_in_loader_pool(self, train_id, loader_pool): def _is_loader_in_loader_pool(self, train_id, loader_pool):
""" """
@@ -406,8 +407,7 @@ class DataManager:
"""Check if the status is valid to load data.""" """Check if the status is valid to load data."""


if self.status == DataManagerStatus.INIT.value: if self.status == DataManagerStatus.INIT.value:
raise exceptions.SummaryLogIsLoading("Data is being loaded, "
"current status: %s." % self._status)
raise exceptions.SummaryLogIsLoading("Data is being loaded, current status: %s." % self._status)


def get_single_train_job(self, train_id, manual_update=False): def get_single_train_job(self, train_id, manual_update=False):
""" """


+ 2
- 2
mindinsight/datavisual/processors/graph_processor.py View File

@@ -40,9 +40,9 @@ class GraphProcessor(BaseProcessor):


train_job = self._data_manager.get_train_job_by_plugin(train_id, PluginNameEnum.GRAPH.value) train_job = self._data_manager.get_train_job_by_plugin(train_id, PluginNameEnum.GRAPH.value)
if train_job is None: if train_job is None:
raise exceptions.SummaryLogPathInvalid()
raise exceptions.TrainJobNotExistError()
if not train_job['tags']: if not train_job['tags']:
raise ParamValueError("Can not find any graph data in the train job.")
raise exceptions.GraphNotExistError()


if tag is None: if tag is None:
tag = train_job['tags'][0] tag = train_job['tags'][0]


+ 10
- 3
mindinsight/datavisual/processors/images_processor.py View File

@@ -16,6 +16,7 @@
from mindinsight.datavisual.utils.tools import to_int from mindinsight.datavisual.utils.tools import to_int
from mindinsight.utils.exceptions import ParamValueError from mindinsight.utils.exceptions import ParamValueError
from mindinsight.datavisual.common.validation import Validation from mindinsight.datavisual.common.validation import Validation
from mindinsight.datavisual.common.exceptions import ImageNotExistError
from mindinsight.datavisual.processors.base_processor import BaseProcessor from mindinsight.datavisual.processors.base_processor import BaseProcessor




@@ -46,7 +47,10 @@ class ImageProcessor(BaseProcessor):
""" """
Validation.check_param_empty(train_id=train_id, tag=tag) Validation.check_param_empty(train_id=train_id, tag=tag)
result = [] result = []
tensors = self._data_manager.list_tensors(train_id, tag)
try:
tensors = self._data_manager.list_tensors(train_id, tag)
except ParamValueError as ex:
raise ImageNotExistError(ex.message)


for tensor in tensors: for tensor in tensors:
# no tensor_proto in TensorEvent # no tensor_proto in TensorEvent
@@ -75,7 +79,10 @@ class ImageProcessor(BaseProcessor):
Validation.check_param_empty(train_id=train_id, tag=tag, step=step) Validation.check_param_empty(train_id=train_id, tag=tag, step=step)
step = to_int(step, "step") step = to_int(step, "step")


tensors = self._data_manager.list_tensors(train_id, tag)
try:
tensors = self._data_manager.list_tensors(train_id, tag)
except ParamValueError as ex:
raise ImageNotExistError(ex.message)


image = None image = None
for tensor in tensors: for tensor in tensors:
@@ -87,6 +94,6 @@ class ImageProcessor(BaseProcessor):
break break


if image is None: if image is None:
raise ParamValueError("Can not find the step with given train job id and tag.")
raise ImageNotExistError("Can not find the step with given train job id and tag.")


return image return image

+ 6
- 1
mindinsight/datavisual/processors/scalars_processor.py View File

@@ -13,6 +13,8 @@
# limitations under the License. # limitations under the License.
# ============================================================================ # ============================================================================
"""Scalar Processor APIs.""" """Scalar Processor APIs."""
from mindinsight.utils.exceptions import ParamValueError
from mindinsight.datavisual.common.exceptions import ScalarNotExistError
from mindinsight.datavisual.common.validation import Validation from mindinsight.datavisual.common.validation import Validation
from mindinsight.datavisual.processors.base_processor import BaseProcessor from mindinsight.datavisual.processors.base_processor import BaseProcessor


@@ -33,7 +35,10 @@ class ScalarsProcessor(BaseProcessor):
""" """
Validation.check_param_empty(train_id=train_id, tag=tag) Validation.check_param_empty(train_id=train_id, tag=tag)
job_response = [] job_response = []
tensors = self._data_manager.list_tensors(train_id, tag)
try:
tensors = self._data_manager.list_tensors(train_id, tag)
except ParamValueError as ex:
raise ScalarNotExistError(ex.message)


for tensor in tensors: for tensor in tensors:
job_response.append({ job_response.append({


+ 1
- 1
mindinsight/datavisual/processors/train_task_manager.py View File

@@ -38,7 +38,7 @@ class TrainTaskManager(BaseProcessor):
Validation.check_plugin_name(plugin_name=plugin_name) Validation.check_plugin_name(plugin_name=plugin_name)
train_job = self._data_manager.get_train_job_by_plugin(train_id=train_id, plugin_name=plugin_name) train_job = self._data_manager.get_train_job_by_plugin(train_id=train_id, plugin_name=plugin_name)
if train_job is None: if train_job is None:
raise exceptions.SummaryLogPathInvalid()
raise exceptions.TrainJobNotExistError()
return dict(train_jobs=[train_job]) return dict(train_jobs=[train_job])


def get_plugins(self, train_id, manual_update=True): def get_plugins(self, train_id, manual_update=True):


+ 1
- 1
mindinsight/datavisual/utils/tools.py View File

@@ -133,7 +133,7 @@ def get_train_id(request):
try: try:
train_id = unquote(train_id, errors='strict') train_id = unquote(train_id, errors='strict')
except UnicodeDecodeError: except UnicodeDecodeError:
raise exceptions.ParamValueError('Unquote error with strict mode')
raise exceptions.UrlDecodeError('Unquote train id error with strict mode')
return train_id return train_id






+ 5
- 1
mindinsight/utils/constant.py View File

@@ -40,6 +40,7 @@ class GeneralErrors(Enum):
PATH_NOT_EXISTS_ERROR = 4 PATH_NOT_EXISTS_ERROR = 4
FILE_SYSTEM_PERMISSION_ERROR = 8 FILE_SYSTEM_PERMISSION_ERROR = 8
PORT_NOT_AVAILABLE_ERROR = 9 PORT_NOT_AVAILABLE_ERROR = 9
URL_DECODE_ERROR = 10




class LineageMgrErrors(Enum): class LineageMgrErrors(Enum):
@@ -55,6 +56,9 @@ class DataVisualErrors(Enum):
TRAIN_JOB_NOT_EXIST = 5 TRAIN_JOB_NOT_EXIST = 5
SUMMARY_LOG_PATH_INVALID = 6 SUMMARY_LOG_PATH_INVALID = 6
SUMMARY_LOG_IS_LOADING = 7 SUMMARY_LOG_IS_LOADING = 7
SUMMARY_LOG_LOAD_FAILED = 8
NODE_NOT_IN_GRAPH_ERROR = 9 NODE_NOT_IN_GRAPH_ERROR = 9
PATH_NOT_DIRECTORY_ERROR = 10 PATH_NOT_DIRECTORY_ERROR = 10
PLUGIN_NOT_AVAILABLE = 11
GRAPH_NOT_EXIST = 12
IMAGE_NOT_EXIST = 13
SCALAR_NOT_EXIST = 14

+ 9
- 0
mindinsight/utils/exceptions.py View File

@@ -176,3 +176,12 @@ class UnknownError(MindInsightException):
GeneralErrors.UNKNOWN_ERROR, GeneralErrors.UNKNOWN_ERROR,
error_msg, error_msg,
http_code=500) http_code=500)


class UrlDecodeError(MindInsightException):
"""Url decoding failed"""
def __init__(self, error_detail):
error_msg = f"Url decode failed. Detail: {error_detail}"
super(UrlDecodeError, self).__init__(GeneralErrors.URL_DECODE_ERROR,
error_msg,
http_code=400)

+ 8
- 9
tests/st/func/datavisual/image/test_single_image_restful_api.py View File

@@ -127,9 +127,8 @@ class TestSingleImage:
assert response.status_code == 400 assert response.status_code == 400


response = response.get_json() response = response.get_json()
assert response['error_code'] == '50540002'
assert response['error_msg'] == "Invalid parameter value. Can not find any data " \
"in loader pool about the train job."
assert response['error_code'] == '50545005'
assert response['error_msg'] == "Train job is not exist. Detail: Can not find the given train job in cache."


@pytest.mark.level1 @pytest.mark.level1
@pytest.mark.env_single @pytest.mark.env_single
@@ -149,9 +148,9 @@ class TestSingleImage:
assert response.status_code == 400 assert response.status_code == 400


response = response.get_json() response = response.get_json()
assert response['error_code'] == '50540002'
assert response['error_msg'] == "Invalid parameter value. Can not find any data " \
"in this train job by given tag."
assert response['error_code'] == '5054500D'
assert response['error_msg'] == "Image is not exist. Detail: Invalid parameter value. " \
"Can not find any data in this train job by given tag."


@pytest.mark.level1 @pytest.mark.level1
@pytest.mark.env_single @pytest.mark.env_single
@@ -170,9 +169,9 @@ class TestSingleImage:
assert response.status_code == 400 assert response.status_code == 400


response = response.get_json() response = response.get_json()
assert response['error_code'] == '50540002'
assert response['error_msg'] == "Invalid parameter value. Can not find the step " \
"with given train job id and tag."
assert response['error_code'] == '5054500D'
assert response['error_msg'] == "Image is not exist. Detail: " \
"Can not find the step with given train job id and tag."


@pytest.mark.level1 @pytest.mark.level1
@pytest.mark.env_single @pytest.mark.env_single


+ 2
- 3
tests/st/func/datavisual/taskmanager/test_plugins_restful_api.py View File

@@ -89,9 +89,8 @@ class TestPlugins:
assert response.status_code == 400 assert response.status_code == 400


response = response.get_json() response = response.get_json()
assert response['error_code'] == '50540002'
assert response['error_msg'] == "Invalid parameter value. Can not find " \
"the train job in data manager."
assert response['error_code'] == '50545005'
assert response['error_msg'] == "Train job is not exist. Detail: Can not find the train job in data manager."


@pytest.mark.level1 @pytest.mark.level1
@pytest.mark.env_single @pytest.mark.env_single


+ 3
- 3
tests/ut/backend/datavisual/test_task_manager_api.py View File

@@ -64,9 +64,9 @@ class TestTrainTask:
assert response.status_code == 400 assert response.status_code == 400


response = response.get_json() response = response.get_json()
assert response['error_code'] == '50540002'
assert response['error_msg'] == "Invalid parameter value. 'plugin_name' " \
"only can be one of {}".format(plugin_name_list)
assert response['error_code'] == '5054500B'
assert response['error_msg'] == f"Plugin is not available. " \
f"Detail: 'plugin_name' only can be one of {plugin_name_list}"


@patch.object(TrainTaskManager, 'get_single_train_task') @patch.object(TrainTaskManager, 'get_single_train_task')
def test_query_single_train_task_with_plugin_name_exists(self, mock_train_task_manager, client): def test_query_single_train_task_with_plugin_name_exists(self, mock_train_task_manager, client):


+ 3
- 1
tests/ut/datavisual/data_transform/test_data_manager.py View File

@@ -28,6 +28,7 @@ from unittest.mock import Mock, patch
import pytest import pytest


from mindinsight.datavisual.common.enums import DataManagerStatus, PluginNameEnum from mindinsight.datavisual.common.enums import DataManagerStatus, PluginNameEnum
from mindinsight.datavisual.common.exceptions import TrainJobNotExistError
from mindinsight.datavisual.data_transform import data_manager, ms_data_loader from mindinsight.datavisual.data_transform import data_manager, ms_data_loader
from mindinsight.datavisual.data_transform.data_loader import DataLoader from mindinsight.datavisual.data_transform.data_loader import DataLoader
from mindinsight.datavisual.data_transform.data_manager import DataManager from mindinsight.datavisual.data_transform.data_manager import DataManager
@@ -185,9 +186,10 @@ class TestDataManager:
d_manager._status = DataManagerStatus.LOADING.value d_manager._status = DataManagerStatus.LOADING.value
tag = 'image' tag = 'image'
train_job_01 = 'train_01' train_job_01 = 'train_01'
with pytest.raises(ParamValueError):
with pytest.raises(TrainJobNotExistError) as ex_info:
d_manager.list_tensors(train_job_01, tag) d_manager.list_tensors(train_job_01, tag)
shutil.rmtree(summary_base_dir) shutil.rmtree(summary_base_dir)
assert ex_info.value.message == 'Train job is not exist. Detail: Can not find the given train job in cache.'


@patch.object(data_manager.DataLoaderGenerator, "generate_loaders") @patch.object(data_manager.DataLoaderGenerator, "generate_loaders")
def test_caching(self, mock_generate_loaders): def test_caching(self, mock_generate_loaders):


+ 8
- 6
tests/ut/datavisual/processors/test_graph_processor.py View File

@@ -26,6 +26,7 @@ import pytest


from mindinsight.datavisual.common import exceptions from mindinsight.datavisual.common import exceptions
from mindinsight.datavisual.common.enums import PluginNameEnum from mindinsight.datavisual.common.enums import PluginNameEnum
from mindinsight.datavisual.common.exceptions import GraphNotExistError
from mindinsight.datavisual.data_transform import data_manager from mindinsight.datavisual.data_transform import data_manager
from mindinsight.datavisual.data_transform.data_manager import DataManager from mindinsight.datavisual.data_transform.data_manager import DataManager
from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator
@@ -102,16 +103,16 @@ class TestGraphProcessor:
def test_get_nodes_with_not_exist_train_id(self): def test_get_nodes_with_not_exist_train_id(self):
"""Test getting nodes with not exist train id.""" """Test getting nodes with not exist train id."""
test_train_id = "not_exist_train_id" test_train_id = "not_exist_train_id"
with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(exceptions.TrainJobNotExistError) as exc_info:
GraphProcessor(test_train_id, self._mock_data_manager) GraphProcessor(test_train_id, self._mock_data_manager)
assert "Can not find the train job in data manager." in exc_info.value.message
assert "Train job is not exist. Detail: Can not find the train job in data manager." == exc_info.value.message


@pytest.mark.usefixtures('load_graph_record') @pytest.mark.usefixtures('load_graph_record')
@patch.object(DataManager, 'get_train_job_by_plugin') @patch.object(DataManager, 'get_train_job_by_plugin')
def test_get_nodes_with_loader_is_none(self, mock_get_train_job_by_plugin): def test_get_nodes_with_loader_is_none(self, mock_get_train_job_by_plugin):
"""Test get nodes with loader is None.""" """Test get nodes with loader is None."""
mock_get_train_job_by_plugin.return_value = None mock_get_train_job_by_plugin.return_value = None
with pytest.raises(exceptions.SummaryLogPathInvalid):
with pytest.raises(exceptions.TrainJobNotExistError):
GraphProcessor(self._train_id, self._mock_data_manager) GraphProcessor(self._train_id, self._mock_data_manager)


assert mock_get_train_job_by_plugin.called assert mock_get_train_job_by_plugin.called
@@ -223,7 +224,8 @@ class TestGraphProcessor:
@pytest.mark.usefixtures('load_no_graph_record') @pytest.mark.usefixtures('load_no_graph_record')
def test_check_graph_status_no_graph(self): def test_check_graph_status_no_graph(self):
"""Test checking graph status no graph.""" """Test checking graph status no graph."""
with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(GraphNotExistError) as exc_info:
GraphProcessor(self._train_id, self._mock_data_manager) GraphProcessor(self._train_id, self._mock_data_manager)
assert exc_info.value.message == "Invalid parameter value. Can not find any graph data " \
"in the train job."

assert exc_info.value.error_code == '5054500C'
assert exc_info.value.message == "Graph is not exist."

+ 18
- 15
tests/ut/datavisual/processors/test_images_processor.py View File

@@ -24,6 +24,8 @@ from unittest.mock import Mock
import pytest import pytest


from mindinsight.datavisual.common.enums import PluginNameEnum from mindinsight.datavisual.common.enums import PluginNameEnum
from mindinsight.datavisual.common.exceptions import TrainJobNotExistError
from mindinsight.datavisual.common.exceptions import ImageNotExistError
from mindinsight.datavisual.data_transform import data_manager from mindinsight.datavisual.data_transform import data_manager
from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator
from mindinsight.datavisual.processors.images_processor import ImageProcessor from mindinsight.datavisual.processors.images_processor import ImageProcessor
@@ -107,11 +109,11 @@ class TestImagesProcessor:
"""Test getting metadata list with not exist id.""" """Test getting metadata list with not exist id."""
test_train_id = 'not_exist_id' test_train_id = 'not_exist_id'
image_processor = ImageProcessor(self._mock_data_manager) image_processor = ImageProcessor(self._mock_data_manager)
with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(TrainJobNotExistError) as exc_info:
image_processor.get_metadata_list(test_train_id, self._tag_name) image_processor.get_metadata_list(test_train_id, self._tag_name)


assert exc_info.value.error_code == '50540002'
assert "Can not find any data in loader pool about the train job." in exc_info.value.message
assert exc_info.value.error_code == '50545005'
assert "Train job is not exist. Detail: Can not find the given train job in cache." == exc_info.value.message


@pytest.mark.usefixtures('load_image_record') @pytest.mark.usefixtures('load_image_record')
def test_get_metadata_list_with_not_exist_tag(self): def test_get_metadata_list_with_not_exist_tag(self):
@@ -120,10 +122,10 @@ class TestImagesProcessor:


image_processor = ImageProcessor(self._mock_data_manager) image_processor = ImageProcessor(self._mock_data_manager)


with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(ImageNotExistError) as exc_info:
image_processor.get_metadata_list(self._train_id, test_tag_name) image_processor.get_metadata_list(self._train_id, test_tag_name)


assert exc_info.value.error_code == '50540002'
assert exc_info.value.error_code == '5054500D'
assert "Can not find any data in this train job by given tag." in exc_info.value.message assert "Can not find any data in this train job by given tag." in exc_info.value.message


@pytest.mark.usefixtures('load_image_record') @pytest.mark.usefixtures('load_image_record')
@@ -144,11 +146,11 @@ class TestImagesProcessor:
test_step = self._steps_list[0] test_step = self._steps_list[0]
image_processor = ImageProcessor(self._mock_data_manager) image_processor = ImageProcessor(self._mock_data_manager)


with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(TrainJobNotExistError) as exc_info:
image_processor.get_single_image(test_train_id, test_tag_name, test_step) image_processor.get_single_image(test_train_id, test_tag_name, test_step)


assert exc_info.value.error_code == '50540002'
assert "Can not find any data in loader pool about the train job." in exc_info.value.message
assert exc_info.value.error_code == '50545005'
assert "Train job is not exist. Detail: Can not find the given train job in cache." == exc_info.value.message


@pytest.mark.usefixtures('load_image_record') @pytest.mark.usefixtures('load_image_record')
def test_get_single_image_with_not_exist_tag(self): def test_get_single_image_with_not_exist_tag(self):
@@ -158,10 +160,10 @@ class TestImagesProcessor:


image_processor = ImageProcessor(self._mock_data_manager) image_processor = ImageProcessor(self._mock_data_manager)


with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(ImageNotExistError) as exc_info:
image_processor.get_single_image(self._train_id, test_tag_name, test_step) image_processor.get_single_image(self._train_id, test_tag_name, test_step)


assert exc_info.value.error_code == '50540002'
assert exc_info.value.error_code == '5054500D'
assert "Can not find any data in this train job by given tag." in exc_info.value.message assert "Can not find any data in this train job by given tag." in exc_info.value.message


@pytest.mark.usefixtures('load_image_record') @pytest.mark.usefixtures('load_image_record')
@@ -172,11 +174,12 @@ class TestImagesProcessor:


image_processor = ImageProcessor(self._mock_data_manager) image_processor = ImageProcessor(self._mock_data_manager)


with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(ImageNotExistError) as exc_info:
image_processor.get_single_image(self._train_id, test_tag_name, test_step) image_processor.get_single_image(self._train_id, test_tag_name, test_step)


assert exc_info.value.error_code == '50540002'
assert "Can not find the step with given train job id and tag." in exc_info.value.message
assert exc_info.value.error_code == '5054500D'
assert "Image is not exist. " \
"Detail: Can not find the step with given train job id and tag." == exc_info.value.message


@pytest.mark.usefixtures('load_image_record') @pytest.mark.usefixtures('load_image_record')
def test_get_single_image_success(self): def test_get_single_image_success(self):
@@ -206,7 +209,7 @@ class TestImagesProcessor:


try: try:
image_processor.get_single_image(self._train_id, test_tag_name, test_step) image_processor.get_single_image(self._train_id, test_tag_name, test_step)
except ParamValueError:
except ImageNotExistError:
cnt += 1 cnt += 1
assert len(self._more_steps_list) - cnt == 10 assert len(self._more_steps_list) - cnt == 10


@@ -233,7 +236,7 @@ class TestImagesProcessor:
try: try:
image_processor.get_single_image(self._train_id, test_tag_name, test_step) image_processor.get_single_image(self._train_id, test_tag_name, test_step)
current_step_list.append(test_step) current_step_list.append(test_step)
except ParamValueError:
except ImageNotExistError:
not_found_step_list.append(test_step) not_found_step_list.append(test_step)


assert current_step_list == [1, 2, 3, 4, 15] assert current_step_list == [1, 2, 3, 4, 15]


+ 7
- 6
tests/ut/datavisual/processors/test_scalars_processor.py View File

@@ -24,11 +24,12 @@ from unittest.mock import Mock
import pytest import pytest


from mindinsight.datavisual.common.enums import PluginNameEnum from mindinsight.datavisual.common.enums import PluginNameEnum
from mindinsight.datavisual.common.exceptions import TrainJobNotExistError
from mindinsight.datavisual.common.exceptions import ScalarNotExistError
from mindinsight.datavisual.data_transform import data_manager from mindinsight.datavisual.data_transform import data_manager
from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator
from mindinsight.datavisual.processors.scalars_processor import ScalarsProcessor from mindinsight.datavisual.processors.scalars_processor import ScalarsProcessor
from mindinsight.datavisual.utils import crc32 from mindinsight.datavisual.utils import crc32
from mindinsight.utils.exceptions import ParamValueError


from ....utils.log_operations import LogOperations from ....utils.log_operations import LogOperations
from ....utils.tools import check_loading_done, delete_files_or_dirs from ....utils.tools import check_loading_done, delete_files_or_dirs
@@ -84,11 +85,11 @@ class TestScalarsProcessor:
"""Get metadata list with not exist id.""" """Get metadata list with not exist id."""
test_train_id = 'not_exist_id' test_train_id = 'not_exist_id'
scalar_processor = ScalarsProcessor(self._mock_data_manager) scalar_processor = ScalarsProcessor(self._mock_data_manager)
with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(TrainJobNotExistError) as exc_info:
scalar_processor.get_metadata_list(test_train_id, self._tag_name) scalar_processor.get_metadata_list(test_train_id, self._tag_name)


assert exc_info.value.error_code == '50540002'
assert "Can not find any data in loader pool about the train job." in exc_info.value.message
assert exc_info.value.error_code == '50545005'
assert "Train job is not exist. Detail: Can not find the given train job in cache." == exc_info.value.message


@pytest.mark.usefixtures('load_scalar_record') @pytest.mark.usefixtures('load_scalar_record')
def test_get_metadata_list_with_not_exist_tag(self): def test_get_metadata_list_with_not_exist_tag(self):
@@ -97,10 +98,10 @@ class TestScalarsProcessor:


scalar_processor = ScalarsProcessor(self._mock_data_manager) scalar_processor = ScalarsProcessor(self._mock_data_manager)


with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(ScalarNotExistError) as exc_info:
scalar_processor.get_metadata_list(self._train_id, test_tag_name) scalar_processor.get_metadata_list(self._train_id, test_tag_name)


assert exc_info.value.error_code == '50540002'
assert exc_info.value.error_code == '5054500E'
assert "Can not find any data in this train job by given tag." in exc_info.value.message assert "Can not find any data in this train job by given tag." in exc_info.value.message


@pytest.mark.usefixtures('load_scalar_record') @pytest.mark.usefixtures('load_scalar_record')


+ 5
- 6
tests/ut/datavisual/processors/test_train_task_manager.py View File

@@ -25,11 +25,11 @@ from unittest.mock import Mock
import pytest import pytest


from mindinsight.datavisual.common.enums import PluginNameEnum from mindinsight.datavisual.common.enums import PluginNameEnum
from mindinsight.datavisual.common.exceptions import TrainJobNotExistError
from mindinsight.datavisual.data_transform import data_manager from mindinsight.datavisual.data_transform import data_manager
from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator from mindinsight.datavisual.data_transform.loader_generators.data_loader_generator import DataLoaderGenerator
from mindinsight.datavisual.processors.train_task_manager import TrainTaskManager from mindinsight.datavisual.processors.train_task_manager import TrainTaskManager
from mindinsight.datavisual.utils import crc32 from mindinsight.datavisual.utils import crc32
from mindinsight.utils.exceptions import ParamValueError


from ....utils.log_operations import LogOperations from ....utils.log_operations import LogOperations
from ....utils.tools import check_loading_done, delete_files_or_dirs from ....utils.tools import check_loading_done, delete_files_or_dirs
@@ -109,12 +109,11 @@ class TestTrainTaskManager:
train_task_manager = TrainTaskManager(self._mock_data_manager) train_task_manager = TrainTaskManager(self._mock_data_manager)
for plugin_name in PluginNameEnum.list_members(): for plugin_name in PluginNameEnum.list_members():
test_train_id = "not_exist_id" test_train_id = "not_exist_id"
with pytest.raises(ParamValueError) as exc_info:
with pytest.raises(TrainJobNotExistError) as exc_info:
_ = train_task_manager.get_single_train_task(plugin_name, test_train_id) _ = train_task_manager.get_single_train_task(plugin_name, test_train_id)
assert exc_info.type == ParamValueError
assert exc_info.value.message == "Invalid parameter value. Can not find " \
"the train job in data manager."
assert exc_info.value.error_code == '50540002'
assert exc_info.value.message == "Train job is not exist. " \
"Detail: Can not find the train job in data manager."
assert exc_info.value.error_code == '50545005'


@pytest.mark.usefixtures('load_data') @pytest.mark.usefixtures('load_data')
def test_get_single_train_task_with_params(self): def test_get_single_train_task_with_params(self):


Loading…
Cancel
Save