chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
import pyarrow
|
||||
import pytest
|
||||
|
||||
import ray
|
||||
from ray.tests.conftest import * # noqa
|
||||
|
||||
|
||||
@pytest.mark.parametrize("pandas", [False, True])
|
||||
def test_basic(ray_start_regular_shared, pandas):
|
||||
ds = ray.data.range(100, override_num_blocks=10)
|
||||
ds = ds.add_column("key", lambda b: b["id"] * 2)
|
||||
ds = ds.add_column("embedding", lambda b: b["id"] ** 2)
|
||||
if not pandas:
|
||||
ds = ds.map_batches(
|
||||
lambda df: pyarrow.Table.from_pandas(df), batch_format="pandas"
|
||||
)
|
||||
|
||||
rad = ds.to_random_access_dataset("key", num_workers=1)
|
||||
|
||||
def expected(i):
|
||||
return {"id": i, "key": i * 2, "embedding": i**2}
|
||||
|
||||
# Test get.
|
||||
assert ray.get(rad.get_async(-1)) is None
|
||||
assert ray.get(rad.get_async(200)) is None
|
||||
for i in range(100):
|
||||
assert ray.get(rad.get_async(i * 2 + 1)) is None
|
||||
assert ray.get(rad.get_async(i * 2)) == expected(i)
|
||||
|
||||
# Test multiget.
|
||||
results = rad.multiget([-1] + list(range(0, 20, 2)) + list(range(1, 21, 2)) + [200])
|
||||
assert results == [None] + [expected(i) for i in range(10)] + [None] * 10 + [None]
|
||||
|
||||
|
||||
def test_empty_blocks(ray_start_regular_shared):
|
||||
ds = ray.data.range(10).repartition(20)
|
||||
assert ds._logical_plan.initial_num_blocks() == 20
|
||||
rad = ds.to_random_access_dataset("id")
|
||||
for i in range(10):
|
||||
assert ray.get(rad.get_async(i)) == {"id": i}
|
||||
|
||||
|
||||
def test_errors(ray_start_regular_shared):
|
||||
ds = ray.data.range(10)
|
||||
with pytest.raises(ValueError):
|
||||
ds.to_random_access_dataset("invalid")
|
||||
|
||||
|
||||
def test_stats(ray_start_regular_shared):
|
||||
ds = ray.data.range(100, override_num_blocks=10)
|
||||
rad = ds.to_random_access_dataset("id", num_workers=1)
|
||||
stats = rad.stats()
|
||||
assert "Accesses per worker: 0 min, 0 max, 0 mean" in stats, stats
|
||||
ray.get(rad.get_async(0))
|
||||
stats = rad.stats()
|
||||
assert "Accesses per worker: 1 min, 1 max, 1 mean" in stats, stats
|
||||
rad.multiget([1, 2, 3])
|
||||
stats = rad.stats()
|
||||
assert "Accesses per worker: 2 min, 2 max, 2 mean" in stats, stats
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
sys.exit(pytest.main(["-v", __file__]))
|
||||
Reference in New Issue
Block a user