Ejemplo n.º 1
0
    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")
Ejemplo n.º 2
0
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"
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 7
0
    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