|
3 | 3 | import redis.asyncio as redis |
4 | 4 | from redis.exceptions import ModuleError, RedisError |
5 | 5 | from redis.utils import HIREDIS_AVAILABLE |
| 6 | +from tests.conftest import skip_ifmodversion_lt |
6 | 7 |
|
7 | 8 |
|
8 | 9 | def intlist(obj): |
@@ -355,22 +356,31 @@ async def test_tdigest_min_and_max(modclient: redis.Redis): |
355 | 356 |
|
356 | 357 | @pytest.mark.redismod |
357 | 358 | @pytest.mark.experimental |
| 359 | +@skip_ifmodversion_lt("2.4.0", "bf") |
358 | 360 | async def test_tdigest_quantile(modclient: redis.Redis): |
359 | 361 | assert await modclient.tdigest().create("tDigest", 500) |
360 | 362 | # insert data-points into sketch |
361 | 363 | assert await modclient.tdigest().add( |
362 | 364 | "tDigest", list([x * 0.01 for x in range(1, 10000)]), [1.0] * 10000 |
363 | 365 | ) |
364 | 366 | # assert min min/max have same result as quantile 0 and 1 |
365 | | - assert await modclient.tdigest().max( |
366 | | - "tDigest" |
367 | | - ) == await modclient.tdigest().quantile("tDigest", 1.0) |
368 | | - assert await modclient.tdigest().min( |
369 | | - "tDigest" |
370 | | - ) == await modclient.tdigest().quantile("tDigest", 0.0) |
371 | | - |
372 | | - assert 1.0 == round(await modclient.tdigest().quantile("tDigest", 0.01), 2) |
373 | | - assert 99.0 == round(await modclient.tdigest().quantile("tDigest", 0.99), 2) |
| 367 | + assert ( |
| 368 | + await modclient.tdigest().max("tDigest") |
| 369 | + == (await modclient.tdigest().quantile("tDigest", 1.0))[1] |
| 370 | + ) |
| 371 | + assert ( |
| 372 | + await modclient.tdigest().min("tDigest") |
| 373 | + == (await modclient.tdigest().quantile("tDigest", 0.0))[1] |
| 374 | + ) |
| 375 | + |
| 376 | + assert 1.0 == round((await modclient.tdigest().quantile("tDigest", 0.01))[1], 2) |
| 377 | + assert 99.0 == round((await modclient.tdigest().quantile("tDigest", 0.99))[1], 2) |
| 378 | + |
| 379 | + # test multiple quantiles |
| 380 | + assert await modclient.tdigest().create("t-digest", 100) |
| 381 | + assert await modclient.tdigest().add("t-digest", [1, 2, 3, 4, 5], [1.0] * 5) |
| 382 | + res = await modclient.tdigest().quantile("t-digest", 0.5, 0.8) |
| 383 | + assert [0.5, 3.0, 0.8, 5.0] == res |
374 | 384 |
|
375 | 385 |
|
376 | 386 | @pytest.mark.redismod |
|
0 commit comments