Пример #1
0
    def test_graph_node_names_with_param_type(self, mock_graph_processor,
                                              client):
        """Test getting graph node names with param type."""
        mock_init = Mock(return_value=None)
        mock_graph_processor.side_effect = mock_init

        test_train_id = 'aaa'
        params = dict(train_id=test_train_id, offset='a', limit='b')
        url = get_url(TRAIN_ROUTES['graph_nodes_names'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540001'
        assert results[
            'error_msg'] == "Invalid parameter type. 'offset' expect Integer type."

        params = dict(train_id=test_train_id, offset=1, limit='c')
        url = get_url(TRAIN_ROUTES['graph_nodes_names'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540001'
        assert results[
            'error_msg'] == "Invalid parameter type. 'limit' expect Integer type."
Пример #2
0
    def test_image_metadata_with_params_miss(self, client):
        """Test missing params when getting image metadata."""

        params = dict()
        url = get_url(TRAIN_ROUTES['image_metadata'], params)

        response = client.get(url)

        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response[
            'error_msg'] == "Param missing. 'train_id' is required."

        train_id = "aa"

        params = dict(train_id=train_id)
        url = get_url(TRAIN_ROUTES['image_metadata'], params)

        response = client.get(url)

        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response['error_msg'] == "Param missing. 'tag' is required."
Пример #3
0
    def test_single_image_with_step_not_int(self, client):
        """
        Test the `tag` param is not int when getting single image.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/image/single-image').
        request params: train_id.
        request params: tag.
        request params: step.

        Expect:
        response status code: 400.
        response json: {
            'error_code': '50540001',
            'error_message': "Invalid parameter type. 'step' expect Integer type."
        }.
        """
        params = dict(train_id='123', tag='456', step='abc')
        url = get_url(TRAIN_ROUTES['image_single_image'], params)
        response = client.get(url)
        assert response.status_code == 400
        response = response.get_json()
        assert response['error_code'] == '50540001'
        assert response[
            'error_msg'] == "Invalid parameter type. 'step' expect Integer type."
Пример #4
0
    def test_query_single_train_task_with_plugin_name_exists(
            self, mock_train_task_manager, client):
        """
        Parsing unavailable plugin name to get single train task.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/single-job').
        request params: plugin_name.

        Expect:
        response status code: 200.
        response json: plugin_name and train_id.
        """
        def get_single_train_task(plugin_name, train_id):
            return f'{plugin_name}{train_id}'

        mock_train_task_manager.side_effect = get_single_train_task

        plugin_name = PluginNameEnum.IMAGE.value
        train_id = "test_id"

        params = dict(plugin_name=plugin_name, train_id=train_id)
        url = get_url(TRAIN_ROUTES['single_job'], params)

        response = client.get(url)
        assert response.status_code == 200
        results = response.get_json()
        assert results == f'{plugin_name}{train_id}'
Пример #5
0
    def test_query_single_train_task_with_plugin_name_not_exist(
            self, client, plugin_name):
        """
        Parsing unavailable plugin name to single train task.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/single-job').
        request params: plugin_name.

        Expect:
        response status code: 400.
        response json: {
            'error_code': '50540002',
            'error_message': "Invalid parameter value. 'plugin_name' only can
                             be one of ['graph', 'image', 'scalar']"
        }
        """
        plugin_name_list = PluginNameEnum.list_members()

        params = dict(plugin_name=plugin_name, train_id="not_exist")
        url = get_url(TRAIN_ROUTES['single_job'], params)

        response = client.get(url)

        assert response.status_code == 400

        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)
Пример #6
0
    def test_query_plugins_success(self, mock_train_task_manager, client):
        """
        Parsing unavailable run plugin to get train jobs.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/train-plugins').
        request params: plugin_name.
        request params: manual_update.

        Expect:
        response status code: 200.
        response json: plugin_name.
        """
        def get_plugins(train_id, manual_update):
            update_str = "false"
            if manual_update:
                update_str = "true"
            return f'{train_id}{update_str}'

        train_id = "test_id"
        manual_update = "true"
        mock_train_task_manager.side_effect = get_plugins

        params = dict(train_id=train_id, manual_update=manual_update)
        url = get_url(TRAIN_ROUTES['plugins'], params)

        response = client.get(url)
        assert response.status_code == 200
        results = response.get_json()
        assert results == f'{train_id}{manual_update}'
Пример #7
0
    def test_query_plugins_with_manual_update_wrong(self, client):
        """
        Parsing unavailable manual_update to get plugins.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/plugins').
        request params: manual_update.

        Expect:
        response status code: 400.
        response json: {
            'error_code': '50540002',
            'error_message': "Invalid parameter value. The value of manual_update
                must be 'false' or 'true'."
        }
        """
        params = dict(train_id="test_id", manual_update="hhh")
        url = get_url(TRAIN_ROUTES['plugins'], params)

        response = client.get(url)

        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540002'
        assert response['error_msg'] == "Invalid parameter value. The value of manual_update " \
                                        "must be 'false' or 'true'."
Пример #8
0
    def test_query_single_train_task_with_param_miss(self, client):
        """
        Parsing unavailable plugin name to get single train task.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/single-job').
        request params: plugin_name.

        Expect:
        response status code: 400.
        response json: {
            'error_code': '50540003',
            'error_message': "Param missing. 'plugin_name' is required."
        }
        """
        params = dict()
        url = get_url(TRAIN_ROUTES['single_job'], params)

        response = client.get(url)

        assert response.status_code == 400

        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response[
            'error_msg'] == "Param missing. 'plugin_name' is required."
Пример #9
0
    def test_graph_search_single_node_success(self, mock_graph_processor,
                                              mock_graph_processor_1, client):
        """
        Test searching graph single node successfully.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual//').
        request params: plugin_name.

        Expect:
        response status code: 200.
        response json: name.
        """
        def mock_search_single_node(name):
            return name

        mock_graph_processor.side_effect = mock_search_single_node

        mock_init = Mock(return_value=None)
        mock_graph_processor_1.side_effect = mock_init

        test_train_id = "aaa"
        test_name = 'bbb'
        params = dict(train_id=test_train_id, name=test_name)
        url = get_url(TRAIN_ROUTES['graph_single_node'], params)
        response = client.get(url)
        assert response.status_code == 200
        results = response.get_json()
        assert results == test_name
Пример #10
0
    def test_graph_node_names_with_train_id_is_none(self, client):
        """Test getting graph node names with train id is none."""
        params = dict()
        url = get_url(TRAIN_ROUTES['graph_nodes_names'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540003'
        assert results['error_msg'] == "Param missing. 'train_id' is required."
Пример #11
0
    def test_scalar_metadata_with_params_is_none(self, client):
        """Parsing unavailable params to get scalar metadata."""
        params = dict()
        url = get_url(TRAIN_ROUTES['scalar_metadata'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540003'
        assert results['error_msg'] == "Param missing. 'train_id' is required."

        train_id = "aa"
        params = dict(train_id=train_id)
        url = get_url(TRAIN_ROUTES['scalar_metadata'], params)
        response = client.get(url)
        results = response.get_json()

        assert response.status_code == 400
        assert results['error_code'] == '50540003'
        assert results['error_msg'] == "Param missing. 'tag' is required."
Пример #12
0
    def test_single_image_with_params_success(self, mock_processor, client):
        """Test getting single image with params successfully."""
        mock_get_single_image = Mock(return_value=b'123')
        params = dict(train_id='123', tag='123', step=1)
        url = get_url(TRAIN_ROUTES['image_single_image'], params)

        mock_processor.side_effect = mock_get_single_image
        response = client.get(url)

        assert response.status_code == 200
        assert response.data == b'123'
Пример #13
0
    def test_graph_search_single_node_with_params_is_wrong(self, client):
        """Test searching graph single node with params is wrong."""
        test_name = 'aaa'
        params = dict(name=test_name)
        url = get_url(TRAIN_ROUTES['graph_single_node'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540003'
        assert results['error_msg'] == "Param missing. 'train_id' is required."
Пример #14
0
    def test_single_image_with_params_miss(self, client):
        """
        Test missing params when getting single image.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/image/single-image').
        request params: train_id.
        request params: tag.
        request params: step.

        Expect:
        response status code: 400.
        response json: {
            'error_code': '50540003',
            'error_message': "Param missing. 'train_id' is required."
        }.
        """
        params = dict()
        url = get_url(TRAIN_ROUTES['image_single_image'], params)
        response = client.get(url)
        assert response.status_code == 400
        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response[
            'error_msg'] == "Param missing. 'train_id' is required."

        params = dict(train_id='123')
        url = get_url(TRAIN_ROUTES['image_single_image'], params)
        response = client.get(url)
        assert response.status_code == 400
        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response['error_msg'] == "Param missing. 'tag' is required."

        params = dict(train_id='123', tag='456')
        url = get_url(TRAIN_ROUTES['image_single_image'], params)
        response = client.get(url)
        assert response.status_code == 400
        response = response.get_json()
        assert response['error_code'] == '50540003'
        assert response['error_msg'] == "Param missing. 'step' is required."
Пример #15
0
    def test_scalar_metadata_success(self, mock_scalar_processor, client):
        """Parsing available params to get scalar metadata."""
        get_metadata_list = Mock(return_value={'metadatas': [{'value': 1}]})
        mock_scalar_processor.side_effect = get_metadata_list

        test_train_id = "aa"
        test_tag = "bb"
        params = dict(train_id=test_train_id, tag=test_tag)
        url = get_url(TRAIN_ROUTES['scalar_metadata'], params)
        response = client.get(url)
        assert response.status_code == 200
        results = response.get_json()
        assert results == dict(metadatas=[dict(value=1)])
Пример #16
0
    def test_graph_search_single_node_with_params_is_none(
            self, mock_graph_processor, client):
        """Test searching graph single node with node_name is none."""
        mock_init = Mock(return_value=None)

        mock_graph_processor.side_effect = mock_init
        params = dict()
        url = get_url(TRAIN_ROUTES['graph_single_node'], params)
        response = client.get(url)
        results = response.get_json()

        assert response.status_code == 400
        assert results['error_code'] == '50540003'
        assert results['error_msg'] == "Param missing. 'name' is required."
Пример #17
0
    def test_graph_node_names_with_invalid_limit(self, mock_graph_processor,
                                                 client, limit):
        """Test getting graph node names with invalid limit."""
        mock_init = Mock(return_value=None)
        mock_graph_processor.side_effect = mock_init

        test_train_id = 'aaa'
        params = dict(train_id=test_train_id, limit=limit)
        url = get_url(TRAIN_ROUTES['graph_nodes_names'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540002'
        assert results['error_msg'] == "Invalid parameter value. " \
                                       "'limit' should in [1, 1000]."
Пример #18
0
    def test_graph_nodes_with_type_is_invalid(self, mock_graph_processor,
                                              client):
        """Test getting graph nodes with invalid type."""
        mock_init = Mock(return_value=None)
        mock_graph_processor.side_effect = mock_init

        node_type = "invalid_node_type"
        params = dict(train_id='aaa', type=node_type)
        url = get_url(TRAIN_ROUTES['graph_nodes'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540002'
        assert results['error_msg'] == "Invalid parameter value. The node type " \
                                       "is not support, only either %s or %s." \
                                       "" % (NodeTypeEnum.NAME_SCOPE.value,
                                             NodeTypeEnum.POLYMERIC_SCOPE.value)
Пример #19
0
    def test_image_metadata_with_params_success(self, mock_processor, client):
        """
        Parsing available params to get image metadata.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/image/metadata').
        request params: train_id.
        request params: tag.

        Expect:
        response status code: 400.
        response json: {
            'error_code': '50545006',
            'error_message': "Invalid parameter value. 'plugin_name' only can
                             be one of ['graph', 'image', 'scalar']"
        }.
        """
        mock_get_metadata_list = Mock()
        mock_get_metadata_list.return_value = {
            "metadatas": [{
                "height": 224,
                "step": 1,
                "wall_time": 1572058058.1175,
                "width": 448
            }]
        }
        params = dict(train_id='123', tag='123')
        url = get_url(TRAIN_ROUTES['image_metadata'], params)

        mock_processor.side_effect = mock_get_metadata_list
        response = client.get(url)

        assert response.status_code == 200
        response = response.get_json()
        expected_response = {
            "metadatas": [{
                "height": 224,
                "step": 1,
                "wall_time": 1572058058.1175,
                "width": 448
            }]
        }
        assert expected_response == response
Пример #20
0
    def test_graph_node_names_with_invalid_offset(self, mock_graph_processor,
                                                  client):
        """Test getting graph node names with invalid offset."""
        mock_init = Mock(return_value=None)
        mock_graph_processor.side_effect = mock_init

        test_train_id = 'aaa'
        test_offset = -1
        test_limit = 100
        params = dict(train_id=test_train_id,
                      offset=test_offset,
                      limit=test_limit)
        url = get_url(TRAIN_ROUTES['graph_nodes_names'], params)

        response = client.get(url)
        results = response.get_json()
        assert response.status_code == 400
        assert results['error_code'] == '50540002'
        assert results['error_msg'] == "Invalid parameter value. 'offset' should " \
                                       "be greater than or equal to 0."
Пример #21
0
    def test_handle_http_exception_error_method_not_allowed(self, mock_scalar_processor, client):
        """Test handling http exception error method not allowed."""
        scalars_processor.logger = MockLogger
        text = 'Test Message'

        # MethodNotAllowed
        def get_metadata_list(train_ids, tag):
            raise MethodNotAllowed("%s" % text)

        mock_scalar_processor.side_effect = get_metadata_list

        test_train_ids = "aa"
        test_tag = "bb"
        params = dict(train_ids=test_train_ids, tag=test_tag)
        url = get_url(TRAIN_ROUTES['scalar_metadata'], params)
        response = client.get(url)

        assert response.status_code == 405
        response = response.get_json()
        assert response['error_code'] == '50545002'
        assert response['error_msg'] == '405 Method Not Allowed.'
Пример #22
0
    def test_handle_http_exception_error_method_other_errors(self, mock_scalar_processor, client):
        """Test handling http exception error method other errors."""
        scalars_processor.logger = MockLogger
        text = 'Test Message'

        # Other errors
        def get_metadata_list(train_ids, tag):
            raise KeyError("%s" % text)

        mock_scalar_processor.side_effect = get_metadata_list

        test_train_ids = "aa"
        test_tag = "bb"
        params = dict(train_ids=test_train_ids, tag=test_tag)
        url = get_url(TRAIN_ROUTES['scalar_metadata'], params)
        response = client.get(url)

        assert response.status_code == 500
        response = response.get_json()
        assert response['error_code'] == '50540000'
        assert response['error_msg'] == 'System error.'
Пример #23
0
    def test_graph_nodes_success(self, mock_graph_processor,
                                 mock_graph_processor_1, client):
        """Test getting graph nodes successfully."""
        def mock_get_nodes(name, node_type):
            return dict(name=name, node_type=node_type)

        mock_graph_processor.side_effect = mock_get_nodes

        mock_init = Mock(return_value=None)
        mock_graph_processor_1.side_effect = mock_init

        test_train_id = 'aaa'
        test_node_name = 'bbb'
        test_node_type = NodeTypeEnum.NAME_SCOPE.value
        params = dict(train_id=test_train_id,
                      name=test_node_name,
                      type=test_node_type)
        url = get_url(TRAIN_ROUTES['graph_nodes'], params)

        response = client.get(url)
        assert response.status_code == 200
        results = response.get_json()
        assert results == dict(name=test_node_name, node_type=test_node_type)
Пример #24
0
    def test_graph_node_names_success(self, mock_graph_processor,
                                      mock_graph_processor_1, client, offset,
                                      limit):
        """
        Parsing unavailable params to get image metadata.

        Test Params:
        request route: GET('/v1/mindinsight/datavisual/graph/nodes/names').
        request params: plugin_name.

        Expect:
        response status code: 200.
        response json: dict, contains search_content, offset, and limit.
        """
        def mock_search_node_names(search_content, offset, limit):
            return dict(search_content=search_content,
                        offset=int(offset),
                        limit=int(limit))

        mock_graph_processor.side_effect = mock_search_node_names

        mock_init = Mock(return_value=None)
        mock_graph_processor_1.side_effect = mock_init

        test_train_id = "aaa"
        test_search_content = "bbb"
        params = dict(train_id=test_train_id,
                      search=test_search_content,
                      offset=offset,
                      limit=limit)
        url = get_url(TRAIN_ROUTES['graph_nodes_names'], params)
        response = client.get(url)
        assert response.status_code == 200
        results = response.get_json()
        assert results == dict(search_content=test_search_content,
                               offset=int(offset),
                               limit=int(limit))