def test_single_image(self, client): """Test getting single image.""" plugin_name = PluginNameEnum.IMAGE.value # Get train id by restful api `train-jobs`. response = client.get(get_url(TRAIN_JOB_URL, dict())) train_jobs = response.get_json() train_id = train_jobs.get('train_jobs')[0].get('train_id') # Get tag by restful api `plugins`. params = dict(train_id=train_id, plugin=plugin_name) response = client.get(get_url(PLUGIN_URL, params)) plugins = response.get_json().get('plugins') test_image_tag = plugins.get(plugin_name)[0] # Get step by restful api `metadata`. params = dict(train_id=train_id, tag=test_image_tag) response = client.get(get_url(METADATA_URL, params)) metadata = response.get_json().get("metadatas") test_step = metadata[0].get('step') # Query single image. expected_image_tensor = gbl.get_single_image(train_id, test_image_tag, test_step) params = dict(train_id=train_id, tag=test_image_tag, step=test_step) url = get_url(SINGLE_IMAGE_URL, params) response = client.get(url) recv_image_tensor = get_image_tensor_from_bytes(response.data) assert expected_image_tensor.any() == recv_image_tensor.any()
def test_query_train_jobs_with_exceeded_limit(self, client): """Test query train jobs with exceeded limit.""" params = dict(offset=0, limit=1000) url = get_url(BASE_URL, params) response = client.get(url) result = response.get_json() assert result.get('error_code') == '50540002'
def test_query_train_jobs_without_offset(self, client): """Test query train jobs without offset.""" params = dict(limit=10) url = get_url(BASE_URL, params) response = client.get(url) result = response.get_json() assert result.get('total') == SUMMARY_DIR_NUM assert len(result.get('train_jobs')) == min(10, SUMMARY_DIR_NUM)
def test_query_single_node_success(self, client, node_name, result_file): """Query single node.""" train_id = gbl.get_train_ids()[0] params = dict(train_id=train_id, name=node_name) url = get_url(BASE_URL, params) response = client.get(url) assert response.status_code == 200 self.compare_result_with_file(response.get_json(), result_file)
def test_metadata_reservoir(self, client): """Test getting image metadata, mainly test reservoir.""" plugin_name = PluginNameEnum.IMAGE.value train_id = RESERVOIR_TRAIN_ID tag_name = gbl.get_tags(train_id, plugin_name)[0] params = dict(train_id=train_id, tag=tag_name) url = get_url(BASE_URL, params) response = client.get(url) metadata = response.get_json().get("metadatas") assert len(metadata) == settings.MAX_IMAGE_STEP_SIZE_PER_TAG
def test_plugins_with_train_id_not_in_cache(self, client): """Test getting plugins with train id that not in loader pool.""" train_id = "./summary0" params = dict(train_id=train_id) url = get_url(BASE_URL, params) response = client.get(url) plugins = response.get_json().get('plugins') for plugin_name in PluginNameEnum.list_members(): # Empty list. assert not plugins.get(plugin_name)
def test_search_nodes_success(self, client, search_content, offset, limit, result_file): """Search node with parameters: offset is 0, limit is 1000.""" train_id = gbl.get_train_ids()[0] params = dict(train_id=train_id, search=search_content, offset=offset, limit=limit) url = get_url(BASE_URL, params) response = client.get(url) assert response.status_code == 200 self.compare_result_with_file(response.get_json(), result_file)
def test_single_image_no_tag(self, client): """Test getting single image without tag.""" params = dict(train_id="./summary0", step=1) url = get_url(BASE_URL, 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_plugins_with_special_train_id(self, client, train_id): """Test passing train_id with special character, null_byte, invalid id, and wrong type.""" params = dict(train_id=train_id) url = get_url(BASE_URL, 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. Can not find " \ "the train job in data manager."
def test_single_image_with_special_step(self, client, step): """Test getting single image with special step.""" params = dict(train_id="./summary0", tag="tag_name_0/image", step=step) url = get_url(BASE_URL, 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_plugins_no_train_id(self, client): """Test getting plugins without train_id.""" params = dict() url = get_url(BASE_URL, 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."
def test_single_image_with_special_train_id(self, client, train_id): """Test passing train_id with special character, invalid value, and wrong type.""" params = dict(train_id=train_id, tag="tag_name_0/image", step=1) url = get_url(BASE_URL, 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. Can not find any data " \ "in loader pool about the train job."
def test_single_image_with_special_tag(self, client, tag): """Test passing tag with special character, invalid value, and wrong type.""" train_id = gbl.get_train_ids()[0] params = dict(train_id=train_id, tag=tag, step=1) url = get_url(BASE_URL, 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. Can not find any data " \ "in this train job by given tag."
def test_single_image_with_invalid_step(self, client): """Test getting single image with invalid step.""" train_id = gbl.get_train_ids()[0] params = dict(train_id=train_id, tag="tag_name_0/image", step=1000) url = get_url(BASE_URL, 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. Can not find the step " \ "with given train job id and tag."
def test_plugins_with_special_manual_update(self, client, manual_update): """Test passing manual_update with special character, wrong value, and wrong type.""" train_id = gbl.get_train_ids()[0] params = dict(train_id=train_id, manual_update=manual_update) url = get_url(BASE_URL, 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_metadata_multiple(self, client): """Test getting image metadata, mainly test a summary dir with multiple logs.""" plugin_name = PluginNameEnum.IMAGE.value train_id = MULTIPLE_TRAIN_ID tag_name = gbl.get_tags(train_id, plugin_name)[0] expected_metadata = gbl.get_metadata(train_id, tag_name) params = dict(train_id=train_id, tag=tag_name) url = get_url(BASE_URL, params) response = client.get(url) metadata = response.get_json().get("metadatas") assert metadata == expected_metadata
def test_metadata(self, client): """Test getting image metadata.""" plugin_name = PluginNameEnum.IMAGE.value train_id = gbl.get_train_ids()[0] tag_name = gbl.get_tags(train_id, plugin_name)[0] expected_metadata = gbl.get_metadata(train_id, tag_name) params = dict(train_id=train_id, tag=tag_name) url = get_url(BASE_URL, params) response = client.get(url) metadata = response.get_json().get("metadatas") assert metadata == expected_metadata
def test_single_image(self, client): """Test getting single image.""" step = 1 plugin_name = PluginNameEnum.IMAGE.value train_id = gbl.get_train_ids()[0] tag_name = gbl.get_tags(train_id, plugin_name)[0] expected_image_tensor = gbl.get_single_image(train_id, tag_name, step) params = dict(train_id=train_id, tag=tag_name, step=step) url = get_url(BASE_URL, params) response = client.get(url) recv_image_tensor = get_image_tensor_from_bytes(response.data) assert expected_image_tensor.any() == recv_image_tensor.any()
def test_query_single_train_task(self, client): """"Test query single train task.""" for train_id in gbl.summaries_metadata: expected = gbl.summaries_metadata.get(train_id).get("plugins") for plugin_name in PluginNameEnum.list_members(): params = dict(train_id=train_id, plugin_name=plugin_name) url = get_url(BASE_URL, params) response = client.get(url) result = response.get_json() tags = result["train_jobs"][0]["tags"] if plugin_name == PluginNameEnum.GRAPH.value: assert len(tags) == len(expected[plugin_name]) else: assert sorted(tags) == sorted(expected[plugin_name])
def test_image_metadata(self, client): """Test getting image metadata.""" plugin_name = PluginNameEnum.IMAGE.value # Get train id by restful api `train-jobs`. response = client.get(get_url(TRAIN_JOB_URL, dict())) train_jobs = response.get_json() train_id = train_jobs.get('train_jobs')[-1].get('train_id') # Get tag by restful api `plugins`. params = dict(train_id=train_id, plugin=plugin_name) response = client.get(get_url(PLUGIN_URL, params)) plugins = response.get_json().get('plugins') test_image_tag = plugins.get(plugin_name)[0] expected_metadata = gbl.get_metadata(train_id, test_image_tag) # Query image metadata. params = dict(train_id=train_id, tag=test_image_tag) response = client.get(get_url(METADATA_URL, params)) metadata = response.get_json().get("metadatas") assert metadata == expected_metadata
def test_metadata(self, client): """Test getting scalar metadata.""" plugin_name = PluginNameEnum.SCALAR.value train_id = gbl.get_train_ids()[0] tag_name = gbl.get_tags(train_id, plugin_name)[0] expected_metadata = gbl.get_metadata(train_id, tag_name) params = dict(train_id=train_id, tag=tag_name) url = get_url(BASE_URL, params) response = client.get(url) metadata = response.get_json().get("metadatas") for metadata, expected_metadata in zip(metadata, expected_metadata): assert metadata.get("wall_time") == expected_metadata.get("wall_time") assert metadata.get("step") == expected_metadata.get("step") assert metadata.get("value") - expected_metadata.get("value") < 1e-6
def test_plugins(self, client): """Test getting plugins.""" train_id = gbl.get_train_ids()[0] expected_plugins = gbl.summaries_metadata.get(train_id).get("plugins") params = dict(train_id=train_id) url = get_url(BASE_URL, params) response = client.get(url) plugins = response.get_json().get('plugins') for plugin_name in PluginNameEnum.list_members(): if plugin_name == PluginNameEnum.GRAPH.value: assert len(plugins.get(plugin_name)) == len( expected_plugins.get(plugin_name)) else: assert sorted(plugins.get(plugin_name)) == sorted( expected_plugins.get(plugin_name))