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."
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."
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."
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}'
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)
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}'
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'."
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."
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
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."
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."
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'
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."
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."
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)])
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."
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]."
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)
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
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."
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.'
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.'
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)
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))