Пример #1
0
def test_metadata_write(storage):
    fs = AzureBlobFileSystem(account_name=storage.account_name,
                             connection_string=CONN_STR)
    fs.mkdir("test_metadata_write")
    data = b"0123456789"
    metadata = {"meta": "data"}

    # standard blob type
    with fs.open("test_metadata_write/file.txt", "wb", metadata=metadata) as f:
        f.write(data)
    info = fs.info("test_metadata_write/file.txt")
    assert info["metadata"] == metadata
    metadata_changed_on_write = {"meta": "datum"}
    with fs.open("test_metadata_write/file.txt",
                 "wb",
                 metadata=metadata_changed_on_write) as f:
        f.write(data)
    info = fs.info("test_metadata_write/file.txt")
    assert info["metadata"] == metadata_changed_on_write

    # append blob type
    new_metadata = {"data": "meta"}
    with fs.open("test_metadata_write/append-file.txt",
                 "ab",
                 metadata=metadata) as f:
        f.write(data)

    # try change metadata on block appending
    with fs.open("test_metadata_write/append-file.txt",
                 "ab",
                 metadata=new_metadata) as f:
        f.write(data)
    info = fs.info("test_metadata_write/append-file.txt")

    # azure blob client doesn't seem to support metadata mutation when appending blocks
    # lets be sure this behavior doesn't change as this would imply
    # a potential breaking change
    assert info["metadata"] == metadata

    # getxattr / setxattr
    assert fs.getxattr("test_metadata_write/file.txt", "meta") == "datum"
    fs.setxattrs("test_metadata_write/file.txt", metadata="data2")
    assert fs.getxattr("test_metadata_write/file.txt", "metadata") == "data2"
    assert fs.info("test_metadata_write/file.txt")["metadata"] == {
        "metadata": "data2"
    }

    # empty file and nested directory
    with fs.open("test_metadata_write/a/b/c/nested-file.txt",
                 "wb",
                 metadata=metadata) as f:
        f.write(b"")
    assert fs.getxattr("test_metadata_write/a/b/c/nested-file.txt",
                       "meta") == "data"
    fs.setxattrs("test_metadata_write/a/b/c/nested-file.txt", metadata="data2")
    assert fs.info(
        "test_metadata_write/a/b/c/nested-file.txt")["metadata"] == {
            "metadata": "data2"
        }
    fs.rmdir("test_metadata_write")
Пример #2
0
def test_info(storage):
    fs = AzureBlobFileSystem(account_name=storage.account_name,
                             connection_string=CONN_STR)

    container_info = fs.info("data")
    assert container_info == {"name": "data/", "type": "directory", "size": 0}

    container2_info = fs.info("data/root")
    assert container2_info == {
        "name": "data/root/",
        "type": "directory",
        "size": 0
    }

    dir_info = fs.info("data/root/c")
    assert dir_info == {"name": "data/root/c/", "type": "directory", "size": 0}

    file_info = fs.info("data/root/a/file.txt")
    assert file_info == {
        "name": "data/root/a/file.txt",
        "type": "file",
        "size": 10
    }
Пример #3
0
def test_info(storage):
    fs = AzureBlobFileSystem(
        account_name=storage.account_name, connection_string=CONN_STR
    )

    container_info = fs.info("data")
    assert_blob_equals(
        container_info,
        {
            "name": "data",
            "type": "directory",
            "size": None,
            "deleted": None,
            "last_modified": storage.insert_time,
            "metadata": None,
        },
    )

    container2_info = fs.info("data/root")
    assert_blob_equals(
        container2_info, {"name": "data/root", "type": "directory", "size": None}
    )

    dir_info = fs.info("data/root/c")
    assert_blob_equals(
        dir_info, {"name": "data/root/c", "type": "directory", "size": None}
    )

    file_info = fs.info("data/root/a/file.txt")
    assert_blob_equals(
        file_info,
        {
            "name": "data/root/a/file.txt",
            "size": 10,
            "type": "file",
            "archive_status": None,
            "deleted": None,
            "creation_time": storage.insert_time,
            "last_modified": storage.insert_time,
            "deleted_time": None,
            "last_accessed_on": None,
            "remaining_retention_days": None,
            "tag_count": None,
            "tags": None,
            "metadata": {},
            "content_settings": {
                "content_type": "application/octet-stream",
                "content_encoding": None,
                "content_language": None,
                "content_md5": bytearray(
                    b"x\x1e^$]i\xb5f\x97\x9b\x86\xe2\x8d#\xf2\xc7"
                ),
                "content_disposition": None,
                "cache_control": None,
            },
        },
    )
    file_with_meta_info = fs.info("data/root/d/file_with_metadata.txt")
    assert_blob_equals(
        file_with_meta_info,
        {
            "name": "data/root/d/file_with_metadata.txt",
            "size": 10,
            "type": "file",
            "archive_status": None,
            "deleted": None,
            "creation_time": storage.insert_time,
            "last_modified": storage.insert_time,
            "deleted_time": None,
            "last_accessed_on": None,
            "remaining_retention_days": None,
            "tag_count": None,
            "tags": None,
            "metadata": {"meta": "data"},
            "content_settings": {
                "content_type": "application/octet-stream",
                "content_encoding": None,
                "content_language": None,
                "content_md5": bytearray(
                    b"x\x1e^$]i\xb5f\x97\x9b\x86\xe2\x8d#\xf2\xc7"
                ),
                "content_disposition": None,
                "cache_control": None,
            },
        },
    )