this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Improve persist test

garrison d7ebc217 7a930793

+33 -13
+33 -13
test/hobbes_test.exs
··· 393 393 ]) 394 394 Process.sleep(2_000) 395 395 396 - Hobbes.transaction(cluster, fn -> 397 - dbg Hobbes.read_range("", "\xFF"), limit: :infinity 398 - end) 396 + alias Hobbes.Encoding.Keyset 399 397 400 - for _ <- 1..100 do 401 - Hobbes.transaction(cluster, fn -> 402 - i = Enum.random(1..1000) 403 - key = "key_#{String.pad_leading(to_string(i), 3, "0")}" 398 + Enum.map(1..100, fn _ -> 399 + Task.async(fn -> 400 + try do 401 + Hobbes.transaction(cluster, fn -> 402 + i = Enum.random(1..100) 403 + key = "key_#{String.pad_leading(to_string(i), 3, "0")}" 404 404 405 - case Hobbes.read(key) do 406 - nil -> 407 - Hobbes.write(key, to_string(0)) 408 - value when is_binary(value) -> 409 - Hobbes.write(key, to_string(String.to_integer(value) + 1)) 405 + case Hobbes.read(key) do 406 + nil -> 407 + Hobbes.write(key, Keyset.pack([1])) 408 + value when is_binary(value) -> 409 + [v] = Keyset.unpack(value) 410 + Hobbes.write(key, Keyset.pack([v + 1])) 411 + end 412 + end) 413 + :ok 414 + rescue 415 + e in [Hobbes.CommitError] -> 416 + e.error 410 417 end 411 418 end) 412 - end 419 + end) 420 + |> Task.await_many() 421 + |> tap(fn result -> 422 + dbg result 423 + end) 424 + 425 + Hobbes.transaction(cluster, fn -> 426 + Hobbes.read_range("", "\xFF") 427 + |> Enum.map(fn {k, v} -> {k, hd(Keyset.unpack(v))} end) 428 + |> Enum.sort_by(&elem(&1, 1), :desc) 429 + |> tap(fn pairs -> 430 + dbg pairs, limit: :infinity 431 + end) 432 + end) 413 433 end 414 434 end 415 435 end