def test_download_artifact_passing_path(self): filepath = os.path.join(self.archive_run_path, "1") assert os.path.exists(filepath) is False response = self.client.get(self.base_url + "?path=1") assert response.status_code == 200 assert os.path.exists(filepath) is True assert response.headers["Content-Type"] == "" assert response.headers["X-Accel-Redirect"] == os.path.join( self.archive_run_path, "1" ) assert response.headers[ "Content-Disposition" ] == 'attachment; filename="{}"'.format("1") # Nested dirs nested_path = os.path.join(self.run_path, "foo") create_path(nested_path) create_tmp_files(nested_path) filepath = os.path.join(self.archive_run_path, "foo", "1") assert os.path.exists(filepath) is False response = self.client.get(self.base_url + "?path=foo/1") assert response.status_code == 200 assert os.path.exists(filepath) is True assert response.headers["Content-Type"] == "" assert response.headers["X-Accel-Redirect"] == os.path.join( self.archive_run_path, "foo/1" ) assert response.headers[ "Content-Disposition" ] == 'attachment; filename="{}"'.format("1")
async def test_download_file(): store_root = set_store() path = os.path.join(store_root, "foo") check_or_create_path(path, is_dir=True) create_tmp_files(path) await download_file(subpath="foo/0", check_cache=False) path_to = os.path.join(settings.AGENT_CONFIG.artifacts_root, "foo/0") assert os.path.exists(path_to)
def setUp(self): super().setUp() self.store_root = set_store() self.run_path = os.path.join(self.store_root, "uuid") # Create run artifacts path and some files create_path(self.run_path) create_tmp_files(self.run_path) self.client = get_streams_client() self.base_url = STREAMS_URL + "/namespace/owner/project/runs/uuid/artifacts"
async def test_delete_file(): store_root = set_store() path = os.path.join(store_root, "foo") check_or_create_path(path, is_dir=True) create_tmp_files(path) filepath = "{}/0".format(path) assert os.path.exists(path) is True assert os.path.exists(filepath) is True await delete_file(subpath="foo/0") assert os.path.exists(path) is True assert os.path.exists(filepath) is False
async def test_download_dir_archive(): store_root = set_store() path = os.path.join(store_root, "foo") check_or_create_path(path, is_dir=True) create_tmp_files(path) await download_dir(subpath="foo", to_tar=True) path_to = os.path.join(settings.AGENT_CONFIG.artifacts_root, "foo") assert os.path.exists(path_to) assert os.path.exists(path_to + "/0") assert os.path.exists(path_to + "/1") tar_path = os.path.join(settings.CLIENT_CONFIG.archive_root, "foo.tar.gz") assert os.path.exists(tar_path)
def test_delete_artifacts(self): # Created nested path nested_path = os.path.join(self.run_path, "foo") create_path(nested_path) create_tmp_files(nested_path) subpath = os.path.join(self.run_path, "foo") assert os.path.exists(self.run_path) is True assert os.path.exists(subpath) is True response = self.client.delete(self.base_url + "?path=foo") assert response.status_code == 204 assert os.path.exists(self.run_path) is True assert os.path.exists(subpath) is False response = self.client.delete(self.base_url) assert response.status_code == 204 assert os.path.exists(self.run_path) is False
def test_get_artifacts_tree(self): response = self.client.get(self.base_url) assert response.status_code == 200 assert response.json() == { "dirs": [], "files": { "0": 0, "1": 0, "2": 0, "3": 0 }, } # add nested nested_path = os.path.join(self.run_path, "foo") create_path(nested_path) create_tmp_files(nested_path) response = self.client.get(self.base_url) assert response.status_code == 200 assert response.json() == { "dirs": ["foo"], "files": { "0": 0, "1": 0, "2": 0, "3": 0 }, } response = self.client.get(self.base_url + "?path=foo") assert response.status_code == 200 assert response.json() == { "dirs": [], "files": { "0": 0, "1": 0, "2": 0, "3": 0 }, } response = self.client.get(self.base_url + "?path=foo/1") assert response.status_code == 200 assert response.json() == {"dirs": [], "files": {}}
def test_delete_artifact_passing_path(self): filepath = os.path.join(self.run_path, "1") assert os.path.exists(filepath) is True response = self.client.delete(self.base_url + "?path=1") assert response.status_code == 204 assert os.path.exists(filepath) is False # Nested dirs nested_path = os.path.join(self.run_path, "foo") create_path(nested_path) create_tmp_files(nested_path) filepath = os.path.join(self.run_path, "foo", "1") assert os.path.exists(filepath) is True response = self.client.delete(self.base_url + "?path=foo/1") assert response.status_code == 204 assert os.path.exists(filepath) is False # Deleting same file response = self.client.delete(self.base_url + "?path=foo/1") assert response.status_code == 400
def test_stream_artifact_passing_path_with_force(self): # Nested dirs nested_path = os.path.join(self.run_path, "foo") create_path(nested_path) create_tmp_files(nested_path) filepath = os.path.join(self.archive_run_path, "foo", "1") assert os.path.exists(filepath) is False response = self.client.get(self.base_url + "?stream=true&path=foo/1") assert response.status_code == 200 assert os.path.exists(filepath) is True assert response.headers["Content-Type"] == "text/plain; charset=utf-8" assert response.headers["content-length"] == "0" assert response.headers["last-modified"] is not None assert response.headers["etag"] is not None # The file is cached but we force check shutil.rmtree(self.run_path) assert os.path.exists(filepath) is True response = self.client.get(self.base_url + "?stream=true&path=foo/1&force=true") assert response.status_code == 404