示例#1
0
def test_copy_fragments_to_new(runner, uri, temp_rootdir, start_time,
                               end_time):
    """
    Test for command

        tiledb fragments copy [old_array_uri] [new_array_uri] [start_time] [end_time]
    """
    old_uri = uri
    new_uri = os.path.abspath(
        os.path.join(
            temp_rootdir,
            f"test_copy_fragments_to_new_{start_time}_{end_time}",
        ))

    result = runner.invoke(
        root,
        ["fragments", "copy", "-f", old_uri, new_uri, start_time, end_time],
    )
    assert result.exit_code == 0

    fragments = tiledb.array_fragments(old_uri)
    assert len(fragments) == 3
    assert fragments.timestamp_range == ((1, 1), (2, 2), (3, 3))

    fragments = tiledb.array_fragments(new_uri)
    assert len(fragments) == 2
    assert fragments.timestamp_range == ((2, 2), (3, 3))
示例#2
0
def test_delete_fragments_unix(runner, uri, ts):
    """
    Test for command

        tiledb fragments delete [array_uri] [start_time] [end_time]
    """
    fragments = tiledb.array_fragments(uri)
    assert len(fragments) == 3
    assert fragments.timestamp_range == ((1, 1), (2, 2), (3, 3))

    result = runner.invoke(root, ["fragments", "delete", "-f", uri, ts, ts])
    assert result.exit_code == 0

    fragments = tiledb.array_fragments(uri)
    assert len(fragments) == 2
    assert fragments.timestamp_range == ((2, 2), (3, 3))
示例#3
0
def test_fragment_metadata_consolidate_and_vacuum(runner, uri):
    """
    Test for command

        tiledb consolidate fragment-metadata [array_uri]
        tiledb vacuum fragment-metadata [array_uri]
    """
    fragments = tiledb.array_fragments(uri)
    assert fragments.unconsolidated_metadata_num == 2

    result = runner.invoke(root, ["consolidate", "fragment-metadata", uri])
    assert result.exit_code == 0

    fragments = tiledb.array_fragments(uri)
    assert fragments.unconsolidated_metadata_num == 0

    result = runner.invoke(root, ["vacuum", "fragment-metadata", uri])
    assert result.exit_code == 0
示例#4
0
def test_copy_fragments_to_existing(runner, uri, temp_rootdir, start_time,
                                    end_time):
    """
    Test for command

        tiledb fragments copy [old_array_uri] [new_array_uri] [start_time] [end_time]
    """
    old_uri = uri
    new_uri = os.path.abspath(
        os.path.join(
            temp_rootdir,
            f"test_copy_fragments_to_existing_{start_time}_{end_time}",
        ))

    rows_dim = tiledb.Dim(domain=(1, 25), dtype=np.int64)
    cols_dim = tiledb.Dim(domain=(1, 12), dtype=np.int64)
    dom = tiledb.Domain(rows_dim, cols_dim)
    att1 = tiledb.Attr(name="a", dtype=np.float64)
    att2 = tiledb.Attr(name="b", dtype=np.float64)
    schema = tiledb.ArraySchema(domain=dom, attrs=(att1, att2))
    tiledb.Array.create(new_uri, schema)

    data = np.reshape(np.arange(300), (25, 12))
    for ts in range(4, 6):
        with tiledb.open(new_uri, mode="w", timestamp=ts) as A:
            A[:] = {"a": data, "b": data}

    result = runner.invoke(
        root,
        ["fragments", "copy", "-f", old_uri, new_uri, start_time, end_time],
    )
    assert result.exit_code == 0

    fragments = tiledb.array_fragments(old_uri)
    assert len(fragments) == 3
    assert fragments.timestamp_range == ((1, 1), (2, 2), (3, 3))

    fragments = tiledb.array_fragments(new_uri)
    assert len(fragments) == 4
    assert fragments.timestamp_range == ((2, 2), (3, 3), (4, 4), (5, 5))
示例#5
0
    def test(self, runner, temp_rootdir, array_name, pp):
        """
        Test for command

            tiledb dump mbr [array_uri]
        """
        uri = os.path.abspath(os.path.join(temp_rootdir, array_name))

        result = runner.invoke(root, ["dump", "mbrs", uri])
        assert result.exit_code == 0

        fragments = tiledb.array_fragments(uri, include_mbrs=True)
        assert result.stdout.split() == pp.pformat(fragments.mbrs).split()
示例#6
0
def test_fragments_consolidate_and_vacuum(runner, uri):
    """
    Test for command

        tiledb consolidate fragments [array_uri]
        tiledb vacuum fragments [array_uri]
    """
    fragments = tiledb.array_fragments(uri)
    assert len(fragments) == 2

    result = runner.invoke(root, ["consolidate", "fragments", uri])
    assert result.exit_code == 0

    fragments = tiledb.array_fragments(uri)
    assert len(fragments) == 1
    assert len(fragments.to_vacuum) == 2

    result = runner.invoke(root, ["vacuum", "fragments", uri])
    assert result.exit_code == 0

    fragments = tiledb.array_fragments(uri)
    assert len(fragments) == 1
    assert len(fragments.to_vacuum) == 0
示例#7
0
def fragments(uri, index, number):
    """
    Output the fragment information of a TileDB array located at uri.
    """
    pp = pprint.PrettyPrinter()

    fragments = tiledb.array_fragments(uri)

    if number:
        click.echo(len(fragments))
        exit()

    if index is not None:
        fragments = fragments[index]

    click.echo(pp.pformat(fragments))
示例#8
0
def mbrs(uri, index):
    """
    Output the minimum bounding rectangles of a sparse TileDB array located at uri.
    """
    pp = pprint.PrettyPrinter()

    fragments = tiledb.array_fragments(uri, include_mbrs=True)

    if not hasattr(fragments, "mbrs"):
        click.echo(
            "Error: no MBRs found in the given array",
            err=True,
        )

    mbrs = fragments.mbrs

    if index is not None:
        mbrs = mbrs[index]

    click.echo(pp.pformat(mbrs))